RabbitMQ集群搭建

2022-12-26 14:51:33 浏览数 (1)

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

其余两台也是相同操作

0 人点赞