资料内容:
1.RabbitMQ集群搭建
一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境
上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能
力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。
1.1 集群方案的原理
RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通
过同步Erlang集群各节点的cookie来实现)。RabbitMQ本身不需要像ActiveMQ、Kafka那样通
过ZooKeeper分别来实现HA方案和保存集群的元数据。
1.2 如下案例中使用多台云服务器进行集群搭建
主要参考官方文档:https://www.rabbitmq.com/clustering.html
首先确保RabbitMQ运行没有问题
1 #修改hostname
2 vim /etc/hostname
3 m1
4 m2
5 #修改hosts集群设备
6 vim /etc/hosts
7 192.168.132.137 m1
8 192.168.132.139 m2
9
10 #开放防火墙 4369/5672/15672/25672端口
11 firewall‐cmd ‐‐zone=public ‐‐add‐port=4369/tcp ‐‐permanent
12 firewall‐cmd ‐‐zone=public ‐‐add‐port=5672/tcp ‐‐permanent13 firewall‐cmd ‐‐zone=public ‐‐add‐port=15672/tcp ‐‐permanent
14 firewall‐cmd ‐‐zone=public ‐‐add‐port=25672/tcp ‐‐permanent
15
16 #重载防火墙
17 firewall‐cmd ‐‐reload
18
19 #重启服务器
20 reboot
21
22 #同步.erlang.coolie
23 find / ‐name *.cookie
24
25 #将文件发送至指定ip的服务器中,发送的过程中需要指定另一台服务器的密码信息
26 scp /var/lib/rabbitmq/.erlang.cookie 192.168.132.134:/var/lib/rabbitmq/
27
28 #两个电脑启动MQ服务
29 rabbit‐server
30
31
32 # 停止应用 通过rabbitmqctl status 可以查看当前rabbitmactl默认操作的节点信息
33 rabbitmqctl stop_app
34
35 # 将当前节点加入到一个集群中 默认磁盘节点被加入的节点只要是集群中的一员,其他节点都能
够马上感受到集群节点的变化
36 rabbitmqctl join_cluster rabbit@m1
37
38 # 重新启动当前节点
39 rabbitmqctl start_app
40
41 #查看集群信息
42 rabbitmqctl cluster_status