在Debian系统上搭建RabbitMQ集群,可以按照以下步骤进行:
RabbitMQ是用Erlang编写的,因此首先需要安装Erlang。
sudo apt update
sudo apt install erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
安装RabbitMQ服务器。
sudo apt install rabbitmq-server
启动RabbitMQ服务并设置开机自启动。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
假设你有三台服务器,分别是rabbit1, rabbit2, rabbit3。
启用管理插件(可选,但推荐):
sudo rabbitmq-plugins enable rabbitmq_management
配置Erlang Cookie:
确保所有节点上的Erlang Cookie相同。Cookie文件通常位于/var/lib/rabbitmq/.erlang.cookie。
sudo scp /var/lib/rabbitmq/.erlang.cookie user@rabbit2:/var/lib/rabbitmq/
sudo scp /var/lib/rabbitmq/.erlang.cookie user@rabbit3:/var/lib/rabbitmq/
然后在每个节点上设置正确的权限:
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
加入集群:
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@rabbit2
sudo rabbitmqctl start_app
添加更多节点:
在主节点上执行以下命令将其他节点加入集群:
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@rabbit3
sudo rabbitmqctl start_app
在任意一个节点上执行以下命令查看集群状态:
sudo rabbitmqctl cluster_status
你应该能看到所有节点都加入了集群。
为了提高高可用性,可以配置镜像队列。
启用镜像队列插件:
sudo rabbitmq-plugins enable rabbitmq_mnesia
sudo rabbitmq-plugins enable rabbitmq_peer_discovery_classic_config
sudo rabbitmq-plugins enable rabbitmq_shovel
sudo rabbitmq-plugins enable rabbitmq_shovel_management
sudo rabbitmq-plugins enable rabbitmq_federation_management
sudo rabbitmq-plugins enable rabbitmq_federation
sudo rabbitmq-plugins enable rabbitmq_peer_exchange
sudo rabbitmq-plugins enable rabbitmq_tracing
sudo rabbitmq-plugins enable rabbitmq_management
配置镜像队列:
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
这将使所有队列都成为镜像队列,并在所有节点上进行复制。
确保防火墙允许RabbitMQ的默认端口(5672)和SSL端口(5671)。
sudo ufw allow 5672/tcp
sudo ufw allow 5671/tcp
最后,重启RabbitMQ服务以应用所有配置。
sudo systemctl restart rabbitmq-server
现在,你的RabbitMQ集群应该已经搭建完成并运行正常。