在Ubuntu上搭建RabbitMQ集群需要以下步骤:
首先,确保你的Ubuntu系统已经安装了Erlang。可以通过以下命令安装:
sudo apt update
sudo apt install -y erlang
然后,安装RabbitMQ服务器:
sudo apt install rabbitmq-server
安装完成后,启用RabbitMQ管理界面插件:
sudo rabbitmq-plugins enable rabbitmq_management
RabbitMQ节点之间通过Erlang Cookie进行身份验证。确保所有节点的Erlang Cookie相同。首先,在任意一个节点上找到或创建Erlang Cookie文件:
cat /var/lib/rabbitmq/.erlang.cookie
然后将这个文件复制到其他节点的相同位置:
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie
在每个节点上启动RabbitMQ服务:
sudo rabbitmq-server start
选择一个节点(通常为主节点)加入集群,并允许其他节点加入:
# 在主节点上
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
# 在其他节点上
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
在任意一个节点上执行以下命令查看集群状态:
sudo rabbitmqctl cluster_status
为了提高队列的高可用性,可以配置镜像队列。首先,在任意一个节点上添加策略:
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
这将使得所有队列都镜像到所有节点上。
允许RabbitMQ相关端口通过防火墙:
sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw reload