在CentOS7上配置RabbitMQ 3.6.3集群与高可用
集群概述
<代码>通过Erlang的分布式特性(神奇的饼干认证节点)进行RabbitMQ集群,各RabbitMQ服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。代码>
这些节点通过RabbitMQ哈队列(镜像队列)进行消息队列结构复制。本文中搭建3个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ集群对外就能提供服务。
环境
-
<李> CentOS 64位李>
<李> RabbitMQ 3.6.3李>
<李> HAProxy 1.6.0
RabbitMQ集群安装在3个节点上:192.168.1.1,192.168.1.2,192.168.1.3;HAProxy安装在192.168.1.4上,用于对外提供RabbitMQ负载均衡服务。李>
配置步骤
1。修改/etc/hosts,并配置ssh相互免密登录
<代码> root@node1 ~ # vi/etc/hosts 192.168.1.1 node1 192.168.1.2 node2 192.168.1.3 node3 代码>
2。安装erlang, rabbitmq
<代码>在192.168.1.1,192.168.1.2,192.168.1.3三个节点上安装,然后开启RabbitMQ监控插件。 (root@node1 ~) # wget http://www.rabbitmq.com/releases/erlang/erlang el7.centos.x86_64.rpm——18.1 - 1. (root@node1 ~) # wget http://www.rabbitmq.com/releases/rabbitmq server/v3.6.3/rabbitmq 3.6.3 - 1. noarch.rpm——服务器 (root@node1 ~) # rpm -ivh erlang el7.centos.x86_64.rpm——18.1 - 1. (root@node1 ~) # rpm -ivh rabbitmq服务器- 3.6.3 1. - noarch.rpm (root@node1 ~) # rabbitmq-plugins启用rabbitmq_management 代码>
3。设置Erlang饼干
Erlang饼干文件:/var/lib/rabbitmq/.erlang。饼干。这里将node1的该文件复制到node2, node3,由于这个文件权限是400年,所以需要先修改node2, node3中的该文件权限为777年,然后将node1中的该文件拷贝到node2, node3,最后将权限和所属用户/组修改回来。
<代码> root@node1 ~ # chmod 777/var/lib/rabbitmq/.erlang.cookie # scp - r/var/lib/rabbitmq/.erlang. root@node1 ~饼干root@node2:/var/lib/rabbitmq/.erlang.cookie # scp - r/var/lib/rabbitmq/.erlang. root@node1 ~饼干root@node3:/var/lib/rabbitmq/.erlang.cookie # chmod 400/var/lib/rabbitmq/.erlang.cookie root@node1 ~ (root@node1 ~) #乔恩rabbitmq/var/lib/rabbitmq/.erlang.cookie (root@node1 ~) # chgrp rabbitmq/var/lib/rabbitmq/.erlang.cookie 代码>
4。使用分离参数运行各节点
<代码> root@node1 ~ # rabbitmqctl停止 (root@node1 ~) # rabbitmq服务器分离代码>
5。组成集群
<代码>将node2, node3与node1组成集群 (root@node2 ~) # rabbitmqctl stop_app (root@node2 ~) # rabbitmqctl join_cluster rabbit@node1 (root@node2 ~) # rabbitmqctl start_app # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # (root@node3 ~) # rabbitmqctl stop_app (root@node3 ~) # rabbitmqctl join_cluster rabbit@node1 (root@node3 ~) # rabbitmqctl start_app 代码>
此时node2与node3也会自动建立连接,如果要使用内存节点,则可以使用下面的命令加入集群。
<代码> [root@node2 ~] # rabbitmqctl join_cluster * - ram * rabbit@node1 代码>
集群配置好后,可以在RabbitMQ任意节点上执行下面的命令来查看是否集群配置成功。
<代码> rabbitmqctl cluster_status 代码>
6。设置镜像队列策略
在任意一个节点上执行下面的命令
<代码> [root@node1 ~] # rabbitmqctl set_policy ha-all“^”“{“ha-mode”:“所有”}”代码>
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。完成这6个步骤后,RabbitMQ高可用集群就已经搭建好了,最后一个步骤就是搭建均衡器。
<代码>提示: RabbitMQ的配置文件为:/etc/RabbitMQ/rabbitmq.config RabbitMQ的环境配置文件为:/etc/RabbitMQ rabbitmq-env.conf 代码>
7。安装并配置HAProxy
HAProxy在192.168.1.4上安装,然后修改/etc/haproxy/haproxy.cfg。
<代码> root@snails ~ # haproxy vv # vi/etc/haproxy/haproxy.cfg root@snails ~ 听rabbitmq_cluster 0.0.0.0:5672 tcp方式 此平衡循环 服务器node1 192.168.1.1:5672检查国米2000年上升2下降3 服务器node2 192.168.1.2:5672检查国米2000年上升2下降3 服务器node2 192.168.1.3:5672检查国米2000年上升2下降3 听private_monitoring: 8100 http方式 选择httplog 统计数据支持 #设置haproxy监控地址为http://localhost: 8100/rabbitmq-stats 统计数据uri/rabbitmq-stats 统计刷新5 s #/usr/sbin/haproxy - d - f/etc/haproxy/haproxy. root@snails ~cfg - p/var/run/haproxy.pid在CentOS7上配置RabbitMQ 3.6.3集群与高可用