- 环境版本
linux发行版本:centos linux 7
linux内核:Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
docker:17.05.0-ce
rabbitmq:3.7.14
- docker中安装RabbitMq
a.查找rabbitmq版本
docker search RabbitMq
b.下载rabmitmq
docker pull rabbitmq
如果下载带管理界面的用命令:docker pull rabbitmq:3-management
c.按装查看已下载到本地的rabmitmq安装文件
docker images rabbitmq -
设置hostname
hostnamectl set-hostname mydocker1
添加端口号
firewall-cmd --permanent --add-port=4369/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --reload安装运行rabbitmq
docker run -d --hostname mydocker1 --add-host="mydocker1":10.1.7.203 --add-host="mydocker2":10.1.7.202 --name myrabbit1 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management
参数说明:
--add-host :往docker容器的host文件加入ip映射;
--name :创建的容器名
-p :开发程序所需的端口号
-e :设置环境变量 (集群机器的RABBITMQ_ERLANG_COOKIE值必须一致)
b. 主机二
hostnamectl set-hostname mydocker2
添加端口号
firewall-cmd --permanent --add-port=4369/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --reload
安装运行rabbitmqdocker run -d --hostname mydocker2 --add-host="mydocker1":10.1.7.203 --add-host="mydocker2":10.1.7.202 --name myrabbit2 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management
c.在把主机二与加入机一的集群
docker exec -it myrabbit1 /bin/bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@mydocker2
rabbitmqctl start_app
exitd.高可用集群配置镜像队列同步
docker exec -it myrabbit1 bash
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
exit
e.通过不同机器的集群,再配置高可用镜像队列同步后,多台机器所处理的消自己队列是相互同步的,这样只要消息发到集群服务器后每机器都同步着完整的消息数据,只要弄个代理有服务提供个统一的访问入口,再有代理自动转接访问可惟的集群服务器,这样集群中只要有一台机器是功能还是正常的,就能提供正常的服务
服务器203发送测试消息服务202的节点马上就同步203储存的消息
-
扩展
针对已有的rabbtimq服务
修改程序的RABBITMQ_ERLANG_COOKIE值
进入容器中修改/root/.erlang.cookie文件
修改容器的host文件回入ip映射
进入容器中修改/etc/hosts文件