RabbitMQ集群搭建-镜像模式

本文介绍了如何通过Docker容器搭建RabbitMQ集群,以实现高可用性和效率提升。首先,配置了两个RabbitMQ服务的yml文件,包括开启管理界面、设置Erlang匹配码、开放必要端口和定义主机名。接着,启动两台RabbitMQ服务,并在容器内执行命令将它们加入集群。最后,通过设置镜像模式确保数据在集群中的同步,从而达到高可用的目标。

RabbitMQ的镜像模式

RabbitMQ的集群
在这里插入图片描述

|

高可用

提升RabbitMQ的效率

搭建RabbitMQ集群

  • 准备两台虚拟机(克隆)

  • 准备RabbitMQ的yml文件

1、镜像中-management代表直接开启图形化界面,alpine表示最小安装,一般在正式环境中使用
2、RABBITMQ_ERLANG_COOKIE 相当于集群中的匹配码
3、集群中通信还要开通4369、25672端口
4、hostname 设置微服务的主机名称,与下方的extra_hosts 配合使用
rabbitmq1:

version: '3.1'
services:
  rabbitmq1:
    image: rabbitmq:3.8.5-management-alpine
    container_name: rabbitmq1
    hostname: rabbitmq1
    extra_hosts:
      - "rabbitmq1:192.168.11.32"
      - "rabbitmq2:192.168.11.33"
    environment: 
      - RABBITMQ_ERLANG_COOKIE=SDJHFGDFFS
    ports:
      - 5672:5672
      - 15672:15672
      - 4369:4369
      - 25672:25672

rabbitmq2:

version: '3.1'
services:
  rabbitmq2:
    image: rabbitmq:3.8.5-management-alpine
    container_name: rabbitmq2
    hostname: rabbitmq2
    extra_hosts:
      - "rabbitmq1:192.168.11.32"
      - "rabbitmq2:192.168.11.33"
    environment: 
      - RABBITMQ_ERLANG_COOKIE=SDJHFGDFFS
    ports:
      - 5672:5672
      - 15672:15672
      - 4369:4369
      - 25672:25672

准备完毕之后,启动两台RabbitMQ

启动效果
在这里插入图片描述
  • 让RabbitMQ服务实现join操作

    需要四个命令完成join操作

    让rabbitmq2 join rabbitmq1,需要进入到rabbitmq2的容器内部,去执行下述命令

    rabbitmqctl stop_app
    rabbitmqctl reset 
    rabbitmqctl join_cluster rabbit@rabbitmq1
    rabbitmqctl start_app
    

    执行成功后:

    执行成功后
    在这里插入图片描述

|

  • 设置镜像模式

    在指定的RabbitMQ服务中设置好镜像策略即可

    镜像模式
    在这里插入图片描述

|

<think>好的,用户想了解如何在RabbitMQ 4.1.0中开启镜像队列模式。首先,我需要回忆一下RabbitMQ镜像队列配置方法。镜像队列用于实现高可用性,通过将队列的消息复制到集群中的其他节点,确保即使某个节点故障,队列仍可用。 首先,用户提到的是4.1.0版本,可能是指4.1.0-beta.2,因为引用[1]提到了这个测试版。不过配置镜像队列的方式在不同版本之间可能不会有太大变化,但需要确认是否有新参数或改动。根据引用[2]和引用[3],RabbitMQ的配置通常通过rabbitmqctl命令或管理界面进行。 接下来,开启镜像队列需要设置策略(policy)。策略可以指定匹配的队列名称模式,并设置ha-mode、ha-params等参数。例如,ha-mode设置为all或exactly,ha-params指定节点数量。 用户可能需要具体的步骤,比如如何通过命令行或管理界面操作。根据引用[2],提到了rabbitmqctl的使用,所以应该包括使用该工具设置策略的命令。同时,引用[5]提到使用Docker运行RabbitMQ,可能需要考虑容器环境下的配置差异,比如命令执行方式。 另外,需要确保集群已经正确配置,因为镜像队列依赖于集群环境。如果用户尚未搭建集群,可能需要先指导集群配置,但用户的问题可能假设集群已经存在,只需要开启镜像模式。 可能的步骤包括: 1. 进入容器或RabbitMQ服务器所在环境。 2. 使用rabbitmqctl或管理界面创建策略。 3. 验证策略是否应用成功。 需要注意权限问题,比如用户是否具有管理员权限,以及策略参数是否正确。同时,提醒用户镜像队列对性能的影响,比如网络延迟和资源使用。 最后,根据引用[4]和[5],启动命令可能涉及参数配置,但镜像队列主要依赖策略设置,而不是启动参数。因此,重点应放在策略配置上。 总结回答结构:先说明镜像队列的作用,然后分步骤介绍命令行和界面两种方法,最后给出验证方法和注意事项。</think>在 RabbitMQ 4.1.0 中开启镜像队列模式需通过策略配置实现,以下是具体步骤: --- ### 一、镜像队列的作用 镜像队列通过将队列内容复制到集群中的多个节点实现高可用性,当主节点故障时,镜像节点会自动接管服务[^3]。 --- ### 二、配置镜像队列的两种方式 #### 方式 1:通过命令行配置 1. **进入容器或服务器环境** 若使用 Docker 部署(如引用[5]的启动命令),需先进入容器: ```bash docker exec -it rabbitmq bash ``` 2. **设置镜像队列策略** 使用 `rabbitmqctl` 工具创建策略,示例命令: ```bash rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to queues ``` - `^ha\.`:匹配所有以 `ha.` 开头的队列 - `ha-mode: all`:镜像到所有节点 - `ha-sync-mode: automatic`:自动同步消息 #### 方式 2:通过管理界面配置 1. **访问管理控制台** 通过浏览器访问 `http://服务器IP:15672`(端口映射参考引用[5]的 `-p 15672:15672`),使用配置的用户名密码登录(如引用[5]的 `tom/tom`)。 2. **添加策略** 导航至 **Admin > Policies > Add / update a policy**,填写以下字段: - **Name**: `ha-all` - **Pattern**: `^ha\.` - **Definition**: `ha-mode=all` 和 `ha-sync-mode=automatic` - **Apply to**: `Queues` --- ### 三、验证配置 1. **命令行验证** ```bash rabbitmqctl list_policies ``` 输出应包含已创建的 `ha-all` 策略。 2. **管理界面验证** 创建队列时若名称匹配 `^ha\.`(如 `ha.test`),队列详情中会显示 **Features: mirror**。 --- ### 四、注意事项 1. **集群要求** 镜像队列需在集群环境中生效,单节点部署无法启用[^3]。 2. **性能影响** 镜像队列会增加网络流量和磁盘负载,建议根据业务需求选择 `ha-mode`(如 `exactly` 指定镜像节点数)[^2]。 3. **同步模式** `ha-sync-mode: automatic` 会在新节点加入时自动同步数据;手动模式需通过 `rabbitmqctl sync_queue` 触发同步。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值