一、单机多节点集群-普通模式
1、停止RabbitMQ 服务
systemctl stop rabbitmq-server
2、启动第一个节点
- 没有指定web管理控制台使用的端口则默认使用15672
RABBITMQ_NODE_PORT=5673 RABBITMQ+NODENAME=rabbit1 rabbitmq-server start
3、启动第二个节点
- 需要指定web管理控制台使用的端口,这里指定为:15674
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server start
4、将rabbit1作为主节点
# 先停止节点服务
rabbitmqctl -n rabbit1 stop_app
# 重置节点服务
rabbitmqctl -n rabbit1 rest
# 启动节点服务
rabbitmqctl -n rabbit1 start_app
5、将rabbit2作为从节点
# 停止节点服务
rabbitmqctl -n rabbit2 stop_app
# 重置节点服务
rabbitmqctl -n rabbit2 reset
# 将rabbit2节点作为从节点添加到主节点rabbit1,其中localhost是主机名换成自己的即可
rabbitmqctl -n rabbit2 join_cluster rabbit1@'localhost'
# 启动节点服务
rabbitmqctl -n rabbit2 start_app
6、访问web管理控制台
- 如下图所示已经成功启动了两个节点
二、RabbitMQ镜像集群配置-镜像模式
上面已经完成RabbitMQ多节点普通模式集群配置,普通模式集群并不保证队列的高可用性,虽然交换机绑定队列这些可以复制到集群的任何一个节点,但是队列内容不会复制。如果想要在队列节点宕机或故障也正常应用,就要复制(同步)队列内容到集群里的每一个节点,此时需要将队列做成镜像队列,将普通模式变成镜像模式:消息会主动在镜像节点间同步。
镜像模式要依赖policy模块,这个模块是做什么用的呢?Policy中文来说是政策或策略的意思:它就是要设置那些Exchanges或者queue的数据需要复制、同步,如何复制同步?对就是做这些的。设置Policy可以通过管理网页设置:如下图
- Name: 策略名称
- Pattern: 匹配规则,如果匹配所有的队列,是^
- Definition: 使用ha-mode模式中的all,表示同步所有匹配的队列。
也可以通过如下命令设置:
rabbitmqctl set_policy my_ha "^" '{"ha-mode":"all"}'
配置完看队列如下,其中标识my_ha的说明使用my_ha策略,属于镜像模式,没有表示的就是普通模式
三、负载均衡-HAProxy
1、安装HAProxy
# 下载HAProxy地址:https://pan.baidu.com/s/1NzhZc85jxOJsx9plnXi6qQ
# 将安装包上传到Linux系统
# 下载依赖包
yum install gcc vim wget
# 解压安装包
tar -xvf haproxy-1.8.10.tar.gz -C /usr/local
# 进入解压目录
cd /usr/local/haproxy-1.8.10
# 执行编译命令
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
# 执行安装命令
make install PREFIX=/usr/local/haproxy
# 查看haproxy版本
/usr/local/haproxy/sbin/haproxy -v
2、配置HAProxy
# 创建配置文件所在的目录
mkdir /etc/haproxy
# 创建haproxy配置文件
vim /etc/haproxy/haproxy.cfg
- 配置内容如下:
global
log 127.0.0.1 local0 info
maxconn 4096
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
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_cluster
# 定义监听地址和端口,本机的5672端口
bind 0.0.0.0:5672
# 配置 tcp 模式
mode tcp
# 简单的轮询
balance roundrobin
#rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查,2次正确证明服务器可用,
#3次失败证明服务器不可用,并且配置主备机制
server node1 127.0.0.1:5673 check inter 5000 rise 2 fall 3
server node2 127.0.0.1:5674 check inter 5000 rise 2 fall 3
# 配置 haproxy web 监控,查看统计信息
listen stats
bind 192.168.33.100:8100
mode http
option httplog
stats enable
# 设置 haproxy 监控地址为:http://192.168.33.100:8100/rabbitmq-stats
stats uri /rabbitmq-stats
stats refresh 5s
3、启动HAProxy
# 启动HAProxy并指定配置文件
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
# 浏览器访问如下地址对mq节点进行监控
http://192.168.33.100:8100/rabbitmq-stats
4、注意事项
- 代码中访问mq集群地址则变为访问haproxy地址:5672