机器准备
集群机器数量最小为两台,为了防止脑裂问题最好大于等于三台且为奇数
网络环境
设置主机名,三台机器分别设置为rabbitmq1、rabbitmq2、rabbitmq3
# host1
sudo hostnamectl set-hostname rabbitmq1
# host2
sudo hostnamectl set-hostname rabbitmq2
# host3
sudo hostnamectl set-hostname rabbitmq3
设置主机名-IP映射
查询每台机器的ip地址,可用以下命令查询
ifconfig
查询后在所有机器的/etc/hosts文件中增加映射
192.168.1.1 rabbitmq1
192.168.1.2 rabbitmq2
192.168.1.3 rabbitmq3
防火墙
开放防火墙端口
4369(Erlang端口映射)、25672(节点通信)、5672(AMQP)、15672(管理插件)
RABBITMQ安装
rabbitmq依赖版本对应关系
本次安装版本选择:
- RABBITMQ-4.0.6
- ERLANG-27.2
ERLANG安装
erlang下载地址
选择源码下载,下载后上传到所有机器解压安装
# 解压源码包
tar -zxvf otp_src_27.2.tar.gz
# 安装必要插件
sudo apt update
sudo apt install -y build-essential autoconf m4 libncurses5-dev libncursesw5-dev \
libwxgtk3.0-gtk3-dev libssh-dev unixodbc-dev libssl-dev curl
# 编译&安装
cd otp_src_27.2
./configure \
--prefix=/usr/local/erlang \
--without-wx \
--enable-threads \
--enable-smp-support \
--enable-kernel-poll \
--enable-docs
sudo make -j8 && make install
RABBITMQ安装
参考: 官方文档
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
## Provides RabbitMQ
##
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
# another mirror for redundancy
deb [arch=amd64 signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.rabbitmq.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y 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
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
集群部署
cookie迁移
将rabbitmq1的cookie文件复制到其他机器
sudo scp /var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
rabbitmq2和rabbitmq3设置cookie文件归属
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
sudo chmod 600 /var/lib/rabbitmq/.erlang.cookie
rabbitmq2、rabbitmq3加入rabbitmq集群
# 重启rabbitmq服务让cookie生效
sudo systemctl restart rabbitmq-server.service
# 关闭当前应用
sudo rabbitmqctl stop_app
# 加入并启动集群应用
sudo rabbitmqctl join_cluster rabbit@rabbitmq1
sudo rabbitmqctl start_app
查看集群状态并设置开机启动
# 查看集群信息,节点包括所有机器
sudo rabbitmqctl cluster_status
# 所有机器执行开机自启
sudo systemctl enable rabbitmq-server.service