RabbitMQ——集群搭建

背景:搭建三个Rabbitmq节点的集群

一、在3台服务器上安装分别Rabbitmq

Rabbitmq的安装教程:https://blog.csdn.net/b15735105314/article/details/114557416

二、集群配置

1、确保3台服务器都有自己的机器名称

主机名相关配置在:/etc/hostname,/etc/hosts。我这里三台机器的IP和机器名如下:

IP地址机器名
192.168.40.110rabbit01
192.168.40.111rabbit02
192.168.40.112rabbit03

 

 

 

 

 

2、在三台服务器上配置/etc/hosts的映射,如下:(三台机器内容一样)

192.168.40.110 rabbit01
192.168.40.111 rabbit02
192.168.40.112 rabbit03

3、关闭三台服务器上的Rabbitmq,使用下面两个命令查看Rabbitmq服务是否启动,如果启动就关闭

lsof -i:5672
lsof -i:15672
systemctl start rabbitmq-server     启动
systemctl stop rabbitmq-server     停止
systemctl restart rabbitmq-server    重启

4、正常命令启动三个Rabbitmq(还未组成集群,所以使用单节点的启动命令就行)

三台服务器上的Rabbitmq必须启动。

5、复制.erlang.cookie文件

选择rabbit01、rabbit02、rabbit03任意一个节点作为Master(这里选择rabbit01为Master),也就是说我们需要把rabbit01的Cookie文件同步到72、73节点上去,进入/var/lib/rabbitmq目录下,然后把.erlang.cookie文件copy到各个节点下,下面是复制命令:

scp /var/lib/rabbitmq/.erlang.cookie 192.168.40.111:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie 192.168.40.112:/var/lib/rabbitmq/

6、停止三台Rabbitmq服务器

我们首先停止3个节点的服务(这里不能使用原来的命令:/etc/init.d/rabbitmq-server stop 或者 systemctl stop rabbitmq-server)

使用如下命令:

rabbitmqctl stop

7、使用集群启动命令启动三台rabbitmq服务器

接下来我们就可以使用集群命令,配置rabbit01、rabbit02、rabbit03为集群模式,3个节点(rabbit01、rabbit02、rabbit03)执行启动命令,后续启动集群使用此命令即可。

rabbitmq-server -detached

8、rabbit02、rabbit03作为slave加入集群操作(确保3台服务器的防火墙已经关掉,或者将相应的端口开放),两台服务器分别执行如下命令:

//注意做这个步骤的时候:需要配置/etc/hosts 必须相互能够寻址到
rabbit02:rabbitmqctl stop_app
rabbit02:rabbitmqctl join_cluster --ram rabbit@rabbit01
rabbit02:rabbitmqctl start_app
rabbit03:rabbitmqctl stop_app
rabbit03:rabbitmqctl join_cluster rabbit@rabbit01
rabbit03:rabbitmqctl start_app

在本文章的结尾会补充上面:rabbitmqctl join_cluster --ram rabbit@rabbit01这条命令的一些说明。

9、修改集群名称(选择执行)

修改集群名称(默认为第一个node名称):

rabbitmqctl set_cluster_name rabbitmq_clusterName

10、查看集群状态

最后在集群的任意一个节点执行命令:查看集群状态

rabbitmqctl cluster_status

三、设置镜像队列(可以不用设置)

设置镜像队列策略(在任意一个节点上执行)

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致,RabbitMQ高可用集群就已经搭建好了,我们可以重启服务,查看其队列是否在从节点同步。

 

补充:rabbitmqctl join_cluster --ram rabbit@rabbit01这条命令的一些说明。

rabbitmqctl join_cluster {clusternode} [--ram] 命令介绍(该内容来自https://www.jianshu.com/p/61a90fba1d2a?utm_campaign):
# 表示结合到指定的集群,如果有参数 --ram 表示作为RAM节点结合到该集群中。
# 该命令指令本节结合到指定的集群中,在结合之前,该节点需要reset,所以在使用时,需要格外注意。为了成功运行本命令,必须要停止RabbitMQ应用,例如 stop_app
# 集群节点有两种类型: disc 和 RAM。disc类型,复制数据在RAM和disc上,在节点失效的情况下,提供了冗余保证,也能从一些全局事件中恢复,例如所有节点失效。RAM类型,只复制数据在RAM上,主要表现在伸缩性上,特别是在管理资源(例如:增加删除队列,交换器,或者绑定)上表现突出。
# 一个集群必须至少含有一个disc节点,但通常都多余一个。通过该命令时,默认是设置为disc节点,如果需创建RAM节点,需要指定参数 --ram
# 执行此命令之后,在该节点上启动的RabbitMQ应用,在该节点挂掉之后,会尝试连接节点所在集群中的其他节点。
# 为了离开集群,可以 reset 该节点,也可以使用命令 forget_cluster_node 远程删除节点

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值