rabbitmq 集群安装叙述
rabbitmq集群模式有2种,普通模式(默认)和镜像模式;rabbitmq节点有2种,磁盘模式和内存模式,一个集群内必须存在一个节点是磁盘模式,否则无法做持久化设置,我们有3个节点,设置2个内存节点和1个磁盘节点。
安装普通集群准备工作
- 准备3台已安装rabbitmq单机版的服务器,如果未安装请点击此链接参考
- 笔者准备好的3台服务器IP:
- 192.168.153.131
- 192.168.153.130
- 192.168.153.129
- 注意关闭防火墙
# 关闭防火墙服务 [root@rabbitmq-node1 ~]# systemctl stop firewalld.service # 开机禁止防火墙启动 [root@rabbitmq-node1 ~]# systemctl disable firewalld.service
- 设置主机hostname
- 192.168.153.131 hostname设置成 rabbitmq-node1
- 192.168.153.130 hostname设置成 rabbitmq-node2
- 192.168.153.129 hostname设置成 rabbitmq-node3
- 设置hostname方法:
# 进入编辑模式,然后不同服务器设置不同的hostname,设置好后使用重启命令reboot重启服务器才生效 [root@rabbitmq-node1 ~]# vi /etc/hostname # 查看设置好的hostname [root@rabbitmq-node1 ~]# cat /etc/hostname rabbitmq-node1
- 设置hosts文件,让3台服务器能互通,3台服务器配置相同
# 进入hosts文件 [root@rabbitmq-node1 ~]# vi /etc/hosts # 查询hosts文件配置 [root@rabbitmq-node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.153.131 rabbitmq-node1 192.168.153.130 rabbitmq-node2 192.168.153.129 rabbitmq-node3 # 使用ping 命令检查是否能正常通讯 [root@rabbitmq-node1 ~]# ping rabbitmq-node1 PING rabbitmq-node1 (192.168.153.131) 56(84) bytes of data. 64 bytes from rabbitmq-node1 (192.168.153.131): icmp_seq=1 ttl=64 time=0.029 ms 64 bytes from rabbitmq-node1 (192.168.153.131): icmp_seq=2 ttl=64 time=0.024 ms 64 bytes from rabbitmq-node1 (192.168.153.131): icmp_seq=3 ttl=64 time=0.053 ms
同步.erlang.cookie内容
- .erlang.cookie文件内容相当于rabbitmq集群通讯的秘钥,必须保持一致
- 把rabbitmq-node1(192.168.153.131)服务器的.erlang.cookie复制到另外2台
- .erlang.cookie文件路径 /var/lib/rabbitmq/.erlang.cookie
# 查看 rabbitmq-node1(192.168.153.131) 的内容,JqL2scmsek4xKVlYcanH9A复制到另外2台机器,提示:使用命令wq!强制保存
[root@rabbitmq-node1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
JqL2scmsek4xKVlYcanH9A
# 查看 rabbitmq-node2(192.168.153.130) 的内容与131保存一致
[root@rabbitmq-node2 ~]# cat /var/lib/rabbitmq/.erlang.cookie
JqL2scmsek4xKVlYcanH9A
# 查看 rabbitmq-node3(192.168.153.129) 的内容与131保存一致
[root@rabbitmq-node3 ~]# cat /var/lib/rabbitmq/.erlang.cookie
JqL2scmsek4xKVlYcanH9A
配置rabbitmq普通集群
- 进入rabbitmq-node1(192.168.153.131)
# 新增一个rabbitmq.conf配置文件暂不配置,后续可以根据需要来配置此文件
[root@rabbitmq-node1 ~]# vi /etc/rabbitmq/rabbitmq.conf
# 新增一个rabbitmq-env.conf 环境配置文件,设置RABBITMQ_NODE_IP_ADDRESS=
[root@rabbitmq-node1 ~]# vi /etc/rabbitmq/rabbitmq-env.conf
# 查看rabbitmq-env.conf 环境配置信息,注意如果不设置此配置rabbitmq会启动失败
# RABBITMQ_NODE_IP_ADDRESS配置:空字符串,意味着它应该绑定到所有网络接口
[root@rabbitmq-node1 ~]# cat /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_NODE_IP_ADDRESS=
# 启动rabbitmq
[root@rabbitmq-node1 ~]# rabbitmq-server start &
- 进入rabbitmqn-node2(192.168.153.130)
# 新增一个rabbitmq.conf配置文件暂不配置,后续可以根据需要来配置此文件
[root@rabbitmq-node2 ~]# vi /etc/rabbitmq/rabbitmq.conf
# 新增一个rabbitmq-env.conf 环境配置文件,设置RABBITMQ_NODE_IP_ADDRESS=
[root@rabbitmq-node2 ~]# vi /etc/rabbitmq/rabbitmq-env.conf
# 启动rabbitmq
[root@rabbitmq-node2 ~]# rabbitmq-server start &
# 停止rabbitmq
[root@rabbitmq-node2 ~]# rabbitmqctl stop_app
# 加入集群,注意:--ram是内存模式 --disc是磁盘模式(默认)
rabbitmqctl join_cluster --ram rabbit@rabbitmq-node1
# 启动
[root@rabbitmq-node2 ~]# rabbitmqctl start_app
- rabbitmq-node3按照rabbitmq-node2的步骤执行
新增rabbitmq web登录账户并验证
- 在rabbitmq-node1新增账号
# 新增账号密码
[root@rabbitmq-node1 ~]# rabbitmqctl add_user admin admin
# 设置角色
[root@rabbitmq-node1 ~]# rabbitmqctl set_user_tags admin administrator
# 设置权限
[root@rabbitmq-node1 ~]# rabbitmqctl set_permissions admin ".*" ".*" ".*"
- 在浏览器输入http://192.168.153.131:15672 登录
- 登录成功看到1个磁盘节点,2个内存节点
总结
- 配置rabbitmq集群前,请确认rabbitmq单机版是否能正常启动和关闭
- 修改服务器的主机名称hostname记得重启服务器
- 请检查防火墙是否关闭,或者添加已信任的端口
- 修改hosts文件后,记得使用ping校验网络是否畅通
- 连接集群前,先启动rabbitmq,然后使用rabbitmqctl stop_app停止,在使用rabbitmqctl join_cluster命令连接