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