当前位置: 代码迷 >> 综合 >> rabbitmq+haproxy 高可用集群二
  详细解决方案

rabbitmq+haproxy 高可用集群二

热度:32   发布时间:2024-01-09 05:18:57.0

[toc]

环境
主机 192.168.2.47 hidden1 (主机名)
主机 192.168.2.48 hidden2 (主机名)
主机 192.168.2.44  haproxy (负载均衡代理)
两台主机已经搭建好rabbitmq 的单机版
二,集群的搭建
1,修改host
在2台机器上的hosts 加入如下:
192.168.2.47 hidden1
192.168.2.48 hidden2
2,复制.erlang.cookie
  1)首先,上诉两台机器rabbitmq 已经启动,此时会在/var/lib/rabbitmq/.erlang.cookie 目录(默认情况下)生成cookie文件,用于erlang在分布式节点之间进行通讯,此cookie文件的内容必须相同,否则无法通讯。
  2)[root@hidden1 ~]ll -a /var/lib/rabbitmq/
可看到文件 .erlang.cookie
  3)将 .erlang.cookie复制到另一台虚拟机
    [root@hidden1 ~]scp /var/lib/rabbitmq/.erlang.cookie root@hidden2:/var/lib/rabbitmq
  这样两台rabbitmq就可以进行通信。
   4)改变了节点cookie之后不能对节点通讯,此时用kill指令关掉rabbitmq进程重启即可,当然也可以优雅的先关闭,在修改cookie:
      ./rabbitmqctl -n rabbit@rabbit2 stop关闭,然后修改cookie
      注意:如果修改了节点名,接后续操作必须-n指明,否则erlang无法找到节点
   5)主机192.168.2.48 重启rabbitmq
    [root@hidden2 ~]systemctl restart rabbitmq-server
3,两台rabbitmq组成集群(特别声明,以下操作都需要指定节点操作尤其是节点的启动和关闭,否则会报错)
  1)停止其中一台rabbimq机器的运行
   [root@hidden2 ~]rabbitmqctl -n rabbit@hidden2 stop_app
   [root@hidden2 ~]rabbitmqctl -n rabbit@hidden2 reset
  2)将这台rabbitmq机器加入到另外一台rabbitmq机器,组成集群。
   [root@hidden2 ~]rabbitmqctl join_cluster --ram rabbit@hidden1
  3)启动这台rabbitmq机器
   [root@hidden2 ~]rabbitmqctl start_app
  4)查看集群状态
   [root@hidden2 ~]rabbitmqctl cluster_status
  5) 也可以去其中一台的http 管理界面查看


4两台rabbitmq 进行数据同步(镜像模式)
 输入以下命令:
 [root@hidden1 ~]rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
这样两台rabbitmq就可以数据同步了。


5 安装haproxy

1.yum install -y haproxy
2.启动haproxy
systemctl start haproxy
3.查看haproxy状态
systemctl status haproxy

6 两台rabbitmq 通过haproxy 组成高可用集群

1.编辑Haproxy配置文件
vi /etc/haproxy/haproxy.cfg
添加以下语句:


····

listen rabbitmq_local_cluster 127.0.0.1:5672
mode tcp
timeout client 3h
timeout server 3h
timeout connect 3h
balance roundrobin
server rabbit1 192.168.2.47:5672 check inter 5000 rise 2 fall 2
server rabbit2 192.168.2.48:5672 check inter 5000 rise 2 fall 2
····

7 程序端去访问 192.168.2.44:5672
 

  相关解决方案