RabbitMQ多机多节点集群部署(下)

简介: RabbitMQ多机多节点集群部署

单机多节点部署

一、环境准备

  • 准备一台已经安装好RabbitMQ 的机器,安装方法见
    安装步骤
  • 10.10.1.41

二、启动RabbitMQ

  1. 在启动前,先修改RabbitMQ 的默认节点名(非必要),在/etc/rabbitmq/rabbitmq-env.conf增加以下内容
# RabbitMQ 默认节点名,默认是rabbit
NODENAME=rabbit1

2.RabbitMQ 默认是使用服务的启动的,单机多节点时需要改为手动启动,先停止运行中的RabbitMQ 服务

sudo systemctl stop rabbitmq-server

3.启动第一个节点

rabbitmq-server -detached

4.启动第二个节点

RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached

5.启动第三个节点

RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached

6.将rabbit2加入到集群

# 停止 rabbit2 的应用
rabbitmqctl -n rabbit2 stop_app
# 重置 rabbit2 的设置
rabbitmqctl -n rabbit2 reset
# rabbit2 节点加入到 rabbit1的集群中
rabbitmqctl -n rabbit2 join_cluster rabbit1 --ram
# 启动 rabbit2 节点
rabbitmqctl -n rabbit2 start_app

7.将rabbit3加入到集群

# 停止 rabbit3 的应用
rabbitmqctl -n rabbit3 stop_app
# 重置 rabbit3 的设置
rabbitmqctl -n rabbit3 reset
# rabbit3 节点加入到 rabbit1的集群中
rabbitmqctl -n rabbit3 join_cluster rabbit1 --ram
# 启动 rabbit3 节点
rabbitmqctl -n rabbit3 start_app

8.查看集群状态,看到{running_nodes,[rabbit3@node1,rabbit2@node1,rabbit1@node1]}说明节点已启动成功。

rabbitmqctl cluster_status

提示:在管理界面可以更直观的看到集群信息

三、防火墙添加端口

  • 需要将每个节点的端口都添加到防火墙
  1. 添加端口
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5673/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25673/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15673/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5674/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25674/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15674/tcp --permanent

2.重启防火墙

sudo firewall-cmd --reload

镜像队列模式集群

  • 镜像队列属于RabbitMQ 的高可用方案,见:https://www.rabbitmq.com/ha.html#mirroring-arguments
  • 通过前面的步骤搭建的集群属于普通模式集群,是通过共享元数据实现集群
  • 开启镜像队列模式需要在管理页面添加策略,添加方式:
ha-mode ha-params 说明
all (empty) 队列镜像到集群类所有节点
exactly count 队列镜像到集群内指定数量的节点。如果集群内节点数少于此值,队列将会镜像到所有节点。如果大于此值,而且一个包含镜像的节点停止,则新的镜像不会在其它节点创建。
nodes nodename 队列镜像到指定节点,指定的节点不在集群中不会报错。当队列申明时,如果指定的节点不在线,则队列会被创建在客户端所连接的节点上。
  1. 进入管理页面 -> Admin -> Policies(在页面右侧)-> Add / update a policy
  2. 在表单中填入:
  name: ha-all
Pattern: ^
Apply to: Queues
Priority: 0
Definition: ha-mode = all

参数说明
name: 策略名称,如果使用已有的名称,保存后将会修改原来的信息
Apply to:策略应用到什么对象上
Pattern:策略应用到对象时,对象名称的匹配规则(正则表达式)
Priority:优先级,数值越大,优先级越高,相同优先级取最后一个
Definition:策略定义的类容,对于镜像队列的配置来说,只需要包含3个部分: ha-modeha-paramsha-sync-mode。其中,ha-sync-mode是同步的方式,自动还是手动,默认是自动。ha-modeha-params 组合使用。组合方式如下:


  • 镜像队列模式相比较普通模式,镜像模式会占用更多的带宽来进行同步,所以镜像队列的吞吐量会低于普通模式
  • 但普通模式不能实现高可用,某个节点挂了后,这个节点上的消息将无法被消费,需要等待节点启动后才能被消费。
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
消息中间件 存储 负载均衡
RabbitMQ使用docker搭建集群并使用Haproxy实现负载均衡(多机镜像模式)
RabbitMQ使用docker搭建集群并使用Haproxy实现负载均衡(多机镜像模式)
467 0
RabbitMQ使用docker搭建集群并使用Haproxy实现负载均衡(多机镜像模式)
|
4月前
|
消息中间件 监控 Shell
RocketMQ-初体验RocketMQ(03)_RocketMQ多机集群部署
RocketMQ-初体验RocketMQ(03)_RocketMQ多机集群部署
59 0
|
9月前
|
消息中间件 运维 网络协议
rabbitmq 高可用集群部署踩坑
rabbitmq 高可用集群部署踩坑
246 0
|
11月前
|
消息中间件 存储 缓存
RabbitMQ 部署及配置详解(集群部署)
RabbitMQ 部署及配置详解(集群部署)
933 0
|
12月前
|
消息中间件 Linux Docker
RabbitMQ单机部署和集群部署
RabbitMQ单机部署和集群部署
132 0
|
12月前
|
消息中间件 Linux
rabbitmq在linux中实现多机多可用集群
rabbitmq在linux中实现多机多可用集群
|
消息中间件 运维 容灾
理想汽车大规模 Apache RocketMQ 集群部署最佳实践
作者:孙航达,理想汽车智能云部中间件开发工程师,目前主要负责 Apache RocketMQ、ShardingSphere Proxy、全量数据迁移中间件的开发和运维工作。
366 0
理想汽车大规模 Apache  RocketMQ 集群部署最佳实践
|
消息中间件 缓存 运维
从年末生产故障解锁RocketMQ集群部署的最佳实践
从年末生产故障解锁RocketMQ集群部署的最佳实践
从年末生产故障解锁RocketMQ集群部署的最佳实践
|
消息中间件 网络安全 数据安全/隐私保护
RabbitMQ多机多节点集群部署(上)
RabbitMQ多机多节点集群部署
249 0
|
9月前
|
消息中间件 Linux
centos7 yum快速安装rabbitmq服务
centos7 yum快速安装rabbitmq服务
140 0