HaProxy介绍
HaProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HaProxy特别适用于负载特大的web站点,完全可以支持数以万计的并发连接
构建
创建两个容器分别为:rabbitmq-haproxy8100、rabbitmq-haproxy8101
- 创建容器rabbitmq-haproxy8100挂载配置文件haproxy.cfg的目录
/data/haproxy/8100
- 创建容器rabbitmq-haproxy8101挂载配置文件haproxy.cfg的目录
/data/haproxy/8101
复制8100的haproxy.cfg把5677、8100、8000端口改成5678、8101、8001即可
- 配置文件
#logging options
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /usr/local/etc/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
defaults
log global
#使用4层代理模式,”mode http”为7层代理模式
mode tcp
#if you set mode to tcp,then you nust change tcplog into httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
timeout connect 5s
#客户端空闲超时时间为 60秒 则HA 发起重连机制
timeout client 60s
#服务器端链接超时时间为 15秒 则HA 发起重连机制
timeout server 15s
#front-end IP for consumers and producters
listen rabbitmq_cluster
bind 0.0.0.0:5677
#配置TCP模式
mode tcp
#balance url_param userid
#balance url_param session_id check_post 64
#balance hdr(User-Agent)
#balance hdr(host)
#balance hdr(Host) use_domain_only
#balance rdp-cookie
#balance leastconn
#balance source //ip
#解决ckient连接时,mq2秒无活动被haproxy删除的情况( 这里代理用的是tcp ,默认tcp 2小时活动一次,大于它即可 )
timeout client 3h
timeout server 3h
#简单的轮询
balance roundrobin
#rabbitmq集群节点配置
#inter 每隔五秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用
server master5672 192.168.5.155:5672 check inter 5000 rise 2 fall 2
server slave5673 192.168.5.155:5673 check inter 5000 rise 2 fall 2
server slave5674 192.168.5.155:5674 check inter 5000 rise 2 fall 2
#配置haproxy web监控,查看统计信息
listen stats
bind 0.0.0.0:8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/rabbitmq-stats
stats uri /rabbitmq-stats
stats refresh 5s
#设置访问账户和密码
stats auth admin:qwg-haproxy
listen rabbitmq_admin #监听8000端口转发到rabbitmq的客户端
bind 0.0.0.0:8000
server master5672 192.168.5.155:15672 check inter 5000 rise 2 fall 2
server slave5673 192.168.5.155:15673 check inter 5000 rise 2 fall 2
server slave5674 192.168.5.155:15674 check inter 5000 rise 2 fall 2
分别创建并且运行容器
docker run -it --name rabbitmq-haproxy8100 -p 5677:5677 -p 8100:8100 -p 8000:8000 --net=rabbitmqnet -v /data/haproxy/8100/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -it --name rabbitmq-haproxy8101 -p 5678:5678 -p 8101:8101 -p 8001:8001 --net=rabbitmqnet -v /data/haproxy/8101/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
容器启动成功后, 访问HaProxy界面
http://192.168.5.155:8100/rabbitmq-stats
http://192.168.5.155:8101/rabbitmq-stats
可以看到RabbitMQ的3个节点为绿色,表示服务正常
访问以下地址也可以跳转到RabbitMQ客户端(代理)
http://192.168.5.155:8000
http://192.168.5.155:8001
端口说明
-p 5678:5678 Haproxy的端口
-p 8101:8101 Haproxy管理界面端口
-p 8001:8001 Haproxy代理Mq端口