• 搭建RabbitMQ集群(Docker)


    前一篇搭建RabbitMQ集群(通用)只是把笔记直接移动过来了,因为我的机器硬盘已经满了,实在是开不了那么虚拟机。

    还好,我的Linux中安装了Docker,这篇文章就简单介绍一下Docker中搭建RabbitMQ集群吧。当然,理念还是通用的,包括命令啥的。只是操作方式有所不同而已。

    我将在今后的Docker系列文章中介绍Docker的仓库、镜像、容器等,这里不做过多的介绍。

    我的Docker已经安装3.7.8-management镜像  *带management后缀的镜像版本,支持网页控制台。

    1)、创建多个RabbitMQ容器

      ①

    docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.7.8-management

      ②

    docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 -p 15673:15672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.7.8-management

      ③

    docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 -p 15674:15672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.7.8-management

      *

      --link  连接多个容器

      -d  后台进程运行

      --hostname  RabbitMQ主机名称

      --name  容器名称

      -p port:port  本地端口:容器端口

      -e  参数设置

    2)、将RabbitMQ节点加入到集群中

      ①

    docker exec -it myrabbit1 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    exit

      ②

      

    docker exec -it myrabbit2 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit1
    rabbitmqctl start_app
    exit

      ③

    docker exec -it myrabbit3 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit1
    rabbitmqctl start_app
    exit

    *  --ram  表示设置为内存节点,忽略该参数则默认为磁盘节点。

    使用http://ip:15672 进行访问了,账号密码默认为guest&guest

     补充:  

      如何将已经运行的多台RabbitMQ部署为集群?

        1.同步它们之间的erlang cookie

        RabbitMQ是通过Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。

          ①通过RabbitMQ容器启动日志里面的home dir路径作为根路径获取Erlang Cookie所在位置。使用:“docker logs 容器名称/ID”查看

          

              所以Erlang Cookie的全部路径就是“/var/lib/rabbitmq/.erlang.cookie”。      

          ②复制Erlang Cookie到其他RabbitMQ节点    

          获取到第一个RabbitMQ的Erlang Cookie之后,只需要把这个文件复制到其他RabbitMQ节点即可。

          物理机和容器之间复制命令如下:

        •     容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录
        •     物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录

          设置Erlang Cookie文件权限:“chmod 600 /var/lib/rabbitmq/.erlang.cookie”。

          ③将节点加入集群

  • 相关阅读:
    企业IT管理员IE11升级指南【7】—— Win7和Win8.1上的IE11功能对比
    Microsoft Azure Web Sites应用与实践【3】—— 通过Visual Studio Online在线编辑Microsoft Azure 网站
    Microsoft Azure Web Sites应用与实践【2】—— 通过本地IIS 远程管理Microsoft Azure Web Site
    万以内的数字转繁体
    你的生产力工具集
    nodejs保存图片至本地
    设置input 中placeholder的样式
    微信支付报调用支付JSAPI缺少参数: sign
    vuepress项目 配置/使用/部署 markdown语法
    移动端自适应js
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10402607.html
Copyright © 2020-2023  润新知