下载RabbitMQ镜像

  • 镜像地址
    RabbitMQ Docker官方认证镜像地址:https://hub.docker.com/_/rabbitmq
  • 安装命令
    安装之前,切记把Docker Hub设置为阿里云的加速,方便安装。
    docker pull rabbitmq:3.7.-management

    注意使用后缀为"-management"的镜像版本,是包含网页控制台的。

  • 查看安装

    使用命令:docker images查看下载的镜像,如下图所示:

启动RabbitMQ

docker run -d --hostname localhost --name myrabbit -p : -p : rabbitmq:3.7.-management

参数说明:

-d 后台进程运行
--hostname RabbitMQ主机名称
--name 容器名称
-p port:port 本地端口:容器端口
-p : http访问端口
-p : amqp访问端口

启动完成之后,使用:docker ps 查看程序运行情况。

使用:http://宿主ip:15672 访问,用户名密码使用默认:guest/guest.

启动多个RabbitMQ

docker run -d --hostname localhost --name myrabbit -p : -p : rabbitmq:3.7.-management
docker run -d --hostname localhost2 --name myrabbit2 -p : -p : rabbitmq:3.7.-management

这样我们就可以使用,http://宿主ip:15672 和 http://宿主ip:15673 进行访问了,默认账号密码依旧是guest/guest.

搭建RabbitMQ集群

步骤一:安装RabbitMQ

具体的参数含义,参见上文“启动RabbitMQ”部分。

#集群1
docker run -d --hostname rabbit1 --name myrabbit1 -p : -p : -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.7.-management
#集群2
docker run -d --hostname rabbit2 --name myrabbit2 -p : -p : -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' --link myrabbit1:rabbit1 rabbitmq:3.7.-management
#集群3
docker run -d --hostname rabbit3 --name myrabbit3 -p : -p : -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 rabbitmq:3.7.-management

注意点:

  1. 多个容器之间使用“--link”连接,此属性不能少;
  2. Erlang Cookie值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文“配置相同Erlang Cookie”部分;

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

  • 设置节点1:

    docker exec -it myrabbit1 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    exit
  • 设置节点2,加入到集群:
    docker exec -it myrabbit2 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit1
    rabbitmqctl start_app
    exit

    参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。

  • 设置节点3,加入到集群:
    docker exec -it myrabbit3 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit1
    rabbitmqctl start_app
    exit

    设置好之后,使用http://物理机ip:15672 进行访问了,默认账号密码是guest/guest,效果如下图:

    启动了3个节点,1个磁盘节点和2个内存节点。

配置相同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 容器名称”查看,如下图:

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

    注意:每个人的erlang cookie位置可能不同,一定要查看自己的home dir路径。

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

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

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

    容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录
    物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录
    设置Erlang Cookie文件权限:chmod  /var/lib/rabbitmq/.erlang.cookie

Docker环境下的前后端分离项目部署与运维(八)使用Docker部署RabbitMQ集群的更多相关文章

  1. Docker环境下的前后端分离项目部署与运维

    本教程将从零开始部署一个前后端分离的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能.高负载.高可用的部署方案.包括了MySQL集群.Redis集群.负载均衡.双机 ...

  2. Docker环境下的前后端分离项目部署与运维(六)搭建MySQL集群

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信 ...

  3. Docker环境下的前后端分离项目部署与运维(九)后端项目部署与负载均衡

    数据库准备 建立数据库 renren_fast ,然后运行renrenfast项目中的db文件夹内的脚本 -- 菜单 CREATE TABLE `sys_menu` ( `menu_id` bigin ...

  4. Docker环境下的前后端分离项目部署与运维(七)Redis高速缓存

    Redis高速缓存 利用内存保存数据,读写速度远超硬盘:可以减少I/O操作,降低I/O压力. 发红包.抢红包的数据可以存在高速缓存中,加快处理速度,不需要经过数据库 淘宝首页一些优惠活动商品等热数据可 ...

  5. Docker环境下的前后端分离项目部署与运维(十一)Docker Swarm技术

    Docker Swarm技术 docker swarm技术(之前的docker集群都是在 一个虚拟主机上的,但是如果这个主机挂掉了over了,docker技术就是多个虚拟主机形成一个集群) Swarm ...

  6. Docker环境下的前后端分离项目部署与运维(十二)使用Portainer管理Docker

    安装 docker hub地址:https://hub.docker.com/r/portainer/portainer/ # 每台服务器都要安装 docker pull portainer/port ...

  7. 【Docker】1、 前后端分离项目 下载启动运行

    人人开源前后端分离项目下载与配置 文章目录 人人开源前后端分离项目下载与配置 前后端分离框架介绍 后端项目下载与配置 1.renren-fast后台项目介绍 2.开发环境搭建 3.下载后端renren ...

  8. centos7上用docker搭建简单的前后端分离项目

    1. 安装docker Docker 要求 CentOS 系统的内核版本高于 3.10 ,首先验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核版本 使 ...

  9. Window下,前后端分离项目,登录权限验证中的,Redis相关操作

    [1]官网下载Redis(解压版) https://redis.io/download [2]切换到目录下打开DOS,执行指令启动Redis redis-server.exe redis.window ...

随机推荐

  1. W tensorflow/core/util/ctc/ctc_loss_calculator.cc:144] No valid path found 或 loss:inf的解决方案

    基于Tensorflow和Keras实现端到端的不定长中文字符检测和识别(文本检测:CTPN,文本识别:DenseNet + CTC),在使用自己的数据训练这个模型的过程中,出现如下错误,由于问题已经 ...

  2. 关于eclipse SE版本不支持建立web工程的问题

    关于eclipse SE版本不支持建立web工程的问题 我们会发现 JAVA eclipse SE版本无法建立 Web 程序的问题...... 最好的解决方法就是下载一个myeclipse 或 Jav ...

  3. R数据挖掘 第三篇:聚类的评估(簇数确定和轮廓系数)和可视化

    在实际的聚类应用中,通常使用k-均值和k-中心化算法来进行聚类分析,这两种算法都需要输入簇数,为了保证聚类的质量,应该首先确定最佳的簇数,并使用轮廓系数来评估聚类的结果. 一,k-均值法确定最佳的簇数 ...

  4. Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理

    Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理   本文链接:https://blog.csdn.net/puhaiyang/article/details/78146620 ...

  5. .Net IOC框架入门之——Autofac

    一.简介  Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个 目的 1.依赖注入的目的是为了解耦.2.不依赖于具体类,而依赖抽象类或者接口,这叫依赖倒置.3.控制反转即IoC ...

  6. Spring IOC 复习

    Inversion of Control 将创建对象的权利交给框架,包括DI(Dependency Injection,依赖注入)和DL(Dependency Lookup,依赖查找),能削减计算机程 ...

  7. 洛谷 P1002过河卒

    洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...

  8. vue-cli的安装及版本查看更新

    vue-cli安装 npm install vue-cli -g vue-cli的版本查看 vue -V vue-cli的3.0+以后使用的不是vue-cli了,如果用以上的安装命令安装的并不是最新版 ...

  9. 攻防世界-web -高手进阶区-PHP2

    题目 首先发现源码泄露 /index.phps 查看源代码 即: <?php if("admin"===$_GET[id]) { echo("<p>no ...

  10. linux防火墙和SELinux

    1. 关闭防火墙 永久性生效 开启:chkconfig iptables on 关闭:chkconfig iptables off 即时生效 开启:service iptables start 关闭: ...