美文网首页
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