RabbitMQ集群搭建
附录:
准备工作
centos服务器一台 docker
一.创建三个RabbitMQ容器
代码语言:javascript复制docker run -d --hostname rabbit01 --name mq01 -p 5571:5672 -p 15571:15672 -e RABBITMQ_ERLANG_COOKIE="javaboy_rabbitmq_cookie" rabbitmq:3-management
代码语言:javascript复制docker run -d --hostname rabbit02 --name mq02 --link mq01:mylink01 -p 5572:5672 -p 15572:15672 -e RABBITMQ_ERLANG_COOKIE="javaboy_rabbitmq_cookie" rabbitmq:3-management
代码语言:javascript复制docker run -d --hostname rabbit03 --name mq03 --link mq01:mylink02 --link mq02:mylink03 -p 5573:5672 -p 15573:15672 -e RABBITMQ_ERLANG_COOKIE="javaboy_rabbitmq_cookie" rabbitmq:3-management
二.进入容器
在宿主机上执行以下命令进入容器当中
代码语言:javascript复制docker exec -ti mq02 /bin/bash
然后执行
代码语言:javascript复制cat etc/hosts
查看hosts是否容器链接生效,如果有
代码语言:javascript复制xxx.xxx.xxx.x mylink01 rabbit01 mq01
字样那代表配置的容器连接已经生效了
然后执行以下命令将容器加入集群
代码语言:javascript复制rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbit01
rabbitmqctl start_app
接着输入以下命令查看集群状态
代码语言:javascript复制root@rabbit02:/# rabbitmqctl cluster_status
RABBITMQ_ERLANG_COOKIE env variable support is deprecated and will be REMOVED in a future version. Use the $HOME/.erlang.cookie file or the --erlang-cookie switch instead.
Cluster status of node rabbit@rabbit02 ...
Basics
Cluster name: rabbit@rabbit02
Disk Nodes
rabbit@rabbit01
rabbit@rabbit02
Running Nodes
rabbit@rabbit01
rabbit@rabbit02
Versions
rabbit@rabbit01: RabbitMQ 3.9.11 on Erlang 24.2
rabbit@rabbit02: RabbitMQ 3.9.11 on Erlang 24.2
Maintenance status
Node: rabbit@rabbit01, status: not under maintenance
Node: rabbit@rabbit02, status: not under maintenance
这样就表示已经加入集群了,然后进入mq03执行相同的操作
三.安装WEB页面
进入mq01 执行
代码语言:javascript复制rabbitmq-plugins enable rabbitmq_management
然后访问http://服务器IP:15571/ 输入账号密码输入guest进入页面,在首页的Nodes选项中可以看到创建的3个节点
四.开启镜像集群
进入WEB页面,点击Admin选项,点击右侧的Policies选项,再点击Add/update a policy
name随便输入一个名字就好了,Pattern输入^,Definition输入ha-mode=all ha-sync-mode=automatic,然后点击下面的add/update policy
参数含义如下:
Name: policy 的名称。 Pattern: queue 的匹配模式(正则表达式)。 Definition:镜像定义,主要有三个参数:ha-mode, ha-params, ha-sync-mode。 ha-mode:指明镜像队列的模式,有效值为 all、exactly、nodes。其中 all 表示在集群中所有的节点上进行镜像(默认即此);exactly 表示在指定个数的节点上进行镜像,节点的个数由 ha-params 指定;nodes 表示在指定的节点上进行镜像,节点名称通过 ha-params 指定。 ha-params:ha-mode 模式需要用到的参数。 ha-sync-mode:进行队列中消息的同步方式,有效值为 automatic 和 manual。 priority 为可选参数,表示 policy 的优先级。
集群的搭建也就结束
五.安装延迟队列
首先在https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases下载对应版本的延迟队列插件
下载完成之后上传至宿主机
执行
代码语言:javascript复制docker cp rabbitmq_delayed_message_exchange-3.10.2.ez mq01:/opt/rabbitmq/plugins/
docker cp rabbitmq_delayed_message_exchange-3.10.2.ez mq02:/opt/rabbitmq/plugins/
docker cp rabbitmq_delayed_message_exchange-3.10.2.ez mq03:/opt/rabbitmq/plugins/
上传插件到镜像容器
进入到mq01镜像当中
代码语言:javascript复制docker exec -ti mq01 /bin/bash
查看插件列表
代码语言:javascript复制rabbitmq-plugins list
开启插件支持
代码语言:javascript复制rabbitmq-plugins enable rabbitmq_delayed_message_exchange
退出容器
代码语言:javascript复制exit
重启容器
代码语言:javascript复制docker restart mq01
其余两台也是相同操作