CentOS 7 RabbitMQ集群部署

基于的RabbitMQ版本:3.8.5

先决条件

  1. 参考CentOS 7 单机安装RabbitMQ 安装好需要集群的机器
  2. 输入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

集群启动

  1. 以集群模式依次启动所有节点并给节点命名
#-detached表示后台启动,rabbit1是节点名称
RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
  1. 命名完成后关闭所有节点
rabbitmqctl -n rabbit1 stop
  1. 在主节点上执行以下命令建立集群:
rabbitmqctl -n rabbit1 stop_app  
rabbitmqctl -n rabbit1 reset     
rabbitmqctl -n rabbit1 start_app
  1. 从节点执行以下命令加入主节点集群:
#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  #应用启动
  1. 查看集群状态:

    登录任意节点管理控制台查看,地址为http://ip:15672

    OverView tab 下会显示集群信息,

posted @ 2022-03-09 17:09  KimYoung  阅读(261)  评论(0编辑  收藏  举报