参考链接: https://cloud.tencent.com/developer/article/1783899 https://www.cnblogs.com/caoweixiong/p/14371487.html
计划使用RabbitMQ集群的功能,所以需要测试一下集群。
一、搭建集群
docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 -v ./rabbitmq01:/var/lib/rabbitmq -p 15772:15672 -p 5772:5672 -e RABBITMQ_ERLANG_COOKIE='XCXLCEPGJKVCAEJBBXVN' -e RABBITMQ_DEFAULT_USER=thdemo -e RABBITMQ_DEFAULT_PASS=th@demo rabbitmq:3.12-management
docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 -v ./rabbitmq02:/var/lib/rabbitmq -p 15773:15672 -p 5773:5672 -e RABBITMQ_ERLANG_COOKIE='XCXLCEPGJKVCAEJBBXVN' --link rabbitmqCluster01:rabbitmq01 -e RABBITMQ_DEFAULT_USER=thdemo -e RABBITMQ_DEFAULT_PASS=th@demo rabbitmq:3.12-management
docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 -v ./rabbitmq03:/var/lib/rabbitmq -p 15774:15672 -p 5774:5672 -e RABBITMQ_ERLANG_COOKIE='XCXLCEPGJKVCAEJBBXVN' --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02 -e RABBITMQ_DEFAULT_USER=thdemo -e RABBITMQ_DEFAULT_PASS=th@demo rabbitmq:3.12-management
使用Portainer.io进入集群的console页面,依次执行一下命令:
apt -y update
apt -y install vim
apt -y install iputils-ping
修改三台容器的hosts,IP需要对应实际修改:
cat <<EOF > /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
172.17.0.2 thdemo-rabbitmq10
172.17.0.3 thdemo-rabbitmq11
172.17.0.4 thdemo-rabbitmq12
EOF
修改三台设备的nodename:
echo "NODENAME=rabbit@thdemo-rabbitmq10" > /etc/rabbitmq/rabbitmq-env.conf
修改三台容器的rabbitmq cookies,使其一致。该 cookie 文件相当于密钥令牌,集群中的 RabbitMQ 节点需要通过交换密钥令牌以获得相互认证。
先查看thdemo-rabbitmq10的cookies:
cat /var/lib/rabbitmq/.erlang.cookie
将其余thdemo-rabbitmq11、thdemo-rabbitmq12的cookies设置为thdemo-rabbitmq10的cookies:
echo -n "XCXLCEPGJKVCAEJBBXVN" > /var/lib/rabbitmq/.erlang.cookie
重启thdemo-rabbitmq11、thdemo-rabbitmq12两台服务器。
在11、12的console中,依次执行以下命令:
# 1.停止服务
rabbitmqctl stop_app
# 2.重置状态
rabbitmqctl reset
# 3.节点加入
rabbitmqctl join_cluster rabbit@thdemo-rabbitmq10
# 4.启动服务
rabbitmqctl start_app