美文网首页
Docker搭建Rabbitmq集群

Docker搭建Rabbitmq集群

作者: 你值得拥有更好的12138 | 来源:发表于2019-06-26 19:30 被阅读0次

以下均为本人理解,欢迎大佬指出错误,小白希望深入理解请到官网

Rabbitmq的三种工作模式

1.单机模式

2.普通集群

1.每个节点元数据(队列结构等)相同,但是消息只在某个节点独一份

2.A节点有消息,B节点只有队列结构,当消费者连接B节点的时候,B与A就会通讯获取消息,然后从B口发给消费者

3.一个集群至少要有一个磁盘节点

4.如果有节点的的队列是持久化节点,当这个节点挂后,其他节点就不能定义已经创建过持久队列,只能等节点恢复
5.磁盘节点不等于他的队列都是持久化节点,莫混淆

3.镜像集群

1.节点会复制同步消息
2.它解决普通模式的消息丢失的问题
3.但是它也带来了集群内部的通讯消耗,造成速度慢的,资源消耗大的问题。

Docker普通集群搭建

Docker环境搭建

Ubuntu 18
Docker 使用官方deb安装
https://docs.docker.com/install/linux/docker-ce/ubuntu/

image.png

然后修改docker仓库地址为网易运
/etc/docker/daemon.json
如果没这个文件,自建。加入以下,然后重启

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
开始搭建

1.拉取镜像
拉取一个rabbitmq镜像
2.启动三个Rabbitmq节点

docker run -d --hostname rabbit1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management

docker run -d --hostname rabbit2 --name rabbitmq2 -p 5673:5672 --link rabbitmq1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management

docker run -d --hostname rabbit3 --name rabbitmq3 -p 5674:5672 --link rabbitmq1:rabbit1 --link rabbitmq2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management

它们在不同的端口上,并使用-link选项使用三个节点可以通讯。

配置

然后进入每一个节点重置节点,并加入集群。
首个节点不需要使用join cluster命令

docker exec -it rabbitmq1 bash #用bash的方式进行容器rabbitmq1
rabbitmqctl stop_app #停止rabbitmq应用
rabbitmqctl reset #重置
rabbitmqctl join_cluster --ram rabbit@rabbit1 #以内存节点的方式加入集群,首个节点不需要
rabbitmqctl start_app #启动应用 
exit #退出

注:rabbit@rabbit1,@符合前面的东西不要修改,三个节点都一样。以上命令有几个节点就执行几次

因为rabbitmq是基于erlang虚拟机运行,它们之间通过.erlang 的cookie通讯,所以需要保证三个节点的 “.erlang.cookie ”文件相同。


rabbitmq-homedir.png
docker cp rabbitmq1:/var/lib/rabbitmq/.erlang.cookie   ./.erlang.cookie  #从某个容器中考出文件到本地
docker cp ./.erlang.cookie  rabbitmq2:/var/lib/rabbitmq/.erlang.cookie  #从本地拷到某个容器上

验证

进入管理工具,看到一个磁盘节点两个内存节点


image.png

好,大功告成,再附加一些docker命令

附加:

命令 描述
docker logs -f nginx 查看日志命令
/var/lib/docker/containers/container_id/ 日志文件所在位置

相关文章

网友评论

      本文标题:Docker搭建Rabbitmq集群

      本文链接:https://www.haomeiwen.com/subject/wayccctx.html