前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ集群搭建

RabbitMQ集群搭建

作者头像
jaychou
发布2022-12-26 14:51:33
5690
发布2022-12-26 14:51:33
举报
文章被收录于专栏:全栈开发笔记全栈开发笔记

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

其余两台也是相同操作

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月8日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RabbitMQ集群搭建
    • 附录:
      • 准备工作
    • 一.创建三个RabbitMQ容器
      • 二.进入容器
        • 三.安装WEB页面
          • 四.开启镜像集群
            • 五.安装延迟队列
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档