Ubuntu上实现RabbitMQ高可用的实践方案
一、架构选型与前置条件
二、搭建Ubuntu RabbitMQ集群
192.168.1.11 mq1
192.168.1.12 mq2
192.168.1.13 mq3
sudo rabbitmq-server -detached
sudo rabbitmqctl -n rabbit@mq2 stop_app
sudo rabbitmqctl -n rabbit@mq2 reset
sudo rabbitmqctl -n rabbit@mq2 join_cluster rabbit@mq1
sudo rabbitmqctl -n rabbit@mq2 start_app
sudo rabbitmqctl -n rabbit@mq3 stop_app
sudo rabbitmqctl -n rabbit@mq3 reset
sudo rabbitmqctl -n rabbit@mq3 join_cluster rabbit@mq1
sudo rabbitmqctl -n rabbit@mq3 start_app
sudo rabbitmqctl cluster_status
sudo rabbitmqctl -n rabbit@mq2 stop_app
sudo rabbitmqctl -n rabbit@mq2 change_cluster_node_type ram
sudo rabbitmqctl -n rabbit@mq2 start_app
三、配置队列镜像实现队列级高可用
sudo rabbitmqctl set_policy ha-all "^" \
'{"ha-mode":"all","ha-sync-mode":"automatic"}'
四、接入层负载均衡与健康检查
frontend rabbitmq-amqp
bind *:5672
default_backend rabbitmq_nodes
backend rabbitmq_nodes
balance roundrobin
server mq1 192.168.1.11:5672 check inter 5000 rise 2 fall 3
server mq2 192.168.1.12:5672 check inter 5000 rise 2 fall 3
server mq3 192.168.1.13:5672 check inter 5000 rise 2 fall 3
frontend rabbitmq-mgmt
bind *:15672
default_backend rabbitmq_mgmt_nodes
backend rabbitmq_mgmt_nodes
balance roundrobin
server mq1 192.168.1.11:15672 check
server mq2 192.168.1.12:15672 check
server mq3 192.168.1.13:15672 check
五、生产要点与常见问题
sudo rabbitmqctl add_user admin StrongPass!
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"