RabbitMQ通过Docker建立集群
发表于|更新于
|阅读量:
https://github.com/rabbitmq/rabbitmq-cli/pull/445
目前RABBITMQ_ERLANG_COOKIE
环境变量已经被弃用,现在有两种方法设置erlang cookie
- 在容器启动时直接覆盖
$HOME/.erlang.cookie
文件
- 使用
--erlang-cookie
显式覆盖erlang cookie
直接覆盖$HOME/.erlang.cookie文件
在容器启动时直接挂载一个$HOME/.erlang.cookie
文件到容器中去
创建一个自定义的erlang.cookie文件,注意修改文件的权限
也可以用docker secret
1 2 3 4 5
| # 自定义erlang.cookie文件内容 echo '123456' > erlang.cookie # 修改文件所有者为容器内的rabbitmq用户,并且修改读写权限为0600 chmod 0400 erlang.cookie chown 999:999 erlang.cookie
|
- 创建网桥和容器,并把文件挂载到容器内部去
1 2 3 4 5 6 7
| # 创建网桥 docker network create --driver=bridge rabbitmq # 创建容器 # $(pwd)/erlang.cookie代表上一步在当前目录创建的erlang.cookie文件 docker run -d --name=rabbitmq-1 --hostname=rabbitmq-1 -v $(pwd)/erlang.cookie:/var/lib/rabbitmq/.erlang.cookie:ro --network=rabbitmq rabbitmq:3.9.15-management docker run -d --name=rabbitmq-2 --hostname=rabbitmq-2 -v $(pwd)/erlang.cookie:/var/lib/rabbitmq/.erlang.cookie:ro --network=rabbitmq rabbitmq:3.9.15-management docker run -d --name=rabbitmq-3 --hostname=rabbitmq-3 -v $(pwd)/erlang.cookie:/var/lib/rabbitmq/.erlang.cookie:ro --network=rabbitmq rabbitmq:3.9.15-management
|
- 建立集群
1 2 3
| # 把rabbitmq-2和rabbitmq-3加入集群 docker exec -it rabbitmq-2 /bin/bash -c "rabbitmqctl stop_app && rabbitmqctl join_cluster rabbit@rabbitmq-1 && rabbitmqctl start_app" docker exec -it rabbitmq-3 /bin/bash -c "rabbitmqctl stop_app && rabbitmqctl join_cluster rabbit@rabbitmq-1 && rabbitmqctl start_app"
|
- 进入rabbitmq-1容器前端管理页面
使用--erlang-cookie
显式覆盖erlang cookie(最方便)
需要用到RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS
这个环境变量,假设想要设置的erlang cookie为123456
- 创建网桥和容器
1 2 3 4 5 6
| # 创建网桥 docker network create --driver=bridge rabbitmq # 创建容器 docker run -d --name=rabbitmq-1 --hostname=rabbitmq-1 -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie 123456" --network=rabbitmq rabbitmq:3.9.15-management docker run -d --name=rabbitmq-2 --hostname=rabbitmq-2 -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie 123456" --network=rabbitmq rabbitmq:3.9.15-management docker run -d --name=rabbitmq-3 --hostname=rabbitmq-3 -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie 123456" --network=rabbitmq rabbitmq:3.9.15-management
|
- 建立集群
1 2 3
| # 需要使用--erlang-cookie显式指定erlang cookie docker exec -it rabbitmq-2 /bin/bash -c "rabbitmqctl stop_app --erlang-cookie '123456' && rabbitmqctl join_cluster rabbit@rabbitmq-1 --erlang-cookie '123456' && rabbitmqctl start_app --erlang-cookie '123456'" docker exec -it rabbitmq-3 /bin/bash -c "rabbitmqctl stop_app --erlang-cookie '123456' && rabbitmqctl join_cluster rabbit@rabbitmq-1 --erlang-cookie '123456' && rabbitmqctl start_app --erlang-cookie '123456'"
|
- 进入rabbitmq-1容器前端管理页面