HAProxy为RabbitMQ集群做负载均衡

参考文章

什么是负载均衡

可以简单的理解为,只要访问一个ip,即有机会可以访问到集群中的所有服务器。

比如访问www.baidu.com,这样的大型服务不可能只有一台服务器在支撑,他背后可能有10台,100台服务器,要求用户记住百度所有的服务器地址是不现实的,也太麻烦了。因此,负载均衡出现了。

通过负载均衡,我们只需要知道www.baidu.com这个域名,负载均衡器会根据相应的负载均衡算法(如:roundrobin轮询)来将用户的请求发送到某一台服务器上,如果某一台服务器宕机了,那么负载均衡器能够感知到该服务器的宕机状态,在它恢复正常前,不会把请求发送到该服务器上

为RabbitMQ添加负载均衡器,那么你只需要知道负载均衡的服务器地址,就可以连接到RabbitMQ集群中的任意节点

选择HAProxy作为负载均衡器

为什么?

免费,可靠。

搭建步骤

这里选择CentOS7做为搭建服务器

下载HAProxy

wget http://www.haproxy.org/download/2.1/src/haproxy-2.1.7.tar.gz

解压

tar -zxf haproxy-2.1.7.tar.gz -C /your/path

安装依赖库

yum install gcc gcc-c++ openssl-devel libnl3-devel pcre-devel

编译

cd $HAPROXY_HOME

# 这里跳过了依赖重新编译,防止出错
make -j $(nproc) TARGET=linux-glibc USE_NS=

编译完成后生成了可执行文件haproxy

添加配置

vim /path/haproxy.cfg

# 添加以下内容
global
    # 日志
    log 127.0.0.1   local0 info
    maxconn 4096
    # 后台启动
    daemon
    stats socket /tmp/haproxy.socket uid haproxy mode 770 level admin

defaults
    # 负载均衡默认配置
    log     global
    mode    tcp
    option  tcplog
    option  dontlognull
    retries 3
    option  redispatch
    maxconn 2000
    timeout connect 5s
    timeout client  120s
    timeout server  120s

listen  rabbitmq_local_cluster
    # 前端IP,供消费者和生产者使用
    bind 0.0.0.0:5670
    mode    tcp
    # 采用roundrobin负载均衡算法,即轮询
    balance roundrobin
    # rabbitmq服务器地址,端口
    # check inter 5000 ,每5秒检测一次服务是否可用
    # rise 2 服务器故障重启后,需要经过2次健康检测才能被确认可用
    # fall 3 需要经过3次健康检查失败后,HAProxy才会停止服务的使用
    server  rabbit 127.0.0.1:5672 check inter 5000 rise 2 fall 3
    server  rabbit_1 127.0.0.1:5673 check inter 5000 rise 2 fall 3
    server  rabbit_2 127.0.0.1:5674 check inter 5000 rise 2 fall 3

listen  private_monitoring
    # 监控页面
    bind 0.0.0.0:8100
    mode    http
    option  httplog
    stats   enable
    # 统计信息页面路径
    stats   uri /stats
    stats   refresh 5s

访问localhost:8100/stats

15933149988937.jpg