随笔 - 30  文章 - 0  评论 - 20  阅读 - 15万

rabbitmq+haproxy+keepalived实现高可用集群搭建

  项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说)。

搭建环境

  CentOS7 64位

  RabbitMQ 3.6.2

  Keepalived 1.2.21

  主机:192.168.0.1   192.168.0.2   192.168.0.3   三台节点上安装rabbitmq服务

  Haproxy 安装在 192.168.1.1 和 192.168.1.2 上,用于对外提供 RabbitMQ 均衡

  Keepalived实现haproxy的主备,高可用(避免单点问题),192.168.1.1(主)192.168.1.2(备)

  全局图如下:

RabbitMQ集群搭建

单机上安装

  分别在192.168.0.1   192.168.0.2   192.168.0.3 节点上安装rabbitmq server。

  • 1.Install Erlang

    # yum install erlang
    测试erlang是否安装成功,输入:
    # erl //进入erl窗口则表示安装成功

  • 2.Install RabbitMQ Server

    # wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm
    # yum install rabbitmq-server-3.6.2-1.noarch.rpm

  • 3.启动

    # /etc/init.d/rabbitmq-server start

  • 4.开机启动

    # chkconfig rabbitmq-server on
    测试是否安装成功:
    # rabbitmqctl status //查看rabbitmq的运行状态信息

  • 5.启用插件rabbitmq management

    # rabbitmq-plugins enable rabbitmq_management
    # /etc/init.d/rabbitmq-server restart

    输入http://ip:15672可以登录管理界面,默认账户guest/guest只能使用http://localhost:15672登录,要想远程登录,需要添加一个新的用户:
    # rabbitmqctl add_user admin 1234
    #用户设置为administrator才能远程访问
    $ sudo rabbitmqctl set_user_tags admin administrator
    $ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //该命令使用户admin具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源 
    查看所有用户#rabbitmqctl list_users

镜像集群搭建

  将192.168.0.1上的/var/lib/rabbitmq/.erlang.cookie中的内容复制到158和159上的/var/lib/rabbitmq/.erlang.cookie文件中, 即三台服务器必须具有相同的cookie,如果不相同的话,无法搭建集群

  192.168.0.2和192.168.0.3节点上分别执行命令,加入到集群
    # rabbitmqctl stop_app
    # rabbitmqctl join_cluster --ram rabbit@h-ncdrdcs7
    # rabbitmqctl start_app
    其中--ram代表是内存节点,如果希望是磁盘节点则不用加--ram,在rabbitmq集群中,至少需要一个磁盘节点

    查看集群的状态
    # rabbitmqctl cluster_status

  设置成镜像队列
  # rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' //意思表示以ha.开头的queue都会复制到各个节点 ["^"匹配所有]

Haproxy负载代理

  利用haproxy做负载均衡
  在192.168.1.1和192.168.1.2节点上
  安装haproxy
  # yum install haproxy

  vi /etc/haproxy/haproxy.cfg 之后添加:

复制代码
listen rabbitmq_local_cluster 0.0.0.0:5672 
  #配置TCP模式 
  mode tcp
  option tcplog 
  #简单的轮询 
  balance roundrobin 
  #rabbitmq集群节点配置 
  server rabbit1 192.168.0.1:5672 check inter 5000 rise 2 fall 2 
  server rabbit2 192.168.0.2:5672 check inter 5000 rise 2 fall 2 
  server rabbit3 192.168.0.3:5672 check inter 5000 rise 2 fall 2

#配置haproxy web监控,查看统计信息 
listen private_monitoring :8100 
  mode http 
  option httplog 
  stats enable 
  #设置haproxy监控地址为http://localhost:8100/stats 
  stats uri /stats 
  stats refresh 30s 
  #添加用户名密码认证
  stats auth admin:1234
复制代码

  #启动
  # haproxy -f haproxy.cfg
  #重启动
  # service haproxy restart

Keepalived安装

  利用keepalived做主备,避免单点问题,实现高可用

  在192.168.1.1和192.168.1.2节点上安装最新版keepalived

  192.168.1.1(主)修改keepalived.conf为:Primary配置:

复制代码
vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
}
vrrp_instance VI_1 {
    interface ens192
    state MASTER
    priority 200
    virtual_router_id 10
    unicast_src_ip 192.168.1.1
    unicast_peer {
        192.168.1.2
    }
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.1.10 //虚拟ip,对外提供服务
    }
    track_script {
        chk_haproxy
    }
    notify_master /loadbtify_master.sh
}
复制代码

   192.168.1.2(备)修改keepalived.conf为:Secondary配置:

复制代码
vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
}
vrrp_instance VI_1 {
    interface ens192
    state BACKUP
    priority 100
    virtual_router_id 10
    unicast_src_ip 192.168.1.2
    unicast_peer {
        192.168.1.1
    }
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.1.10
    }
    track_script {
        chk_haproxy
    }
    notify_master /loadbtify_master.sh
}
复制代码

   启动keepalived即可,192.168.1.10是对外提供的统一地址。

  通过192.168.1.10:5672就可以访问rabbitmq服务。

 

参考资料

https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04#userconsent#

http://www.rabbitmq.com/install-rpm.html   

http://www.keepalived.org/download.html   //keepalived下载地址

posted on   程序人生ly  阅读(10963)  评论(8编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示