同局域网Windows10节点RabbitMQ高可用部署可行性咨询
结论
完全可以,同一局域网下两台Windows节点搭建RabbitMQ高可用架构是官方原生支持的部署方式,没有系统层面的限制。
部署核心注意事项
- 版本与权限前置要求
两台机器安装的Erlang、RabbitMQ版本必须完全一致,版本差会直接导致集群组建失败。另外两个节点的Erlang Cookie必须完全相同,Windows环境下服务级别的Cookie文件默认路径是C:\Windows\System32\config\systemprofile\.erlang.cookie,把其中一台的Cookie文件复制覆盖到另一台对应路径,之后重启两台机器的RabbitMQ服务即可。 - 网络配置要求
两台机器的Windows防火墙必须放开几个核心端口:4369(节点发现端口)、25672(集群内部通信端口)、5672(AMQP业务端口)、15672(Web管理界面端口)。不要直接用IP做节点寻址,提前在两台机器的C:\Windows\System32\drivers\etc\hosts文件里配置对方主机名和对应局域网静态IP的映射,避免主机名解析失败导致集群断连。 - 集群组建步骤
正常启动第一台节点的RabbitMQ服务后,在第二台节点的RabbitMQ sbin目录下执行以下命令加入集群:
执行完成后在任意节点执行rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@<第一台节点的Windows主机名> rabbitmqctl start_apprabbitmqctl cluster_status,能看到两个节点都在集群节点列表里就说明集群组建成功。 - 高可用能力配置
集群搭完默认不会做消息多副本同步,需要配置策略实现故障切换。如果用传统镜像队列,可以执行以下命令让所有队列在两个节点都存副本,节点故障时自动切换:
生产环境更推荐直接用仲裁队列,创建队列时指定队列类型为rabbitmqctl set_policy ha-all "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'quorum即可,数据一致性和故障恢复表现比传统镜像队列好很多,不需要额外配置同步规则。
双节点部署的已知局限
双节点是偶数节点集群,出现网络分区时存在脑裂风险,两个节点都拿不到超过半数的仲裁票,可能出现数据分裂。如果暂时没法加第三台节点,可以把集群的网络分区恢复策略设置为
pause_minority模式,网络断开时少数派节点会自动暂停服务,降低脑裂概率。
内容的提问来源于stack exchange,提问作者nadia aguerbaoui
相关产品推荐
相关产品推荐

