Rabbitmq-集群

RabbitMQ本身是基于Erlang编写的,Erlang天生支持分布式(通过同步Erlang集群各节点的cookie来实现),因此不需要像Kafka那样通过ZooKeeper来实现分布式集群。
 
1:元数据
RabbitMQ内部有各种基础构件,包括队列、交换器、绑定、虚拟主机等,他们组成了AMQP协议消息通信的基础,而这些构件以元数据的形式存在
2:内存节点与磁盘节点
在集群中的每个节点,要么是内存节点,要么是磁盘节点,如果是内存节点,会将所有的元数据信息仅存储到内存中,而磁盘节点则不仅会将所有元数据存储到内存上, 还会将其持久化到磁盘。所以在搭建集群的时候,为了保证数据的安全性和性能,最好是两种节点都要有
 
 
实验环境
 
test1:192.168.1.17 (磁盘节点)
test2:192.168.1.18 (内存节点)
test3:192.168.1.19 (内存节点)
 
一、前期准备
 
说明:
①三台机器都需要安装Rabbitmq服务
②开启web管理界面rabbitmq-plugins enable rabbitmq_managemen
 
1:三台机器设置hostname
[root@test1 ~]# hostnamectl set-hostname test1
[root@test2 ~]# hostnamectl set-hostname test2 [root@test3 ~]# hostnamectl set-hostname test3
 
2:配置三台机器上的hosts文件
[root@test1 ~]# vim /etc/hosts
192.168.1.17 test1 192.168.1.18 test2 192.168.1.19 test3
 
[root@test2 ~]# vim /etc/hosts
192.168.1.17 test1 192.168.1.18 test2 192.168.1.19 test3
 
[root@test3 ~]# vim /etc/hosts
192.168.1.17 test1 192.168.1.18 test2 192.168.1.19 test3
 
3:为了方便做实验,直接关闭selinux以及iptables(线上环境勿学)
[root@test1 ~]# iptables -F
[root@test1 ~]# setenforce 0
 
[root@test2 ~]# iptables -F
[root@test2 ~]# setenforce 0
 
[root@test3 ~]# iptables -F
[root@test3 ~]# setenforce 0
 
4: 编辑cookie文件,将三台机器的该文件内容编辑为一致
[root@test1 ~]# cat /root/.erlang.cookie
UMHAFMJEJLZCLFCJOVII
[root@test1 ~]# rsync -av /root/.erlang.cookie root@test2:/root/.erlang.cookie
[root@test1 ~]# rsync -av /root/.erlang.cookie root@test3:/root/.erlang.cookie
 
说明:修改了cookie内容,test2、test3需要重启rabbitmq服务,否则以下操作会报错


二、分配节点

 
①test1为磁盘节点
②test2、test3为内存节点
 
1:test2机器执行
①加入之前,需要暂停应用服务
[root@test2 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@test2
 
②加入节点
[root@test2 ~]# rabbitmqctl join_cluster --ram rabbit@test1
Clustering node rabbit@test2 with rabbit@test1
 
③启动应用服务
[root@test2 ~]# rabbitmqctl start_app
Starting node rabbit@test2
 
2:test3机器执行
①加入之前,需要暂停应用服务
[root@test3 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@test3
 
②加入节点
[root@test3 ~]# rabbitmqctl join_cluster --ram rabbit@test1
Clustering node rabbit@test3 with rabbit@test1
 
③启动应用服务
[root@test3 ~]# rabbitmqctl start_app
Starting node rabbit@test3
3:查看集群状态 [root@test3 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@test3
[{nodes,[{disc,[rabbit@test1]},{ram,[rabbit@test3,rabbit@test2]}]},
{running_nodes,[rabbit@test2,rabbit@test1,rabbit@test3]},
{cluster_name,<<"rabbit@test2">>},
{partitions,[]},
{alarms,[{rabbit@test2,[]},{rabbit@test1,[]},{rabbit@test3,[]}]}]
 
4:web界面查看

猜你喜欢

转载自www.cnblogs.com/douyi/p/11761714.html
今日推荐