下面以 CentOS 7/8 为例,说明如何搭建 RabbitMQ 集群(常用的是普通集群 + 镜像队列,这里先讲集群基础搭建)。
假设有 3 台 CentOS 服务器:
| 主机名 | IP |
|---|---|
| node1 | 192.168.1.11 |
| node2 | 192.168.1.12 |
| node3 | 192.168.1.13 |
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
cat >> /etc/hosts <<EOF
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
EOF
systemctl stop firewalld
systemctl disable firewalld
或开放端口(生产建议):
yum install -y epel-release
yum install -y erlang
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install -y https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.0/rabbitmq-server-3.12.0-1.el8.noarch.rpm
版本可自行替换
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
RabbitMQ 节点之间通过 .erlang.cookie 认证
在 node1 上:
cat /var/lib/rabbitmq/.erlang.cookie
将内容复制,覆盖 node2 / node3:
scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/
权限必须正确:
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
rabbit@node1中的node1是主机名
在任意节点:
rabbitmqctl cluster_status
应看到 3 个节点。
在任意节点执行:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
表示所有队列在集群中镜像。
浏览器访问:
http://192.168.1.11:15672
默认账号:
guestguest注意:
guest只能本地登录,远程需新建用户
rabbitmqctl status | grep node
如果你需要:
可以继续问我。