CentOS 7 RabbitMQ集群部署
基于的RabbitMQ版本:3.8.5
先决条件
- 参考CentOS 7 单机安装RabbitMQ 安装好需要集群的机器
- 输入
rabbitmqctl status
检查RabbitMQ运行状态,如下显示为正常:
Status of node rabbit@node236 ...
Runtime
OS PID: 13975
OS: Linux
Uptime (seconds): 1209818
RabbitMQ version: 3.8.5
Node name: rabbit@node236
Erlang configuration: Erlang/OTP 23 [erts-11.1.8] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:64] [hipe]
Erlang processes: 477 used, 1048576 limit
Scheduler run queue: 1
Cluster heartbeat timeout (net_ticktime): 60
RabbitMQ集群依赖于erlang集群,erlang集群是通过cookie进行通信认证的,首先使集群中的机器cookie一致。 .erlang.cookie文件在/var/lib/rabbitmq
目录中,任选集群中的一台机器作为主节点,将其cookie文件覆盖至其他机器的同一目录下即可。
停止所有机器的rabbitmq
服务:
rabbitmqctl stop
配置本地DNS
配置本地DNS域名解析,并保证机器间通过域名能直接ping通:
192.168.10.236 node236
192.168.10.237 node237
192.168.10.238 node238
开放端口
关闭防火墙或开放防火墙端口,需保证开放4369和15672端口
#关闭防火墙
systemctl stop firewalld
-----------------------------------------------------------------------------
#开启端口,其他端口照做
firewall-cmd --zone=public --add-port=4369/tcp --permanent
#重启防火墙
firewall-cmd --reload
#查看端口号是否开启
firewall-cmd --query-port=4369/tcp
#测试是否可以访问虚拟机端口
telnet 192.168.10.236 4369
集群启动
- 以集群模式依次启动所有节点并给节点命名
#-detached表示后台启动,rabbit1是节点名称
RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
- 命名完成后关闭所有节点
rabbitmqctl -n rabbit1 stop
- 在主节点上执行以下命令建立集群:
rabbitmqctl -n rabbit1 stop_app
rabbitmqctl -n rabbit1 reset
rabbitmqctl -n rabbit1 start_app
- 从节点执行以下命令加入主节点集群:
#rabbit2/rabbit3为从节点
#node236为之前在hosts文件中配置的域名
#rabbit2
rabbitmqctl -n rabbit2 stop_app
rabbitmqctl -n rabbit2 reset
rabbitmqctl -n rabbit2 join_cluster rabbit1@node236 --ram #主机名换成自己的,如果不加--ram表示为磁盘持久化节点
rabbitmqctl -n rabbit2 start_app #应用启动
#rabbit3
rabbitmqctl -n rabbit3 stop_app
rabbitmqctl -n rabbit3 reset
rabbitmqctl -n rabbit3 join_cluster rabbit1@node236 --ram #主机名换成自己的,如果不加--ram表示为磁盘持久化节点
rabbitmqctl -n rabbit3 start_app #应用启动
-
查看集群状态:
登录任意节点管理控制台查看,地址为http://ip:15672
在
OverView
tab 下会显示集群信息,