rabbitmq是目前消息队列比较热门的使用技术,这里它和其他几类技术的对比本文就不做赘述了。本文主要讲述在Docker下如何部署rabbitmq分布式集群。本文不讲述docker及rabbitmq镜像的安装下载。
一、前期准备
本文以两台服务器作为示例。服务器A的IP为192.168.1.10,服务器B的IP为192.168.1.11。为了后期管理更多docker配置方便,分别在A,B两台服务器里面新建docker目录,其结构示例如下:
cd /home/user/
mkdir docker
cd docker
mkdir rabbitmq
cd rabbitmq
touch hosts
vim hosts
进入刚创建好的hosts文件配置服务器映射,编辑好以后wq保存退出
192.168.1.10 rabbit1
192.168.1.11 rabbit2
二、在A服务器中启动已经下载好的rabbitmq镜像
docker run -d --privileged=true --net host --hostname rabbit1 --name rabbitmq1 -v /home/user/docker/rabbitmq:/var/lib/rabbitmq -v /home/user/docker/rabbitmq/hosts:/etc/hosts -e RABBITMQ_ERLANG_COOKIE='your erlang cookie' rabbitmq_bac
注意点:
1、加入--privileged=true是使docker容器真正具备该服务器的root权限,不添加此项有可能会导致容器目录无法挂载到本地。
2、两台服务器的RABBITMQ_ERLANG_COOKIE必须相同,否则无法将其加入到集群节点。 RABBITMQ_ERLANG_COOKIE的值可在容器的/var/lib/rabbitmq中的.erlang.cookie文件中查看,因为它是隐藏文件所以查看该文件时需要使用命令ls -a。然后使用more命令或者tail命令查看该文件保存的值。RABBITMQ_ERLANG_COOKIE对应的值就是该文本里面的值。同时为了使多台服务器的cookie相同,务必将其中一台服务器上的.erlang.cookie拷贝替换其他几台服务器上的文件。
三、在B服务器中启动已经下载好的rabbitmq镜像
docker run -d --privileged=true --net host --hostname rabbit2 --name rabbitmq2 -v /home/user/docker/rabbitmq:/var/lib/rabbitmq -v /home/user/docker/rabbitmq/hosts:/etc/hosts -e RABBITMQ_ERLANG_COOKIE='your erlang cookie' rabbitmq_bac
创建运行好容器之后,进入到容器内部将该rabbit节点加入到集群中。
docker exec -it rabbit2 /bin/bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
到此基本上一个rabbitmq分布式集群就搭建好了。
最后,我为什么会更喜欢docker的部署方式呢。对于一两台服务器,他的优势并不明显,但是当我们需要构建一个庞大的集群时他的优势就会体现出来,个人感受主要有以下几点:
1、部署安装快速便捷。写好docker脚本就能很快构建服务。
2、保持各服务器同一服务的版本及内容一致。docker的备份迁移就为我们很好的提供了该能力。我们可以把我们已经配置好的docker容器保存为镜像然后导出到本地形成我们自己的版本,然后再加载到其他服务器的docker中我们就能保证我们的服务版本是完全一致的。这也为我们上线提供了非常大的便利,同时也会使我们避免因版本或其他原因导致因为不一致导致的问题。
来源:CSDN
作者:小猿童鞋
链接:https://blog.csdn.net/abc1230456/article/details/104737981