RabbitMQ双节点集群搭建

一 实验环境

二 安装步骤

2.1 安装单实例RabbitMQ

可参考:安装rabbitmq 3.7.6_雅冰石的专栏-CSDN博客

2.2 修改两台服务器的/etc/hosts文件

添加:

192.168.144.204 pc1

192.168.144.208 pc2

2.3 拷贝节点一的.erlang.cookie文件到node-2节点

[root@pc1 ~]# scp /var/lib/rabbitmq/.erlang.cookie 192.168.144.208:/var/lib/rabbitmq/

[root@pc2 ~]# chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

#重启节点2的rabbitmq

systemctl restart rabbitmq-server

2.4 将pc2与pc1组成集群

在第二个节点上执行:

[root@pc2 ~]# rabbitmqctl stop_app

Stopping rabbit application on node rabbit@pc2 ...

[root@pc2 ~]#  rabbitmqctl reset

Resetting node rabbit@pc2 ...

[root@pc2 ~]# rabbitmqctl join_cluster rabbit@pc1 

Clustering node rabbit@pc2 with rabbit@pc1

[root@pc2 ~]# rabbitmqctl start_app

Starting node rabbit@pc2 ...

 completed with 3 plugins.

[root@pc2 ~]# rabbitmqctl cluster_status

Cluster status of node rabbit@pc2 ...

[{nodes,[{disc,[rabbit@pc1,rabbit@pc2]}]},

 {running_nodes,[rabbit@pc1,rabbit@pc2]},

 {cluster_name,<<"rabbit@pc2">>},

 {partitions,[]},

 {alarms,[{rabbit@pc1,[]},{rabbit@pc2,[]}]}]

进管理界面查看节点:

三 验证rabbitmq集群

3.1 验证数据是否同步

3.1.1 验证虚拟主机

#在其中一个节点上创建虚拟主机,验证下在另一个节点上能否查看到虚拟主机

[root@pc2 ~]# rabbitmqctl add_vhost bb

Adding vhost "bb" ...

[root@pc1 opt]# rabbitmqctl list_vhosts

Listing vhosts ...

bb

/

说明数据能同步过来。

3.1.2 验证用户

#在其中一个节点上创建用户,并设置权限

rabbitmqctl add_user bb 123456

rabbitmqctl set_user_tags bb administrator

rabbitmqctl  set_permissions -p bb bb  '.*' '.*' '.*'

#在另一个节点上看到用户同步过来了

[root@pc2 ~]# rabbitmqctl  list_users

Listing users ...

bb [administrator]

admin [administrator]

guest [administrator]

3.1.2 验证队列

3.1.2.1 创建队列

#这里通过图形用户界面创建队列

登录其中一个节点的管理界面,创建一个队列:

 #在另一个节点管理界面上能查到这个新建的队列:

 3.1.2.2 设置镜像队列

如果不设置镜像队列,某个节点宕机后,该节点上的队列状态会变成down,会导致该队列不可用,影响业务,数据也可能会丢失,因此需要设置镜像队列。

down状态的队列示例:

#将/的所有队列设置为镜像队列,策略名称为ha-all。

[root@pc1 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...

如果不指定虚拟主机名称,默认是只给/设置了镜像队列,想要给某个虚拟主机设置镜像队列,这样做:

rabbitmqctl set_policy -p 虚拟主机名称 策略名称 "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

示例:

[root@pc2 ~]# rabbitmqctl set_policy -p bb bb-ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

Setting policy "bb-ha-all" for pattern "^" to "{"ha-mode":"all","ha-sync-mode":"automatic"}" with priority "0" for vhost "bb" ...

该命令会自动将该虚拟主机上之前创建的队列及之后创建的队列都设置为镜像队列。

可以看到Node处有+1的标识:

3.2 验证rabbitmq集群高可用

宕掉其中一个节点,验证下之前在该节点上创建的虚拟主机是否仍然可用,队列状态是否是正常的(state为down表示不正常),等等。

--本篇文章参考了【消息队列】如何保证MQ的高可用?_hoaven的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值