14.1、下载
下载版本 3.8.3
# docker pull rabbitmq:3.8.3 |
14.2 安装
14.2.1配置挂载目录
数据挂载目录
# mkdir -p /home/soft/rabbitmq/data1 # mkdir -p /home/soft/rabbitmq/data2 # mkdir -p /home/soft/rabbitmq/data3 # chmod 777 /home/soft/rabbitmq/* |
14.2.2创建私有网络
// 用到静态IP 所以这里用-subnet配置。 直接用docker network create rabbitmqnet // 是不行的 # docker network create --subnet=172.18.0.0/16 rabbitmqnet // 查看网络 # docker network inspect rabbitmqnet |
14.2.3 安装
创建了3个容器,rabbitmq1 、rabbitmq2、rabbitmq3 使用的网络都是rabbitmqnet 。设置静态IP,同时指定其他容器的IP加入在host中。
docker run -d -p 5672:5672 -p 15672:15672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' -e RABBITMQ_DEFAULT_USER='admin' -e RABBITMQ_DEFAULT_PASS='123456' --net=rabbitmqnet --ip 172.18.0.10 --add-host=rabbit2:172.18.0.11 --add-host=rabbit3:172.18.0.12 -h rabbit1 -v /home/soft/rabbitmq/data1:/var/lib/rabbitmq --name=rabbitmq1 rabbitmq:3.8.3 docker run -d -p 5673:5672 -p 15673:15672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' -e RABBITMQ_DEFAULT_USER='admin' -e RABBITMQ_DEFAULT_PASS='123456' --net=rabbitmqnet --ip 172.18.0.11 --add-host=rabbit1:172.18.0.10 --add-host=rabbit3:172.18.0.12 -h rabbit2 -v /home/soft/rabbitmq/data2:/var/lib/rabbitmq --name=rabbitmq2 rabbitmq:3.8.3 docker run -d -p 5674:5672 -p 15674:15672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' -e RABBITMQ_DEFAULT_USER='admin' -e RABBITMQ_DEFAULT_PASS='123456' --net=rabbitmqnet --ip 172.18.0.12 --add-host=rabbit1:172.18.0.10 --add-host=rabbit2:172.18.0.11 -h rabbit3 -v /home/soft/rabbitmq/data3:/var/lib/rabbitmq --name=rabbitmq3 rabbitmq:3.8.3 |
14.2.4
查看安装容器状态
docker ps | grep rabbitmq |
14.3 加入、移除集群
14.3.1 加入集群
分别在rabbitmq2 、rabbitmq3上执行如下命令,将rabbitmq2 、rabbitmq3加入集群1当中,其中 rabbitmqctl join_cluster rabbit@rabbit1 这个意思是,加入集群 rabbit1 为对应的host文件中的rabbitmq1的 hostname。其他 rabbitmqctl join_cluster rabbit@ 这个是固定写法。
docker exec rabbitmq2 bash -c "rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbit1 && rabbitmqctl start_app" docker exec rabbitmq3 bash -c "rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbit1 && rabbitmqctl start_app" |
也可以进入容器后再执行,命令。
rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbit1 && rabbitmqctl start_app |
查看集群状态
主要是看节点
rabbitmqctl cluster_status |
如: 看到运行节点为2个 Running Nodes rabbit@rabbit1 rabbit@rabbit3 |
14.3.1 移除集群
进入到节点容器内,执行如下命令搞定。
rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app |
14.4 测试访问
通过宿主机IP+对外映射端口访问。
http://ip:15672 |
直接访问发现无法访问,此时应该是rabbitmq需要开启web界面访问插件才行,于是进入容器执行命令开启访问功能。
# docker exec -it rabbitmq1 /bin/bash # rabbitmq-plugins enable rabbitmq_management 即如果如下,表示插件加载成功: root@rabbit1:/# rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@rabbit1: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@rabbit1... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch started 3 plugins. |
再次访问页面:我这里IP为192.168.89.139
http://192.168.89.139:15672/ |
用户名,密码就是我们最初运行命令设置的admin/123456
测试完成。
注意,开启web插件需要在所有机器上执行,否则,无法同步。
rabbitmq-plugins enable rabbitmq_management