docker 安装 rabbitmq 集群

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 、rabbitmq2rabbitmq3 使用的网络都是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.

 

再次访问页面:我这里IP192.168.89.139

http://192.168.89.139:15672/

用户名,密码就是我们最初运行命令设置的admin/123456

 

 

 

 

 

 

测试完成。

注意,开启web插件需要在所有机器上执行,否则,无法同步。

 rabbitmq-plugins enable rabbitmq_management

 

posted on 2020-04-09 16:33  陈惟鲜的博客  阅读(305)  评论(0编辑  收藏  举报

导航