四、高可用部署
1. HA 节点角色
| 角色 | 部署内容 |
|---|---|
| node1 | 全量中间件、全量业务服务、MariaDB、Redis、RabbitMQ、Keepalived、监控组件 |
| node2 | 全量中间件、全量业务服务、MariaDB、Redis、RabbitMQ、Keepalived、监控组件 |
| node3 | 仅 Redis、Redis Sentinel 和 RabbitMQ,作为仲裁节点 |
具体 HA 关系如下:
- MariaDB:node1 与 node2 使用 GTID 双主互从;
- Redis:初始 node1 为主,node2、node3 为从,三节点 Sentinel 自动故障切换;
- RabbitMQ:三节点组成集群;
- Nacos:node1、node2 分别以 standalone 模式运行,不组成 Nacos 集群,不连接数据库;
- VIP:仅 node1、node2 运行 Keepalived,node3 不参与 VIP;
- 业务服务:部署到 node1、node2,node3 不部署;
- 监控:node1、node2 共同组成监控高可用架构,通过 vmagent 双写、双 vmalert 和 Alertmanager 集群保证监控与告警可用性;node3 不运行监控组件。
2. 节点规划示例
| 项目 | 示例值 |
|---|---|
| node1 | 192.168.10.11 |
| node2 | 192.168.10.12 |
| node3 | 192.168.10.13 |
| VIP | 192.168.10.20 |
| SSH 用户 | root |
| SSH 端口 | 22 |
部署前在 node1 验证:
ping -c 2 192.168.10.12
ping -c 2 192.168.10.13
ssh root@192.168.10.12 hostname
ssh root@192.168.10.13 hostname
arping -D -I <业务网卡> 192.168.10.20
3. 交互式 HA 部署
在 node1 执行:
bash /root/cmp/ZStack-CMP-installer-<版本>.bin --ha
安装程序完成基础准备后,会提示按 Enter 打开 vi。编辑 node1、node2、node3、VIP、SSH 密码和 options,保存退出后自动校验 JSON 并开始部署。
vi 常用操作:
i 进入编辑模式
Esc 退出编辑模式
:wq 保存并退出
:q! 放弃修改并退出
HA 部署由同一个安装包一次完成,不需要先执行单节点安装。
4. 无人值守 HA 部署
创建 /root/cmp-ha.json:
{
"type": "cmp_ha_install",
"host": {
"node": [
{
"host": "192.168.10.11",
"user": "root",
"password": "节点SSH密码",
"port": "22"
},
{
"host": "192.168.10.12",
"user": "root",
"password": "节点SSH密码",
"port": "22"
},
{
"host": "192.168.10.13",
"user": "root",
"password": "节点SSH密码",
"port": "22"
}
]
},
"env": [
{
"name": "vip",
"value": "192.168.10.20",
"label": "Virtual IP"
},
{
"name": "node1",
"value": "192.168.10.11",
"label": "node1"
},
{
"name": "node2",
"value": "192.168.10.12",
"label": "node2"
},
{
"name": "node3",
"value": "192.168.10.13",
"label": "node3"
},
{
"name": "issync",
"value": "true",
"label": "Enable file synchronization"
},
{
"name": "options",
"value": "-Izh_CN -TAsia/Shanghai --root-dir /cmp",
"label": "Installation options"
}
]
}
设置文件权限:
chmod 600 /root/cmp-ha.json
执行部署:
bash /root/cmp/ZStack-CMP-installer-<版本>.bin \
-Izh_CN \
-TAsia/Shanghai \
--root-dir /cmp \
--ha /root/cmp-ha.json
host.node 中三个节点的顺序必须依次对应 node1、node2、node3,env 中的节点 IP 必须与其完全一致。
options 用于 node2、node3 安装时传递安装参数。node1 命令行参数和 JSON 中的 options 应保持一致,否则可能出现节点间国际化、时区或安装路径不一致。
包含密码的 JSON 属于敏感文件,部署结束后应按现场安全规范归档或删除。
5. HA 安装日志
安装过程中会显示 Task ID 和 Ansible 原始任务日志。发生失败时检查:
less /tmp/cmp.log
less /tmp/cmp_ha.log
less ${CMP_INSTALL_ROOT}cmpactuator/resources/<TaskID>text
最终 PLAY RECAP 中三台节点均应满足:
unreachable=0
failed=0
6. HA 访问
部署完成后统一通过 VIP 访问:
http://<VIP>:8100
node1、node2 的业务服务均运行,但正常使用时不要绕过 VIP 固定访问某个业务节点。许可证按项目授权策略在 node1、node2 分别确认。
