一、使用集群的原因
使用集群的原因
最开始我们介绍了如何安装及运行
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 :
[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
-
设置节点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
- 设置节点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