下载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

最新文章

  1. 如何在win7上安装ant-design
  2. WinForm开发框架【细化权限至操作按钮】
  3. ZooKeeper开发手册中文翻译(转)
  4. Mybatis多参传递的四种解决方案
  5. Android 编程下Touch 事件的分发和消费机制
  6. TextKit学习(三)NSTextStorage,NSLayoutManager,NSTextContainer和UITextView
  7. iOS: 属性声明strong和retain竟然不一样
  8. 不同框架实现的WebService的服务端获取HttpServletRequest的方法
  9. kafka安装与使用
  10. css属性之appearance
  11. 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询
  12. oracle的unique约束
  13. mongo db 启动停止
  14. Couchbase 中的分布式储存
  15. javaweb学习总结(五)——Servlet开发(一)(转)
  16. Python:从入门到实践--第五章--if语句--练习
  17. linux shutdown命令以及参数详解
  18. 荧光激活细胞分选( FACS)
  19. Spring Boot使用layui的字体图标时无法正常显示 解决办法
  20. OpenAI Gym

热门文章

  1. 【模板】KD-tree
  2. 干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)
  3. PIE SDK Alpha通道数据渲染
  4. input或者el-cascader的输入框随输入内容宽度自适应
  5. 【转载】C#的ArrayList使用Contains方法判断是否包含某个元素
  6. Linux安装node环境
  7. maven 学习---Maven本地资源库
  8. Go语言学习——三分钟看透iota
  9. Linux的DNS正向解析部署
  10. <code> 标签 让一段计算机代码显示在网页中