feat: 新增中间件文档和内部通讯技能
新增中间件相关文档包括 RocketMQ、Nacos、PowerJob 的部署指南和故障分析文档,完善 Keepalived 和 MySQL 的文档内容。新增内部通讯技能模板和示例文件,包括 3P更新、公司通讯、FAQ回答等格式指南。优化服务文档结构,补充 FIX 引擎高可用架构说明。新增中间件综合指南,详细说明高可用部署方案和灾备转换原理。 新增 RocketMQ 5.3.2 集群部署文档,包含 Controller 模式详解和详细配置说明。新增 Nacos 和 PowerJob 部署文档,补充服务依赖和关键配置。更新 MySQL 故障分析文档,优化复制冲突解决流程。新增内部通讯技能模板文件,规范公司内部通讯格式。 docs: 补充服务文档和中间件 TODO 列表 新增 g3fo-exchange-fix-engine-service 服务文档,详细说明服务职责和关键配置。新增中间件 TODO 列表,跟踪待补充的文档内容。更新 Keepalived 部署文档,新增主库抢占前置检查脚本和配置说明。优化中间件文档结构,补充常见问题和性能优化建议。 style: 统一文档格式和代码块样式 统一所有文档的代码块格式和标题层级。优化表格显示样式,增强可读性。规范环境变量和配置项的显示方式。调整文档结构,确保逻辑清晰。修复部分拼写错误和格式问题。 chore: 新增 LICENSE 文件 新增内部通讯技能的 Apache 2.0 LICENSE 文件。补充文档版权信息。更新文件头部的元数据描述。规范文件命名和目录结构。
This commit is contained in:
@@ -138,6 +138,15 @@ vrrp_script check_mysql {
|
||||
rise 2 # 连续 2 次成功判定为恢复
|
||||
}
|
||||
|
||||
# 主库抢占前置检查(仅 Node A 需要)
|
||||
vrrp_script check_preempt {
|
||||
script "/etc/keepalived/check-preempt.sh"
|
||||
interval 3 # 检测间隔:3 秒
|
||||
weight -20 # 检测失败时,优先级扣 20(确保 A 低于 B)
|
||||
fall 3
|
||||
rise 2
|
||||
}
|
||||
|
||||
vrrp_instance VI_1 {
|
||||
state BACKUP # 所有节点统一设为 BACKUP,靠优先级决定 Master
|
||||
interface ${INTERFACE} # 替换为宿主机实际网卡名(如 ens33/br0 等)
|
||||
@@ -167,6 +176,7 @@ vrrp_instance VI_1 {
|
||||
# 绑定检测脚本
|
||||
track_script {
|
||||
check_mysql
|
||||
check_preempt
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -275,6 +285,41 @@ fi
|
||||
chmod +x /data/keepalived/check-mysql.sh
|
||||
```
|
||||
|
||||
### 3.5 主库抢占前置检查脚本(仅 Node A 需要)
|
||||
当主库恢复后,希望仅在“副库端口正常 + 本地复制线程正常”时才允许抢占。若副库端口不通,则仍允许 30 秒后抢占。
|
||||
|
||||
路径:`/data/keepalived/check-preempt.sh`
|
||||
|
||||
如 Keepalived 以 Docker 方式运行,请在 Node A 的容器挂载中增加:
|
||||
`/data/keepalived/check-preempt.sh:/etc/keepalived/check-preempt.sh:ro`
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
# 逻辑说明:
|
||||
# 1. 副库端口可达时,检查本地复制线程(IO/SQL)是否正常
|
||||
# 2. 副库端口不可达时,直接放行抢占(避免无可用 DB)
|
||||
|
||||
PEER_IP=${NODE_B_IP}
|
||||
|
||||
if timeout 2 nc -z "${PEER_IP}" 3306 > /dev/null 2>&1; then
|
||||
STATUS=$(docker exec -i mysql mysql -uroot -pafe123456 -h127.0.0.1 -e "SHOW REPLICA STATUS\G" 2>/dev/null)
|
||||
if echo "$STATUS" | grep -q "Replica_IO_Running: Yes" \
|
||||
&& echo "$STATUS" | grep -q "Replica_SQL_Running: Yes"; then
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
```
|
||||
|
||||
添加执行权限:
|
||||
|
||||
```bash
|
||||
chmod +x /data/keepalived/check-preempt.sh
|
||||
```
|
||||
|
||||
## 4. 启动与验证
|
||||
### 4.1 启动容器
|
||||
三台机器执行相同命令:
|
||||
@@ -322,4 +367,5 @@ ip addr show ${INTERFACE} # 替换为实际网卡名
|
||||
+ 所有节点 `virtual_router_id` 和认证信息必须一致;
|
||||
+ 网卡名需替换为宿主机实际名称;
|
||||
+ 仲裁节点 C 不配置 `virtual_ipaddress`,不挂载 MySQL 检测脚本。
|
||||
+ 若使用 `check_preempt`,`weight` 需确保 A 检测失败时优先级低于 B(例如 A=110,B=100,weight=-20 → A=90)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user