Docker搭建RabbitMQ集群

Docker安装

官网


RabbitMQ镜像下载及配置

此博文


集群搭建

  1. 首先,我们需要启动运行RabbitMQ

    docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq rabbitmq:latest

    参数说明:

    ​ -d:后台进程运行

    ​ --hostname:主机名称

    ​ -p:端口映射

    ​ 15672:http访问端口

    ​ 5672:AMQP访问端口

    ​ -v:文件映射

    ​ --name:容器名称

  2. 启动多个RabbitMQ

    docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq1 rabbitmq:latest
    docker run -d --hostname my-rabbit -p 5673:5672 -p 15673:15672 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq2 rabbitmq:latest

    这样我们就可以使用http://ip:15672http://ip:15673 进行访问,默认账号密码均为guest.


    搭建RabbitMQ集群

    步骤一:安装RabbitMQ;

    docker run -d --hostname my-rabbit1 --name my_rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:latest

    参数说明:

    ​ -e:设置环境变量

    docker run -d --hostname my-rabbit2 --name my_rabbitmq2 -p 5673:5672 --link my_rabbitmq1:my-rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:latest
    docker run -d --hostname my-rabbit3 --name my_rabbitmq3 -p 5674:5672 --link my_rabbitmq1:my-rabbit1 --link my_rabbitmq2:my-rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:latest

    参数说明:

    ​ --link:添加链接到另一个容器

    ***注意点:

    ​ 多个容器之间使用"--link"连接,此属性不能少;

    ​ Erlang Cookie值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文.

    步骤二:加入RabbitMQ节点到集群;

    设置节点1:

    docker exec -it my_rabbitmq1 /bin/bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    exit

    设置节点2:

    docker exec -it my_rabbitmq2 /bin/bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@my-rabbit1
    rabbitmqctl start_app
    exit

    设置节点3:

    docker exec -it my_rabbitmq3 /bin/bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@my-rabbit1
    rabbitmqctl start_app
    exit

    参数说明:

    ​ --ram:表示设置为内存节点,忽略次参数默认为磁盘节点.

    设置好之后,使用 http://ip:15672 进行访问,默认账号密码是guest/guest.


    配置相同Erlang Cookie

    有些特殊的情况,比如已经运行一段时间的几个单个物理机,我们在之前没有设置过相同的Erlang Cookie值,现在我们要把单个的物理机部署成集群,实现我们需要同步Erlang的Cookie值.

    1.为什么要配置相同的Erlang Cookie?

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

    2.Erlang Cookie的位置

    要想知道Erlang Cookie的位置,首先要取的RabbitMQ启动日志里面的home dir路径,作为根路径.可使用:

    docker logs 容器名称

    查看.

    3.复制Erlang Cookie到其他RabbitMQ节点

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

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

    ​ 容器复制文件到物理机:

    docker cp 容器名称:容器目录 物理机目录

    ​ 物理机复制文件到容器:

    docker cp 物理机目录 容器名称:容器目录

    设置Erlang Cookie文件权限:

    chmod 600 /var/lib/rabbitmq/.erlang.cookie

注意事项

按照以上步骤搭建完成后,每个RabbitMQ服务器均需手动开启rabbitmq_management插件,方可在浏览器中输入http://localhost:15672进入RabbitMQ管理界面,在其中可看到相关节点的信息.

如何开启插件

Docker搭建RabbitMQ集群的更多相关文章

  1. Docker:搭建RabbitMQ集群

    RabbitMQ原理介绍(一) RabbitMQ安装使用(二) RabbitMQ添加新用户并支持远程访问(三) RabbitMQ管理命令rabbitmqctl详解(四) RabbitMQ两种集群模式配 ...

  2. 搭建RabbitMQ集群(Docker)

    前一篇搭建RabbitMQ集群(通用)只是把笔记直接移动过来了,因为我的机器硬盘已经满了,实在是开不了那么虚拟机. 还好,我的Linux中安装了Docker,这篇文章就简单介绍一下Docker中搭建R ...

  3. Docker 构建 RabbitMQ 集群

    刚开始,关于RabbitMQ集群的搭建,我找到了这篇文章:Docker 安装 RabbitMQ 集群 从而找到了第三方的RabbitMQ集群容器 rabbitmq-server 但是这个容器只有3.6 ...

  4. RabbitMQ系列(五)使用Docker部署RabbitMQ集群

    概述 本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘. Windows10上Docker的安装 因为本人用的是Win ...

  5. Docker环境下的前后端分离项目部署与运维(八)使用Docker部署RabbitMQ集群

    下载RabbitMQ镜像 镜像地址RabbitMQ Docker官方认证镜像地址:https://hub.docker.com/_/rabbitmq 安装命令安装之前,切记把Docker Hub设置为 ...

  6. Docker 搭建 etcd 集群

    阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很 ...

  7. Docker搭建PXC集群

    如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...

  8. docker搭建etcd集群环境

    其实关于集群网上说的方案已经很多了,尤其是官网,只是这里我个人只有一个虚拟机,在开发环境下建议用docker-compose来搭建etcd集群. 1.拉取etcd镜像 docker pull quay ...

  9. docker 搭建zookeeper集群和kafka集群

    docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...

随机推荐

  1. Python 之反射和普通方式对比(模拟Web框架)

    先模拟一个web页面的选择不同输出不同 vim day8-7.py #!/usr/bin/python # -*- coding:utf-8 -*- import home import accoun ...

  2. ASP.NET IIS System.UnauthorizedAccessException: 对路径“C:\......xls”的访问被拒绝。

    问题: System.UnauthorizedAccessException: 对路径“C:\.....xls”的访问被拒绝. 背景: 项目中用到Excel导出功能,用的是Excel模板的方式来做,意 ...

  3. 在Ubuntu中添加和删除PPA的软件源

    PPA,英文全称为 Personal Package Archives,即个人软件包档案.是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launchpa ...

  4. IntelliJ IDEA学习记录

    一.下载 地址:官网下载地址 二.安装 运行安装程序,一路下一步.注意选择安装路径. 三.基本概念 project:相当于donet中的解决方案(solution),eclipse中的工作空间(wor ...

  5. 忽略Git仓库中已经存在的文件

    解决方案 使用Git bash进入到要忽略的文件所在的文件夹,执行以下命令即可 git update-index --assume-unchanged rebel.xml 参考 Ignore Git ...

  6. 【爬坑】python3+pyqt5+pyinstaller 打包成exe的各种问题

    windows系统+python3+pyqt5+pyinstaller打包,经常会出现各种打包异常情况.如果代码没有特别异常,那么综合原因,大抵都是这四个元素之间的匹配问题,引起的.作者:一心狮链接: ...

  7. Innodb引擎状态查看

    我们的MySQL数据库内的表一般都是Innodb表类型的. mysql>show engine  innodb status; (低版本用: show innodb status;)   === ...

  8. vue-moment的使用

    1.安装:npm install moment --save 2.导入:import moment from 'moment'; 3.定义全局时间过滤器:  Vue.filter('converDat ...

  9. 使用navicat mysql 远程连接数据库

    远程连接数据库,假设两台主机上都有navicat 客户端 远程主机A    ip地址:192.168.100.91  ,port  3306,数据库用户名 rootA   密码 123456A 本地主 ...

  10. PAT Waiting in Line[转载]

    //转自:https://blog.csdn.net/apie_czx/article/details/45537627 1014 Waiting in Line (30)(30 分)Suppose ...