目录
3.1 .X86架构的CentOS虚拟机中安装HAProxy
编辑 3.2 ARM架构的CentOS虚拟机中安装HAProxy
1 RabbitMQ集群搭建
设置RabbitMQ开机自启动
chkconfig rabbitmq-server on
1. ⾸先,克隆两台台IP地址为192.168.93.100、192.168.93.101的虚拟机,然后安装 RabbitMQ以及整合环境搭建,这样我们就准备好了两台Linux服 务器。
2.在192.168.93.100和192.168.93.101 服务器上,修改/etc/hosts映射⽂件。
127.0.0.1 node1 localhost.localdomain localhost4 localhost4.localdomain4
::1 node1 localhost.localdomain localhost6 localhost6.localdomain6
192.168.93.100 node1
192.168.93.101 node2
3.两台Linux主机修改完host⽂件后,需重启Linux服务器。
reboot
4.在RabbitMQ集群环境下,节点间相互通信时,cookie必须保持⼀致。⾸先查看.erlang.cookie⽂件的位置。
find / -name .erlang.cookie
注:由于我这里已经配置好了,所以有两个。以 /root 下或 /var 下的 .erlang.cookie 文件为准。
5.同步RabbitMQ的cookie⽂件到每台服务器,可以使⽤跨服务器拷⻉.erlang.cookie到每台节点。
scp /var/.erlang.cookie 192.168.93.101:/var
6.将 /root 或 /var 目录下的 .erlang.cookie 文件替换到 rabbitmq目录下(两台都需要执行)
cp /var/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
7.两台服务器同步完cookie⽂件后,需重启Linux服务器。
reboot
8.在两台服务器上分别停⽌防⽕墙,并启动RabbitMQ服务。
systemctl stop firewalld
rabbitmq-server -detached
9.第二台加⼊集群节点(组成集群)。
rabbitmqctl stop_app # 停止服务
rabbitmqctl join_cluster rabbit@node1 # 加入集群
rabbitmqctl start_app # 开启服务
10.集群配置好后,可以在RabbitMQ任意节点上执⾏下⾯的命令来查看是否集群配置成功。
rabbitmqctl cluster_status
11.在搭建RabbitMQ集群之前,所创建的交换机、队列、⽤户都属于单⼀结构,将在新的RabbitMQ集群环境中是 不能⽤的。所以在新的集群中重新⼿动添加⽤户即可(任意节点添加,所有节点共享)。
rabbitmqctl add_user admin 123456 # 创建账号密码
rabbitmqctl set_user_tags admin administrator # 设置权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" # 设置可用范围
注意:当节点脱离RabbitMQ集群还原成单⼀结构后,交换机、队列和⽤户等数据都会重新回来。
12.创建虚拟机。选择【Admin】-【Virtual Hosts】-【Add virtual host】选项,添加⼀个虚拟机。
12.控制台查看是否集群成功。
2 镜像模式
2.1 镜像模式实现
1. 通过RabbitMQ可视化管理⻚⾯设置镜像模式策略。
3 HAProxy安装和配置
3.1 .X86架构的CentOS虚拟机中安装HAProxy
1.访问http://www.haproxy.org/download/1.8/src/haproxy-1.8.12.tar.gz地址下载HAProxy安装包。
2.再准备⼀台CentOS服务器,将IP地址设置为192.168.93.102,将作为HAProxy服务器。
3.将下载好的HAProxy安装包传输到这台CentOS系统中。
# 1.Windows系统使⽤Xftp⼯具或者lrzsz⼯具将HAProxy安装包上传⾄CentOS系统
# 2.Mac系统使⽤scp命令将HAProxy安装包上传⾄CentOS系统
scp /Users/Downloads/haproxy-1.8.12.tar.gz root@192.168.230.133:/opt
4.解压HAProxy安装包。
tar -zxvf haproxy-1.8.12.tar.gz
5.make时需要使⽤TARGET指定内核及版本。
uname -r
6.根据内核版本选择编译参数。
cd haproxy-1.8.12
cat README
7.编译安装HAProxy。
(1) 进⼊haproxy-1.8.12⽬录后,进⾏编译和安装。
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
(2) 编译HAProxy参数说明:
8.安装成功后,查看HAProxy版本。
/usr/local/haproxy/sbin/haproxy -v
9.配置启动⽂件,复制haproxy⽂件到/usr/sbin⽬录下 ,复制haproxy.init脚本到/etc/init.d下。
cp /usr/local/haproxy/sbin/haproxy /usr/sbin/
cp ./examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
10.创建系统账号。
useradd -r haproxy
11.haproxy.cfg配置⽂件需要⾃⾏创建。
mkdir /etc/haproxy
vim /etc/haproxy/haproxy.cfg
12.添加配置信息到haproxy.cfg⽂件。
#全局配置
global
#⽇志输出配置,所有⽇志都记录在本机,通过local0输出
log 127.0.0.1 local0 info
#当前⼯作⽬录
chroot /usr/local/haproxy
#⽤户与⽤户组
user haproxy
group haproxy
#指定⽤户,运⾏进程ID
uid 99
#指定组
gid 99
#守护进程启动HAProxy
daemon
#服务器最⼤并发连接数;如果请求的连接数⾼于此值,将其放⼊请求队列,等待其它连接被释放
maxconn 4096
#默认配置
defaults
#应⽤全局的⽇志配置
log global
#默认的模式mode {tcp|http|health},TCP是4层,HTTP是7层,health只返回OK
mode tcp
#⽇志类别,采⽤tcplog
option tcplog
#不记录健康检查⽇志信息
option dontlognull
#3次失败则认为服务不可⽤
retries 3
#每个进程可⽤的最⼤连接数
maxconn 2000
#连接超时
timeout connect 5s
#客户端空闲超时时间为30秒则HAProxy发起重连机制
timeout client 30s
#服务器端链接超时时间为15秒则HAProxy发起重连机制
timeout server 15s
#绑定配置
listen rabbitmq_cluster
#VIP,反向代理到下⾯定义的两台Real Server
bind 192.168.93.102:5672
#配置TCP模式
mode tcp
#简单的轮询
balance roundrobin
#RabbitMQ集群节点配置,每隔5秒对MQ集群做检查,2次正确证明服务可⽤,3次失败证明服务不可⽤
server node1 192.168.93.100:5672 check inter 5000 rise 2 fall 3
server node2 192.168.93.101:5672 check inter 5000 rise 2 fall 3
#配置HAProxy的Web监控,查看统计信息
listen monitor
bind 192.168.93.102:8100
mode http
option httplog
#启⽤基于程序编译时默认设置的统计报告
stats enable
#设置HAProxy监控地址为http://192.168.93.102:8100/monitor
stats uri /monitor
#每5s刷新⼀次⻚⾯
stats refresh 5s
13.关闭防⽕墙。
systemctl stop firewalld
14.启动HAProxy。
(1) HAProxy服务操作相关命令介绍。
(2) 启动HAProxy。
service haproxy start
15.查看HAProxy进程。
ps -ef|grep haproxy
16.访问监控中⼼http://192.168.93.102:8100/monitor,查看HAProxy控制台对node1和node2的监控情况。
3.2 ARM架构的CentOS虚拟机中安装HAProxy
1.镜像站RPM⽅式安装。ARM架构的CentOS获取HAProxy安装包的⽅式。
下载地址1:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/haproxy1.9.0-1.el7.aarch64.rpm
下载⽅式2:wget
https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/haproxy-1.9.0-
1.el7.aarch64.rpm
下载地址3:https://pkgs.org/download/haproxy
说明:镜像站中的RPM包都是通过开源代码编译打包⽽成,然后将其上传到镜像站。
2.再准备⼀台CentOS服务器,将IP地址设置为192.168.230.133,将作为HAProxy服务器。
3.由于HAXProxy在CentOS仓库中默认就有HAProxy的安装包,因此可直接在这台CentOS服务器上通过yum命令 来执⾏完成安装。
sudo yum install haproxy -y
说明:使⽤yum命令安装的HAProxy默认安装在/usr/sbin/haproxy中,且会⾃动创建配置⽂ 件/etc/haproxy/haproxy.cfg。
4.安装完成之后检查是否安装成功。
yum info haproxy
5.查看⽂件位置。
find / -name "haproxy"
6.修改/etc/haproxy/haproxy.cfg配置⽂件,在该⽂件的末尾加⼊如下语句。
#绑定配置
listen rabbitmq_cluster
#VIP,反向代理到下⾯定义的两台Real Server
bind 192.168.230.133:5672
#配置TCP模式
mode tcp
option tcplog
#简单的轮询
balance roundrobin
#RabbitMQ集群节点配置,每隔5秒对MQ集群做检查,2次正确证明服务可⽤,3次失败证明服务不可⽤
server node1 192.168.93.100:5672 check inter 5000 rise 2 fall 3
server node2 192.168.93.101:5672 check inter 5000 rise 2 fall 3
#配置HAProxy的Web监控,查看统计信息
listen monitor
bind 192.168.230.133:8100
mode http
option httplog
#启⽤基于程序编译时默认设置的统计报告
stats enable
#设置HAProxy监控地址为http://192.168.230.133:8100/monitor
stats uri /monitor
#每5s刷新⼀次⻚⾯
stats refresh 5s
7.启动当前的HAProxy。
haproxy -f /etc/haproxy/haproxy.cfg
8.访问监控中⼼http://192.168.230.133:8100/monitor,查看HAProxy控制台对node1和node2的监控情况。
4 HAProxy负载均衡测试
1.将项⽬的application.yml配置⽂件中的host地址修改成HAProxy服务器地址,即192.168.230.133。
spring:
rabbitmq:
host: 192.168.93.102
# ...
2.运⾏测试类中的delayMessage()测试⽅法。
// 测试延迟队列
@Test
public void delayMessage() {
rabbitTemplate.convertAndSend("business.exchange", "dl.delay", "延迟队列:测试下订单超时");
}
3.最后启动项⽬主类,⼀旦检测到死信队列中有待消费的消息,⽴即会读取进⾏消费。从演 示结果得出,所有的请求都会交给HAProxy服务器,然后由其负载均衡到每台RabbitMQ服务器。