选择rabbitmq镜像文件
选择那些带有management版本的镜像,刚开始不了解花费了很长时间没有搭建成功,查看资料才知道有的镜像只适合单机搭建,只有带management的才能够搭建集群。镜像地址:https://hub.docker.com/_/rabb...
下载rabbitmq镜像文件:
docker pull rabbitmq:3.8.3-management
查看镜像文件
docker images
创建三个容器
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 直接查看现在节点分布情况。
由上图可以看出,三个节点还没有真正发生关联。为了集群内能够相互访问,需要配置hosts文件。三个容器的hosts文件要配置的一样,如下图所示。
vim /etc/hosts
集群容器关联
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。