1.集群
当单台RabbitMQ服务器无法满足消息的吞吐量及安全性要求时,需要搭建RabbitMQ集群
bash
# 关闭RabbitMQ服务
rabbitmqctl stop
重新设置服务
bash
# 设置服务一
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit1 rabbitmq-server start -detached
# 设置服务二
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server start -detached
# 关闭服务2
rabbitmqctl -n rabbit2 stop_app
# 重新设置服务2
rabbitmqctl -n rabbit2 re
# 将服务2加入服务1中
rabbitmqctl -n rabbit2 join_cluster rabbit1@localhost
# 启动服务2
rabbitmqctl -n rabbit2 start_app
集群虽然搭建成功
但是队列只保存在了一个节点中,如果该节点故障,则会丢失整个集群信息
此时我们需要引入镜像队列机制,它可以将队列消息复制到集群中的其他节点上
在控制台上切换到ADMIN界面,新增一个policy
definition新增ha-mode=all
保存即可
2.负载均衡
无论生产者还是消费者,只能链接一个rabbitmq节点,如果只链接一个节点,就会造成单个节点压力过大。此时就需要haproxy负载工具
bash
yum -y install haproxy
vim /etc/haproxy/haproxy.cfg
bash
# 以下为添加内容
listen rabbitmq_cluster
# 对外暴露端口
bind 0.0.0.0:5672
mode tcp
balance roundrobin
# 代理RabbitMQ的端口
server node1 192.168.1.196:5672 check inter 5000 rise 2 fall 2
server node2 192.168.1.195:5672 check inter 5000 rise 2 fall 2
listen stats
# Haproxy控制台路径
bind 192.168.1.195:8100
mode http
option httplog
stats enable
stats uri /rabbitmq-stats
stats refresh 5s
# 启动
haproxy -f /etc/haproxy/haproxy.cfg
生产者或者消费者连接rabbitmq,需要链接负载工具的地址
java
connectionFactory.setHost("192.168.1.195");