部署主副本与 Controller HA
选择固定主副本组或 Controller 管理组中的一条路径。以下两条路径的数据目录不同,但使用重叠端口,因此一次只运行一种。它们是在单主机上的环回实验环境,不是能够承受主机故障的生产部署。
解释发送结果前先阅读 HA 权限与确认设计。两个进程、已连接 HA 套接字、成功健康探针,与副本持久化确认属于不同观察。
公共准备
使用本地 NameServer 配置及其启动说明。停止占用 10911、10931 的旧教程 Broker。在每个服务终端设置 ROCKETMQ_HOME 为仓库根目录,并设置 ROCKETMQ_SECURITY_PROFILE=development-insecure-loopback。NameServer 仍为 127.0.0.1:9876。
创建所选模式的目录。PowerShell:
$docsHaNodes = @('default-master','default-slave')
foreach ($docsHaNode in $docsHaNodes) {
New-Item -ItemType Directory -Force ".rocketmq-ha-demo/$docsHaNode/metadata", ".rocketmq-ha-demo/$docsHaNode/store"
}
Controller 模式将数组替换为 @('controller-broker-1','controller-broker-2','controller-broker-3'),另外创建 .rocketmq-ha-demo/controller-1、controller-2、controller-3。Linux 使用 mkdir -p 创建相同目录。这些名称 均位于 .rocketmq-ha-demo 下。
全部文件在 HA 示例目录。保持进程工作目录一致,使配置解析到预期存储。
路径 A:固定同步主节点与副本
| 进程 | Remoting / HA | 身份及角色 |
|---|---|---|
| 主节点 | 10911 / 10912 | Broker docs-ha,ID 0,SYNC_MASTER |
| 副本 | 10931 / 10932 | Broker docs-ha,ID 1,SLAVE;主 HA 端点 127.0.0.1:10912 |
两者均使用 SYNC_FLUSH 和双副本配置。Fast Remoting 端口为 10909、10929。每个进程的元数据及存储目录独立。
在不同终端启动:
cargo run -p rocketmq-broker --bin rocketmq-broker-rust -- -c rocketmq-website/examples/ha/default-master.toml -n 127.0.0.1:9876
cargo run -p rocketmq-broker --bin rocketmq-broker-rust -- -c rocketmq-website/examples/ha/default-slave.toml -n 127.0.0.1:9876
发送前检查 HA 进度。必需副本尚未就绪时,可能无法得到请求的同步结果。不要仅为了让试验输出成功而将策略改为异步。
此路径没有 Controller 选举服务。停止主节点不会自动授权配置的副本成为主节点。恢复应恢复预期主节点,或另行规划包含数据/身份协调的角色切换。