在Debian上搭建RabbitMQ集群涉及多个步骤,包括安装Erlang、配置RabbitMQ、设置集群以及启用管理插件等。以下是一个详细的步骤指南:
首先,确保系统中已安装Erlang,因为RabbitMQ是使用Erlang语言编写的,它的运行需要依赖Erlang环境。
sudo apt-get update
sudo apt-get install -y erlang-nox
添加RabbitMQ官方仓库的密钥,然后更新系统源并安装RabbitMQ。
curl -sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-server/ubuntu focal main" | sudo tee -a /etc/apt/sources.list.d/rabbitmq.list
sudo apt-get update
sudo apt-get install -y rabbitmq-server
在每个RabbitMQ服务器上设置相同的Erlang Cookie,以确保节点可以相互通信。通常在 /var/lib/rabbitmq/.erlang.cookie
文件中设置。
sudo cp /var/lib/rabbitmq/.erlang.cookie /etc/ssl/private/
sudo chmod 400 /etc/ssl/private/.erlang.cookie
sudo chown root:rabbitmq /etc/ssl/private/.erlang.cookie
确保只开放必要的端口,例如RabbitMQ的默认端口5672和管理插件的15672端口。
sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw enable
在每个服务器上启动RabbitMQ服务。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
使用 rabbitmqctl
命令行工具将节点加入集群。
# 在主节点上执行
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
# 在其他节点上执行相同的命令,将node1替换为node2,node3等
为了确保消息的高可用性,可以设置队列镜像。
sudo rabbitmqctl set_policy ha-all "^my_queue$" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
启用RabbitMQ管理插件,提供一个基于Web的管理界面。
sudo rabbitmq-plugins enable rabbitmq_management
默认情况下,管理界面可以通过 http://服务器IP地址:15672
访问。使用默认的用户名和密码登录,用户名是 guest
,密码也是 guest
。
请注意,在生产环境中,应该及时修改默认的用户名和密码以提高安全性。
以上步骤应该可以帮助你在Debian系统上成功搭建RabbitMQ集群。如果在安装过程中遇到任何问题,可以参考RabbitMQ的官方文档或寻求社区帮助。