在CentOS7上配置RabbitMQ 3.6.3集群与高可用

  

在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集群与高可用