前期准备:
1、本文使用的CentOS7系统
2、成功搭建RabbitMQ集群,搭建方法可参考:
https://blog.csdn.net/weixin_47026543/article/details/113348711
为什么要使用HAProxy进行负载均衡:
因为RabbitMQ本身的原因,即使成功搭建集群,当连接的服务器宕机以后,只能手动修改连接才能使程序继续运行,这种情况明显有点鸡肋,只有使用HAProxy负载均衡以后,当连接的服务器宕机时,HAProxy才能自动的连接集群中的另一台服务器,而不需要手动更改连接,所以,在使用RabbitMQ集群时,建议最好搭配HAProxy进行负载均衡!
HAProxy安装:
1、进入src文件夹下:
cd /usr/local/src/
2、下载haproxy-1.7.9安装包:
wget http://pkgs.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.7.9.tar.gz/sha512/d1ed791bc9607dbeabcfc6a1853cf258e28b3a079923b63d3bf97504dd59e64a5f5f44f9da968c23c12b4279e8d45ff3bd39418942ca6f00d9d548c9a0ccfd73/haproxy-1.7.9.tar.gz
3、解压haproxy-1.7.9:
tar zxvf haproxy-1.7.9.tar.gz
4、进入haproxy-1.7.9文件:
cd haproxy-1.7.9
5、检查内核版本,使用uname -r查看内核,如:3.10.0-514.el7,此时该参数就为linux310;kernel ==大于2.6.28的可以用:TARGET=linux2628:
uname -r
6、编译:
make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy
安装gcc:
yum -y install gcc gcc-c++ libstdc++-devel
继续执行编译命令:
7、安装haproxy:
make install PREFIX=/usr/local/haproxy
8、添加配置文件:
1)进入haproxy文件夹:
cd /usr/local/haproxy
2)创建conf目录:
mkdir conf
3)进入conf文件夹:
cd conf/
4)编辑haproxy.cfg文件:
vim haproxy.cfg
按 i 进入插入模式,并添加如下配置内容:
global
log 127.0.0.1 local0
maxconn 1000
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout connect 5000
timeout client 50000
timeout server 50000
listen admin_stats
bind 0.0.0.0:1080
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /stats
stats realm XingCloud\ Haproxy
stats auth admin:admin
stats auth Frank:Frank
stats hide-version
stats admin if TRUE
listen rabbitmq_cluster
bind 0.0.0.0:5670
mode tcp
balance roundrobin
server rabbit01 127.0.0.1:5672 check inter 5000 rise 2 fall 3
server rabbit02 node2:5672 check inter 5000 rise 2 fall 3
按 esc 退出插入模式,按 :wq! 强制保存退出
至此,HAProxy安装并配置成功!
启动HAProxy:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
验证:
lsof -i :1080
访问控制台统计页面:
http://127.0.0.1:1080/stats
注意:
上面新创建的HAProxy是在108.134服务器上创建的,名称为node2,只是用来搭建HAProxy写文章使用(因为129服务器之前已搭建好),下方的测试均是采用的108.129服务器上之前就搭建好的HAProxy环境,节点名称为node1,所以程序中连接的是108.129
测试是否搭建成功:
一、在程序中测试:
1)创建测试消费者:
2)创建测试生产者,并生产3条消息:
消费者消费消息成功:
二、尝试把108.129服务器的RabbitMQ关闭,测试是否能顺利负载到108.134服务器上:
rabbitmqctl stop_app
检查是否成功停掉129服务器上的RabbitMQ:
继续在程序中访问129服务器,检查是否真正的开启了HAProxy负载均衡:
1)启动测试消费者:
2)启动生产者生产消息:
3)消费者成功消费消息:
三、不使用HAProxy负载均衡,程序直接连接129服务器,检测是否成功:
启动129服务器上的RabbitMQ,继续使用5672端口访问测试:
rabbitmqctl start_app
程序访问测试: