Docker主机 IP地址
172.19.184.202 rabbit1 rabbit1
172.19.184.201 rabbit2 rabbit2
第一步:获取RabbitMQ镜像
docker pull rabbitmq:management
第二步:启动MQ
rabbit1:
172.19.184.202
rabbitmq集群建立需要解析主机名,因此需要一台内网DNS,存在以下记录(或者修改容器的hosts文件),我这里才用的是host方式
docker run -d --hostname rabbit1 --add-host=rabbit1:172.19.184.202 --add-host=rabbit2:172.19.184.201 --name rabbit1 -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 5671:5671 -p 15671:15671 -p 25672:25672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' docker.io/rabbitmq:management
参数说明:
-d
容器后台运行
--hostname rabbit1
容器的主机名为 rabbit1,容器内部的hostname
--add-host=rabbit1:172.19.184.202
--add-host=rabbit2:172.19.184.201
修改容器内部的hosts,没有dns服务器的话就这么改
--name rabbit1
容器名为rabbit1,在宿主机上运行“docker ps”命令时显示的名称
--log-opt max-size=10m
日志文件单个最大10M
--log-opt max-file=3
日志文件最多保留3个
-p "4369:4369"
映射宿主机端口4369到容器端口4369,主机端口在前
-p "5671:5671"
略
-p "5672:5672"
略
-p "15671:15671"
略
-p "15672:15672"
略
-p "25672:25672"
略
-v /data/rabbitmq:/var/lib/rabbitmq:z
将宿主机目录/data/rabbitmq挂载到容器的/var/lib/rabbitmq目录。z是一个标记,在selinux环境下使用。
-e RABBITMQ_DEFAULT_USER=user01
设置rabbitmq默认用户为user01
-e RABBITMQ_DEFAULT_PASS=password01
设置rabbitmq默认密码为password01
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie'
设置rabbitmq的cookie为“rabbitcookie”,可以自定义为其他文本,三个容器保持一致即可。
docker.io/rabbitmq:management
使用docker.io/rabbitmq:management这个镜像
进入到容器内部:
docker exec -it rabbit1 /bin/bash
rabbitmqctl change_password admin password123
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl list_users
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
rabbitmqctl stop_app
rabbitmqctl reset
chmod 600 /var/lib/rabbitmq/.erlang.cookie
rabbitmqctl start_app
在第二台服务器上安装mq
rabbit2:172.19.184.201
docker run -d --hostname rabbit2 --add-host=rabbit1:172.19.184.202 --add-host=rabbit2:172.19.184.201 --name rabbit2 -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 5671:5671 -p 15671:15671 -p 25672:25672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' docker.io/rabbitmq:management
把rabbit2添加到集群(以内存节点方式加入)
docker exec -it rabbit2 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
把rabbit2添加到集群(以磁盘方式加入)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app