RabbitMQ集群配置简单记录
1.配置集群
RabbitMQ通过ssh通道进行集群直接的链接,这里准备了两台服务器分别如下
192.168.0.1 主机名 RabbitMQ-1
192.168.0.1 主机名 RabbitMQ-2
首先我们需要在这两台机器上配置好互相的host可以通过主机名进行访问
vim /etc/hosts
内网地址 RabbitMQ-1
内网地址 RabbitMQ-2
service network restart
#在 RabbitMQ-1 能通:
ping RabbitMQ-2
#在 RabbitMQ-2 能通:
ping RabbitMQ-1
1.1 配置 Erlang Cookie
当我们可以ping通之后我们需要设置一下 Erlang Cookie 让两台机器保持同样的 Cookie 才能顺利的建立集群
先启动双方的RabbitMQ
复制 RabbitMQ-1 中 /var/lib/rabbitmq/.erlang.cookie 文件中的值
粘贴到 RabbitMQ-2 /var/lib/rabbitmq/.erlang.cookie中 使用:wq! 保存
重启RabbitMQ-2 RabbitMQ服务
1.2 join服务器建立关联
Cookie我们已经配置好了 接下来需要把两个集群关联起来
对 RabbitMQ-1 节点做如下操作
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
这个是用来在rabbitmq1上执行的,这个也可以不执行,直接在节点服务器执行下边的脚本,不过得保证这个rabbitmq服务是正常启动的.
RabbitMQ-2 节点服务配置脚本
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@RabbitMQ-1
rabbitmqctl start_app
1.3 查看集群状态
可以通过 rabbitmqctl cluster_status 查看到如下状态证明集群已经配置成功
[root@Sunmi-RabbitMQ-1 ~]# rabbitmqctl cluster_status
Cluster status of node ‘rabbit@Sunmi-RabbitMQ-1’ …
[{nodes,[{disc,[‘rabbit@Sunmi-RabbitMQ-1’]},
{ram,[‘rabbit@Sunmi-RabbitMQ-2’]}]},
{running_nodes,[‘rabbit@Sunmi-RabbitMQ-2’,’rabbit@Sunmi-RabbitMQ-1’]},
{cluster_name,<<“rabbit@Sunmi-RabbitMQ-1”>>},
{partitions,[]},
{alarms,[{‘rabbit@Sunmi-RabbitMQ-2’,[]},{‘rabbit@Sunmi-RabbitMQ-1’,[]}]}]
注意:建立好集群之后需要重新配置一下用户 配置的用户会影响整个集群
集群的各项模式
通常情况下,在集群中我们把每一个服务称之为一个节点,在 RabbitMQ 集群中,节点类型可以分为两种:
内存节点:元数据存放于内存中。为了重启后能同步数据,内存节点会将磁盘节点的地址存放于磁盘之中,除此之外,如果消息被持久化了也会存放于磁盘之中,因为内存节点读写速度快,一般客户端会连接内存节点。
磁盘节点:元数据存放于磁盘中(默认节点类型),需要保证至少一个磁盘节点,否则一旦宕机,无法恢复数据,从而也就无法达到集群的高可用目的。
PS:元数据,指的是包括队列名字属性、交换机的类型名字属性、绑定信息、vhost等基础信息,不包括队列中的消息数据。
RabbitMQ 中的集群主要有两种模式:普通集群模式和镜像队列模式。
配置镜像模式只需要在主节点运行如下命令:
- p 之后加上你需要的Vhost
rabbitmqctl set_policy -p / ha-all “^” ‘{“ha-mode”:”all”}’
附件:
使用docker
一、拉取镜像
docker pull rabbitmq:3.7-management
二、创建容器
1、新建目录
mkdir rabbitmq01 rabbitmq02 rabbitmq03
2、创建容器
docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 -v /downloads/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE=‘rabbitmqCookie’ rabbitmq:3.7-management
docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 -v /downloads/rabbitmq/rabbitmq02:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE=‘rabbitmqCookie’ --link rabbitmqCluster01:rabbitmq01 rabbitmq:3.7-management
docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 -v /downloads/rabbitmq/rabbitmq03:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE=‘rabbitmqCookie’ --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02 rabbitmq:3.7-management
三、容器执行命令
容器一
docker exec -it rabbitmqCluster01 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
容器二
docker exec -it rabbitmqCluster02 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit
容器三
docker exec -it rabbitmqCluster03 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit
回到容器一
docker exec -it rabbitmqCluster01 bash
rabbitmqctl set_policy -p / ha “^” ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’
本文来自博客园,作者:所遇所思,转载请注明原文链接:https://www.cnblogs.com/mynxg/p/17989326