基于Docker部署RabbitMQ集群

  • Post author:
  • Post category:其他




一、使用集群的原因



使用集群的原因

​ 最开始我们介绍了如何安装及运行

RabbitMQ

服务, 不过这些是单机版的, 无法满足目前真实应用的要求. 如果

RabbitMQ

服务器遇到

内存崩溃



机器掉电

或者

主板故障

等情况, 该怎么办? 单台

RabbitMQ

服务器可以满足每秒

1000

条消息的吞吐量, 那么如果应用需要

RabbitMQ

服务满足每秒

10 万

条消息的吞吐量呢? 购买昂贵的服务器来增强单机

RabbitMQ

的性能显得捉襟见肘, 搭建一个

RabbitMQ

集群才是解决实际问题的关键 .



二、集群搭建




第一步、

查看本地所有的镜像

[root@HgwServer ~]# docker images

在这里插入图片描述



第二步、

创建映射数据卷目录


创建文件夹 :

[root@HgwServer soft]# pwd
/home/soft
[root@HgwServer soft]# mkdir rabbitmqcluster
[root@HgwServer soft]# cd rabbitmqcluster
[root@HgwServer rabbitmqcluster]# mkdir rabbitmq01 rabbitmq02 rabbitmq03


创建数据卷 :

[root@HgwServer rabbitmqcluster]# docker volume create rabbit01
[root@HgwServer rabbitmqcluster]# docker volume create rabbit02
[root@HgwServer rabbitmqcluster]# docker volume create rabbit03


查看指定 数据卷 的信息

docker inspect 数据卷的名称


复制红框内的目录


在这里插入图片描述



第三步、

启动rabbitmq容器

[root@HgwServer rabbitmqcluster]# docker run -d --hostname rabbitmq01 --name rabbitmqCluster01 -v /var/lib/docker/volumes/rabbit01/_data -p 15672:15672 -p 562:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' rabbitmq:3.8.14-management

[root@HgwServer rabbitmqcluster]# docker run -d --hostname rabbitmq02 --name rabbitmqCluster02 -v /var/lib/docker/volumes/rabbit02/_data -p 15673:15672 -p 563:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie'  --link rabbitmqCluster01:rabbitmq01 rabbitmq:3.8.14-management

[root@HgwServer rabbitmqcluster]# docker run -d --hostname rabbitmq03 --name rabbitmqCluster03 -v /var/lib/docker/volumes/rabbit03/_data -p 15674:15672 -p 564:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie'  --link rabbitmqCluster01:rabbitmq01 --link rabbitmqCluster02:rabbitmq02  rabbitmq:3.8.14-management


主要参数 :


  • -p 15672:15672

    management 界面管理访问端口

  • -p 5672:5672

    amqp 访问端口

  • --link

    容器之间连接

  • Erlang Cookie

    值必须相同,也就是一个集群内 RABBITMQ_ERLANG_COOKIE 参数的值必须相同。因为 RabbitMQ 是用Erlang实现的,Erlang Cookie 相当于不同节点之间通讯的密钥,Erlang节点通过交换 Erlang Cookie 获得认证。

    在这里插入图片描述

    启动容器成功后,读者可以访问

    自己的ip+15672,

    账号/密码:guest / guest



第四步、

加入RabbitMQ节点到集群


  1. 设置节点1 :
[root@HgwServer rabbitmqcluster]# docker exec -it rabbitmqCluster01 bash
root@rabbitmq01:/# rabbitmqctl stop_app
root@rabbitmq01:/# rabbitmqctl reset
root@rabbitmq01:/# rabbitmqctl start_app
root@rabbitmq01:/# exit

  1. 设置节点2 , 加入到集群 :
[root@HgwServer rabbitmqcluster]# docker exec -it rabbitmqCluster02 bash
root@rabbitmq02:/# rabbitmqctl stop_app
root@rabbitmq02:/# rabbitmqctl reset
root@rabbitmq02:/# rabbitmqctl join_cluster --ram rabbit@rabbitmq01
root@rabbitmq02:/# rabbitmqctl start_app
root@rabbitmq02:/# exit
  1. 设置节点3 , 加入到集群 :
[root@HgwServer rabbitmqcluster]# docker exec -it rabbitmqCluster03 bash
root@rabbitmq03:/# rabbitmqctl stop_app
root@rabbitmq03:/# rabbitmqctl reset
root@rabbitmq03:/# rabbitmqctl join_cluster --ram rabbit@rabbitmq01
root@rabbitmq03:/# rabbitmqctl start_app
root@rabbitmq03:/# exit


主要参数 :


--ram

表示设置为内存节点,忽略次参数默认为磁盘节点。该配置启动了3个节点,1个磁盘节点和2个内存节点。


执行上述操作


这时候 再查看 ip:15672

这时候 再查看 ip:15673

这时候 再查看 ip:15674

在这里插入图片描述



版权声明:本文为m0_49183244原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。