DocKenr下部署高可用的多主机rabbitmq集群

  1. 环境版本
    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
     
  2. docker中安装RabbitMq
    a.查找rabbitmq版本
     docker search RabbitMq

    b.下载rabmitmq
     docker pull rabbitmq

    如果下载带管理界面的用命令:docker pull rabbitmq:3-management
    c.按装查看已下载到本地的rabmitmq安装文件
     docker images rabbitmq

  3. 设置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
     安装运行rabbitmq 

     docker 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
    exit

    d.高可用集群配置镜像队列同步


    docker exec -it myrabbit1 bash
    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    exit

    e.通过不同机器的集群,再配置高可用镜像队列同步后,多台机器所处理的消自己队列是相互同步的,这样只要消息发到集群服务器后每机器都同步着完整的消息数据,只要弄个代理有服务提供个统一的访问入口,再有代理自动转接访问可惟的集群服务器,这样集群中只要有一台机器是功能还是正常的,就能提供正常的服务
    服务器203发送测试消息
    服务202的节点马上就同步203储存的消息

  4. 扩展

针对已有的rabbtimq服务

修改程序的RABBITMQ_ERLANG_COOKIE值

进入容器中修改/root/.erlang.cookie文件

修改容器的host文件回入ip映射

进入容器中修改/etc/hosts文件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值