【愚公系列】2022 年 03 月 Docker 容器 RabbitMQ 集群的搭建
前言
RabbitMQ 这款消息队列中间件产品本身是基于 Erlang 编写,Erlang 语言天生具备分布式特性(通过同步 Erlang 集群各节点的 magic cookie 来实现)。
因此,RabbitMQ 天然支持 Clustering。这使得 RabbitMQ 本身不需要像 ActiveMQ、Kafka 那样通过 ZooKeeper 分别来实现 HA 方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。下面先来看下 RabbitMQ 集群的整体方案:
一、RabbitMQ 集群的搭建
1.拉取镜像
注意使用后缀为"-management"的镜像版本,是包含网页控制台的。
二、RabbitMQ 的配置
1.启动 RabbitMQ
参数说明:
-d 后台进程运行
hostname RabbitMQ 主机名称
name 容器名称
-p port:port 本地端口:容器端口
-p 15672:15672 http 访问端口
-p 5672:5672 amqp 访问端口
启动完成之后,使用:docker ps 查看程序运行情况。
使用:http://宿主ip:15672
访问,用户名密码使用默认:guest/guest.
这样我们就可以使用,http://宿主 ip:15672 和 http://宿主 ip:15673 进行访问了,默认账号密码依旧是 guest/guest
2.搭建 RabbitMQ 集群
2.1 运行容器
注意点:
多个容器之间使用“--link”连接,此属性不能少。
Erlang Cookie 值必须相同,也就是 RABBITMQ_ERLANG_COOKIE 参数的值必须相同。
2.2 配置节点到集群
物理节点
内存节点 1
内存节点 2
2.3 配置成功
配置成功会出现如图三个节点
总结
1.Erlang Cookie 的作用
因为 RabbitMQ 是用 Erlang 实现的,Erlang Cookie 相当于不同节点之间相互通讯的秘钥,Erlang 节点通过交换 Erlang Cookie 获得认证。只需要保证每个节点 Erlang Cookie 相同就好
2.Erlang Cookie 的位置
Erlang Cookie 的路径就是“/var/lib/rabbitmq/.erlang.cookie”。
版权声明: 本文为 InfoQ 作者【愚公搬代码】的原创文章。
原文链接:【http://xie.infoq.cn/article/867a603512be970c05e400e26】。文章转载请联系作者。
评论