选择rabbitmq镜像文件

选择那些带有management版本的镜像,刚开始不了解花费了很长时间没有搭建成功,查看资料才知道有的镜像只适合单机搭建,只有带management的才能够搭建集群。镜像地址:https://hub.docker.com/_/rabb...

image.png

下载rabbitmq镜像文件:

docker pull rabbitmq:3.8.3-management

查看镜像文件

docker images

image.png

创建三个容器

docker run -d --name yx_rabbitmq1 -p 5672:5672 -p 15672:15672 --hostname rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='rabbitmq' 867da7fcdf92

docker run -d --name yx_rabbitmq2 -p 5673:5672 -p 15673:15672 --link yx_rabbitmq1:rabbitmq1 --hostname rabbitmq2 -e RABBITMQ_ERLANG_COOKIE='rabbitmq' 867da7fcdf92

docker run -d --name yx_rabbitmq3 -p 5674:5672 -p 15674:15672 --link yx_rabbitmq2:rabbitmq2 --hostname rabbitmq3 -e RABBITMQ_ERLANG_COOKIE='rabbitmq' 867da7fcdf92
PS: 同一个集群的RABBITMQ_ERLANG_COOKIE值需要设置一样,否则后边会出问题。这里不做详细讲解,有兴趣的话请看我下一期文章。
run 多个容器可以通过--link去关联其它rabbitmq节点,--link {容器名}:hostname

测试节点

在浏览器输入 http://localhost:15672 直接查看现在节点分布情况。

image.png

由上图可以看出,三个节点还没有真正发生关联。为了集群内能够相互访问,需要配置hosts文件。三个容器的hosts文件要配置的一样,如下图所示。

vim /etc/hosts

image.png

集群容器关联

1.重置yx_rabbitmq1节点
进入容器yx_rabbitmq1

docker exec -it yx_rabbitmq1 /bin/bash

重置容器 yx_rabbitmq1

rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app

2.设置节点yx_rabbitmq2,将其加入到集群:
进入容器yx_rabbitmq2

docker exec -it yx_rabbitmq2 /bin/bash

节点yx_rabbitmq2与节点yx_rabbitmq1进行关联

rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbit@rabbit1 && rabbitmqctl start_app

3.设置节点yx_rabbitmq3,加入到集群:
进入容器yx_rabbitmq3

docker exec -it yx_rabbitmq3 /bin/bash

节点yx_rabbitmq3与节点yx_rabbitmq2进行关联

rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbit@rabbit2 && rabbitmqctl start_app

PS:理论上yx_rabbitmq3也应该与yx_rabbitmq1进行关联,它是master节点,但是在这里没有设置成功。最后节点yx_rabbitmq3与节点yx_rabbitmq2进行关联设置成功了,具体原因还不是很清楚。

--ram 表示设置为内存节点,忽略次参数默认为磁盘节点。该配置启动了3个节点,1个磁盘节点和2个内存节点。

设置好之后,使用 http://localhost:15672 进行访问,默认账号密码:guest/guest

image.png


杨帆
28 声望3 粉丝