第7章 RabbitMQ运维

RabbitMQ - SpringBoot集成版 - 开发+运维 创建交换机进行参数设置;创建队列进行参数设置;两者进行关联绑定提供者:通过RabbitTemplate,指定参数(交换机名称、路由键、消息)进行消息推送消费者:监听指定队列的消息消费者提供者的数据流转在节点的过程,涉及到了序列化,中间件已经帮我们处理。 阅读详情

第7章 RabbitMQ运维

7.1 集群搭建

在1.4节中,

RabbitMQ集群允许消费者和生产者在RabbitMQ单个节点崩溃的情况下继续运行,

不过RabbitMQ集群不能保证消息的万无一失,

但是不会备份消息(当然通过特殊的配置比如镜像队列可以解决这个问题,

不同于队列那样拥有自己的进程,交换器其实只是一个名称和绑定列表。当消息发布到交换器时,实际上是由所连接的信道将消息上的路由键同交换器的绑定列表进行比较,然后再路由消息。当创建一个新的交换器时,RabbitMQ所要做的就是将绑定列表添加到集群中的所有节点上。这样,每个节点上的信道都可以访问到新的交换器了。

介绍完这些预备知识,

7.1.1 多机多节点配置

多机多节点是针对下一节的单机多节点而言的,主要是指在每台机器中部署一个RabbitMQ服务节点,进而由多台机器组成一个RabbitMQ集群。在配置集群之前,需要根据1.4节的方法正确地安装RabbitMQ。

假设这里一共有三台物理主机,均已正确地安装了RabbitMQ,且主机名分别为node1、node2和node3。RabbitMQ集群对延迟非常敏感,应当只在本地局域网内使用。在广域网中不应该使用集群,而应该使用Federation或Shovel来代替。

接下来需要按照以下步骤执行。

第一步,配置各个节点的hosts文件,让各个节点都能互相识别对方的存在。比如在Linux系统中可以编辑/etc/hosts文件,在其上添加IP地址与节点名称的映射信息:

192.168.0.2 node1
192.168.0.3 node2
192.168.0.4 node3

第二步,编辑RabbitMQ的cookie文件,以确保各个节点的cookid文件使用的是同一个值。可以读取node1节点的cookie值,然后将其复制到node2和node3节点中。cookie文件默认路径为/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie。 cookie相当于密钥令牌,集群中的RabbitMQ节点需要通过交换密钥令牌以获得相互认证。

# node1 拷贝 cookie
[www@RabbitMQ-Node1 ~]$ sudo cat /var/lib/rabbitmq/.erlang.cookie


# node2 复制 cookie

# 增加 .erlang.cookie 文件的写权限
[www@RabbitMQ-Node2 ~]$ sudo chmod u+w /var/lib/rabbitmq/.erlang.cookie 

# 编辑 .erlang.cookie 文件,修改 cookie 为 node1 的cookie
[www@RabbitMQ-Node2 ~]$ sudo vim /var/lib/rabbitmq/.erlang.cookie 

# 恢复 .erlang.cookie 文件的只读权限
[www@RabbitMQ-Node2 ~]$ sudo chmod u-w /var/lib/rabbitmq/.erlang.cookie


# node3 复制 cookie

# 增加 .erlang.cookie 文件的写权限
[www@RabbitMQ-Node3 ~]$ sudo chmod u+w /var/lib/rabbitmq/.erlang.cookie 

# 编辑 .erlang.cookie 文件,修改 cookie 为 node1 的cookie
[www@RabbitMQ-Node3 ~]$ sudo vim /var/lib/rabbitmq/.erlang.cookie 

# 恢复 .erlang.cookie 文件的只读权限
[www@RabbitMQ-Node3 ~]$ sudo chmod u-w /var/lib/rabbitmq/.erlang.cookie

第三步,配置集群。配置集群有三种方式:通过 rabbitmqctl 工具配置;通过 rabbitmq.config 配置文件配置;通过 rabbitmq-autocluster 插件配置。这里主要讲的是通过rabbitmqctl工具的方式配置集群,这种方式也是最常用的方式。 其余两种方式在实际应用中用之甚少,所有不多做介绍。

首先启动node1、node2和node3这3个节点的RabbitMQ服务。

[www@RabbitMQ-Node1 ~]$ sudo rabbitmq-server -detached
[www@RabbitMQ-Node2 ~]$ sudo rabbitmq-server -detached
[www@RabbitMQ-Node3 ~]$ sudo rabbitmq-server -detached

这样,这3个节点目前都是以独立节点存在的单个集群。通过 rabbitmqctl cluster_status 命令查看各个节点的状态。

接下来为了讲3个节点组成一个集群,需要以node1节点为基准,将node2和node3节点加入node1节点的集群中。这3个节点是平等的,如果想调换彼此的加入顺序也未尝不可。首先将node2节点加入node1节点的集群中,需要执行如下4个命令步骤。

# 关闭APP
[www@RabbitMQ-Node2 ~]$ sudo rabbitmqctl stop_app
Stopping rabbit application on node rabbit@RabbitMQ-Node2 ...

# 重置APP数据库
[www@RabbitMQ-Node2 ~]$ sudo rabbitmqctl reset
Resetting node rabbit@RabbitMQ-Node2 ...

# 当前节点 node2 加入 node1 节点所在集群
[www@RabbitMQ-Node2 ~]$ sudo rabbitmqctl join_cluster rabbit@Lime-CentOS
Clustering node rabbit@RabbitMQ-Node2 with rabbit@Lime-CentOS

# 启动APP
[www@RabbitMQ-Node2 ~]$ sudo rabbitmqctl start_app
Starting node rabbit@RabbitMQ-Node2 ...

如此,node1节点和node2节点便处于同一个集群之中,我们在这两个节点上都执行 rabbitmqctl cluster_status 命令可以看到同样的输出。

最后将node3节点也加入node1节点所在的集群中,这3个节点组成了一个完整的集群。在任意一个节点中都可以看到如下的集群状态。

Cluster status of node rabbit@RabbitMQ-Node2 ...
Basics

Cluster name: limeRabbitMQ

Disk Nodes

rabbit@Lime-CentOS
rabbit@RabbitMQ-Node2

Running Nodes

rabbit@Lime-CentOS
rabbit@RabbitMQ-Node2

Versions

rabbit@Lime-CentOS: RabbitMQ 3.8.12 on Erlang 23.2.5
rabbit@RabbitMQ-Node2: RabbitMQ 3.8.14 on Erlang 23.2.7

Maintenance status

Node: rabbit@Lime-CentOS, status: not under maintenance
Node: rabbit@RabbitMQ-Node2, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit@Lime-CentOS, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@Lime-CentOS, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@Lime-CentOS, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@RabbitMQ-Node2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@RabbitMQ-Node2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

Feature flags

Flag: drop_unroutable_metric, state: enabled
Flag: empty_basic_get_metric, state: enabled
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled

现在已经完成了集群的搭建。如果集群中某个节点关闭了,那么集群会处于什么样的状态?

这里我们在node2节点上执行 rabbitmqctl stop 命令来主动关闭RabbitMQ应用。。。。

如果关闭了

在重试失败之后,

如果最后一个

一文读懂运维消息中间件之RabbitMQ 本文介绍了RabbitMQ消息队列系统,包括其核心概念、AMQP消息路由机制(direct、fanout、topic三种类型)以及单机部署方法。详细说明了在Linux环境下安装Erlang和RabbitMQ的完整步骤,包括环境配置、服务启动和用户管理。同时提供了常用的RabbitMQ管理命令,涵盖服务管理(启动/停止服务、插件管理)和数据处理(队列操作、用户权限设置等)两大类操作指南。这些内容为系统管理员和开发人员提供了RabbitMQ的实用运维参考。 阅读详情

相关推荐

中间件RabbitMQ之运维篇

RabbitMQ的rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循MozilaPublic License开源协议。采用Erlang实现的工业级的消息队列(MQ)服务器。AMQP(高级消息队列协议)是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API (例如JMS),AMQP客户端能够无视消息的来源任意发送和接受信息。AMQP的原始用途只是为金融界提供个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构

RabbitMQ 运维篇

RabbitMQ 运维篇 01、持久化机制 什么是RibbitMQ持久化:就把信息写入到磁盘的过程。 持久消息:把消息默认放在内存中是为了加快传输和消费的速度,存入磁盘是保证消息数据的持久化。 非持久消息:是指当内存不够用的时候,会把消息和数据转移到磁盘,但是重启以后非持久化队列消息就丢失。 **RabbitMQ的持久化队列分为:**1.队列持久化、2.消息持久化、3.交换机持久化 不论是持久化的消息还是非持久化的消息都可以写入到磁盘中,只不过非持久的是等内存不足的情况下才会被写入到磁盘中。 1、Ra

路边烧卖 2047

IKM 测试题 - Java SE 8 评估测试题目

IKM 测试题 - Java SE 8 评估测试题目

licheng11y的博客 1313

一文搞清RabbitMQ的部署运维及使用

快速了解并掌握RabbitMQ的使用

长剑之家 1419

手把手教你用神经网络优化电机控制:从Simulink仿真到实际部署

本文提供了一套完整的工程实践指南,详细讲解了如何将神经网络应用于电机控制,从Simulink仿真建模、轻量级网络设计,到关键的模型量化与代码生成,最终实现向DSP/FPGA硬件的实际部署。文章直面实时性、精度与资源限制等核心工程挑战,为工程师提供了从理论到落地的清晰路径和实用避坑策略。

weixin_29246195的博客 226

【算法实战】Keystone变换:从原理到MATLAB实现的距离走动校正

本文深入解析Keystone变换在雷达信号处理中的距离走动校正应用,从原理到MATLAB实现全面讲解。通过三种实现方法(DFT+IFFT、Sinc插值、Chirp-Z变换)的对比分析,结合实战案例展示如何有效解决高速目标导致的距离单元跨越问题,提升多普勒频谱聚焦质量。

weixin_29055699的博客 288

rabbitmq基础5——集群运维、集群管理命令,API接口工具

集群节点类型介绍、集群节点踢出、集群节点版本升级、集群迁移、集群管理命令、API接口工具rabbitmqadmin

百慕卿君博客 4212

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 557

RabbitMQ运维

RabbitMQ 集群是 RabbitMQ 实现高可用性(HA)、负载均衡和横向扩展的核心机制。RabbitMQ 的仲裁队列是⼀种基于 Raft ⼀致性算法实现的持久化、复制的FIFO队列。仲裁队列提供队列复制的能力,保障数据的高可用和安全性。使用仲裁队列可以在RabbitMQ节点间进行队列数据的复制,从而达到在⼀个节点宕机时,队列仍然可以提供服务的效果。

wk200411的博客 1324

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5019

YOLO11涨点优化:注意力魔改 | 引入Deformable Attention (可变形注意力),灵活感受野自适应复杂形变目标

Deformable Attention为YOLO11带来的不仅是2.6个百分点的mAP提升,更是一种全新的“形变感知”范式。标准卷积的固定感受野在非刚性目标、多尺度变化和遮挡场景下力不从心——Deformable Attention恰好填补了这一空白。从架构设计到代码实现,从竞品对比到部署方案,从生态工具到安全风险,本文覆盖了将Deformable Attention引入YOLO11所需的全部知识链路。

2601_95807009的博客 284

RabbitMQ 教程 | 第7章 RabbitMQ 运维

这篇 RabbitMQ 教程为学习者提供了全面的内容,帮助学习者充分掌握 RabbitMQ 的应用。整篇教程丰富内容详实,适合初学者和有经验的开发者参考学习。

编程洪同学 829

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7919

Centos7 安装rabbitmq详细教程

一、RabbitMQ简单介绍 RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 在目前...

夏冬丶王阳旭 5万+

uniapp [全端兼容] - 详细实现引入使用 Google 谷歌地图显示及搜索城市地点,提供地图标点、地址搜索、定位导航、中文显示及汉化、地图打位置标点显示、搜索框搜索功能、省市区详细经纬度数据等

uniapp,h5移动端网页,微信小程序,Android,苹果ios,app,nvue,谷歌地图,官方,谷歌官方文档,googlemap,申请key,uniApp谷歌地图,详细使用教程,无法访问,集成谷歌地图,app引入谷歌地图,选点定位,地图导航,位置搜索,城市搜索,文字地点模糊查询,地点省市区详细数据,经纬度信息,markers地图标记点,一直报错怎么办,接入google地图不显示报错,谷歌地图插件,vue3,vue2,组件,Key申请流程,谷歌key怎么申请,api文档,网站打不开,用什么插件,在u

🏆 前端领域优质创作者 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RabbitMQ-运维

RabbitMQ集群对延迟⾮常敏感, 所以搭建RabbitMQ集群时, 多个节点应当在同⼀个局域⽹内每个队列都有自己的主节点每个队列的消息就是放在自己对应的主节点上的,但是也会在从节点上显示主节点宕机了,对应队列也完了因为队列是没有复制的,所以主节点没了,数据就没了RabbitMQ 的仲裁队列是⼀种基于 Raft ⼀致性算法实现的持久化、复制的 FIFO 队列. 仲裁队列提供队列复制的能⼒, 保障数据的⾼可⽤和安全性. 使⽤仲裁队列可以在 RabbitMQ 节点间进⾏队列数据的复制,从⽽。

ck的博客 1372

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[RabbitMQ] RabbitMQ运维问题

一台RabbitMQ服务器接收消息的数量是有限的,假如一个RabbitMQ的服务器每秒可以接受消息的数量是1000条,但是假如我们每秒钟需要接收10万条消息的时候,这时候我们就必须通过搭建多个RabbitMQ结点来解决问题. RabbitMQ集群允许消费者和生产者在RabbitMQ单个节点崩溃的时候继续运行,当失去一个RabbitMQ结点的时候,客户端可以能过重新连接到集群中的其他任何节点并继续生产或者消费. 接下来我们来介绍如何有效搭建一个RabbitMQ集群.需要注意的是我们在搭建一个具有多态服务器的集

无需多言 2803

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

运维RabbitMQ 系统 & 学习计划

以上链接均来源于作者博客的原创专栏,涵盖了 RabbitMQ 的核心运行参数、配置与存储布局、常用 CLI 命令、Management 插件功能、Exchange/Queue/VHost 核心概念及整体架构图等关键主题,适合作为入门与运维参考。

喝醉酒的小白 1063

RabbitMQ集群搭建与运维

说明:本文在操作系统Red Hat Enterprise Linux Server release 7.2 (Maipo)下进行 一、Rabbit MQ 单机安装 由于公司Linux服务器无法连接互联网,所以本文采取离线安装的方法,即在Windows上下载所需软件,并上传至Linux。 注:下载时使用HK代理。 1. 下载软件 erlang下载 https://github.com/rabbit...

Jake Weng 4190

《Linux运维实战:Centos7.6一键离线部署rabbitmq3.7.28集群》

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

东城绝神 2177

从Erlang版本匹配到Web管理:一次搞定RabbitMQ在CentOS 7上的部署与基础运维

本文详细介绍了在CentOS 7系统上部署RabbitMQ 3.8.16的完整流程,包括Erlang版本匹配、服务安装、Web管理插件配置及安全优化。特别针对开机启动、防火墙设置等生产环境需求提供实用解决方案,帮助开发者快速搭建高可用的消息队列服务。

dichu2296的博客 335

openstack基础服务运维 RabbitMQ

RabbitMQ消息队列服务

FBI048的博客 1070

CentOS7安装RabbitMQ3.7.9

本文详细介绍了在CentOS7环境下安装RabbitMQ 3.7.9集群的完整流程。内容涵盖单机安装和集群部署两种方式,包括环境准备(依赖安装、时间同步、防火墙/SELinux关闭)、软件安装、服务启动、用户权限配置以及插件启用等步骤。对于集群部署,特别强调了节点间时间同步、主机名解析和cookie文件同步等关键配置。最后提供了Web管理界面访问方法(端口15672),并给出了完整的操作命令序列。整个过程注重实践性和可操作性,适合需要搭建RabbitMQ集群的系统管理员参考。

superhanyubo的专栏 611

给运维整理的CentOS7的rabbitmq安装步骤

给运维整理的CentOS7的rabbitmq安装步骤目录直接上代码 目录 不废话,直接上代码;no bb, show me the code; (安装 rabbitmq, rabbitmq-c, 和 php amqp 拓展) 直接上代码 yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel wget https://erlang.org/downloa

qq_37793727的博客 210
上一篇: 第8章 跨越集群的界限
下一篇: 第1章 RabbitMQ简介
limeOracle
博客等级 码龄10年 11粉丝 566原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值