《Linux运维实战:Centos7.6部署rabbitmq3.9.16镜像模式集群》

news2024/11/26 17:31:46

一、RabbitMQ集群的三种模式

RabbitMQ有三种模式:单一模式,普通集群模式,镜像集群模式。

单一模式:即单机情况不做集群,就单独运行一个rabbitmq而已。

普通集群模式:普通集群模式下,不同的节点之间只会相互同步元数据(交换机、队列、绑定关系、Vhost的定义),而不会同步消息。默认情况下,消息队列位于一个节点上,指的节点就是master节点。

在这里插入图片描述

比如队列1的消息只存储在节点1上,节点2和节点3同步队列1的元数据,但是没有同步消息。生产者连接的是节点3,要将消息通过交换机A路由到队列1,最终消息还是会转发到节点1存储。同理,消费者连接节点2,要从队列1上拉取消息,消息会从节点1转发到节点2,其他节点起到一个路由的作用。


镜像模式:所谓镜像集群,可以真正做到保证消息百分之百不丢失,同时它还可以做到主节点在一某时刻失败它会自动的去做转换,自动的去做故障转移,保证系统的高可用。与普通集群模式不同的是,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。所以在对可靠性要求较高的场合中适用。

在这里插入图片描述

总结:普通集群模式与镜像集群模式的区别?

1、普通集群模式增加了RabbitMq系统的吞吐量,但不能实现系统的高可用,如果磁盘节点崩溃可能会导致数据丢失,不能再对队列、交换器、绑定关系、用户进行更改,更改权限、添加或删除集群节点也不能操作。

2、镜像集群模式是RabbitMq的HA部署方案,极大地提升 RabbitMQ 的可用性及可靠性,提供了数据冗余备份、避免单点故障的功能。但是镜像队列需要为每一个节点都要同步所有的消息实体,所以会导致网络带宽压力很大。 提供了数据的冗余备份,会导致存储压力变大,可能会出现IO瓶颈。具体怎样选择还需要使用者根据实际的业务场景选择合适的部署方案。

3、具体怎样选择还需要使用者根据实际的业务场景选择合适的部署方案。


二、RabbitMQ镜像集群部署

RabbitMQ集群里有内存节点与磁盘节点之分。

内存节点(ram):就是将元数据都放在内存里,内存节点的话,只要服务重启,该节点的所有数据将会丢失。

硬盘节点(disc):就是将元数据都放在硬盘里,所以服务重启的话,数据也还是会存在的。

在RabbitMQ集群里,至少有一个磁盘节点,它用来持久保存元数据。新的节点加入集群后,会从磁盘节点上拷贝数据。但是,集群里也不必要每个节点都是磁盘节点,这主要是性能问题。例如,压力大的RPC服务,每秒都要创建和销毁数百个队列,如果集群里都是磁盘节点,意味着队列定义在每个节点上,都要写入磁盘才算成功,这样就会非常慢。

如果集群里只有一个磁盘节点,这个节点挂了,会发生什么?此时消息路由机制仍可正常进行(可以正常投递和消费消息),但是不能做如下事:

#create queues 创建队列
#create exchanges 创建交换器
#create bindings 创建绑定关系
#add users 创建用户
#change permissions 修改用户权限
#add or remove cluster nodes 新增或移除RabbitMQ集群节点

所以,考虑到高可用性,推荐在集群里保持2个磁盘节点,这样一个挂了,另一个还可正常工作。但上述最后一点,往集群里增加或删除节点,要求2个磁盘节点同时在线。

说明:持久化的消息,会同时存放在内存和磁盘。我们一般把应用连接到内存节点(读写快)。磁盘节点用来备份。


1.1、环境信息

环境信息如下:

主机IP操作系统rabbitmq版本CPU架构主机名说明
192.168.1.191Centos7.63.9.16x86_64rabbit01内存节点
192.168.1.192Centos7.63.9.16x86_64rabbit02内存节点
192.168.1.193Centos7.63.9.16x86_64rabbit03磁盘节点

1.2、环境初始化

1、修改主机名和/etc/hosts文件

#1、设置主机名(主机192.168.1.191上执行)
[root@localhost ~]# hostnamectl set-hostname rabbit01

#2、设置主机名(主机192.168.1.192上执行)
[root@localhost ~]# hostnamectl set-hostname rabbit02

#3、设置主机名(主机192.168.1.193上执行)
[root@localhost ~]# hostnamectl set-hostname rabbit03

#4、修改hosts文件(主机192.168.1.191、192.168.1.192、192.168.1.193上执行)
[root@localhost ~]# vim /etc/hosts
192.168.1.191 rabbit01
192.168.1.191 rabbit02
192.168.1.191 rabbit03

2、关闭防护墙和selinux

#主机192.168.1.191、192.168.1.192、192.168.1.193上执行
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld

3、设置进程数

说明:root账号下ulimit -u出现的max user processes的值默认是/proc/sys/kernel/threads-max的值/2,即系统线程数的一半。普通账号下ulimit -u出现的max user processes的值默认是/etc/security/limits.d/20-nproc.conf文件中定义的大小。

#主机192.168.1.191、192.168.1.192、192.168.1.193上执行
#1.在/etc/security/limits.conf文件里添加如下内容
* soft nproc 65535
* hard nproc 65535
#注意:修改这里,普通用户max user process值是不生效的,需要修改/etc/security/limits.d/20-nproc.conf文件中的值。

4、设置文件描述符数

#主机192.168.1.191、192.168.1.192、192.168.1.193上执行
#1.在/etc/security/limits.conf文件里添加如下内容
* soft nofile 65535
* hard nofile 65535

如下图所示,则表示进程数和文件描述符数设置成功!
在这里插入图片描述


1.3、安装Erlang和socat依赖包

说明:以下操作需分别在Rabbitmq镜像集群所有节点服务器上操作。

[root@rabbit01~]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
[root@rabbit01~]# yum install erlang-23.3.4.11-1.el7.x86_64
[root@rabbit01~]# yum install socat logrotate -y

1.4、安装rabbitmq-server服务

说明:以下操作需分别在Rabbitmq镜像集群所有节点服务器上操作。

1.4.1、安装rabbitmq软件包

[root@rabbit01~]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.16/rabbitmq-server-3.9.16-1.el7.noarch.rpm
[root@rabbit01~]# yum install rabbitmq-server-3.9.16-1.el7.noarch.rpm -y

1.4.2、新增环境参数配置文件rabbitmq-env.con

说明:默认配置在/etc/rabbitmq目录下,如果不存在直接创建就可以,RabbitMQ应用会自动加载;rabbitmq-env.conf包含重写RabbitMQ脚本和CLI工具中内置的默认值的环境变量。

#1、创建数据及日志目录
[root@rabbit01~]# mkdir /data/basic-data/rabbitmq-server/{data,logs} -pv

#2、修改rabbitmq-env.con文件
[root@rabbit01~]# vim /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/basic-data/rabbitmq-server/data
RABBITMQ_LOG_BASE=/data/basic-data/rabbitmq-server/logs

#3、目录授权
[root@rabbit01~]# chown -R rabbitmq:rabbitmq /data/basic-data/rabbitmq-server -R

1.4.3、修改rabbit.app文件

[root@rabbit01 ~]# vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.9.16/plugins/rabbit-3.9.16/ebin/rabbit.app
{vm_memory_high_watermark, 0.7},

1.5、同步cookie文件

说明:将rabbit01机器的.erlang.cookie文件复制到rabbit02和rabbit03机器(此文件在rabbitmq服务启动时自动生成),因为节点之间需要通过此文件来判断是否允许交流(判断是否属于集群内部节点),如果三台机器的此文件内容不一致则集群无法启动成功。此文件内容一般是由不超过255个数字或字母组成的字符串构成。

#1、启动rabbit01(192.168.1.191)节点的rabbitmq-server服务
[root@rabbit01 ~]# systemctl start rabbitmq-server

#2、将rabbit01机器的.erlang.cookie文件复制到rabbit02和rabbit03机器上
[root@rabbit01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbit02:/var/lib/rabbitmq/
[root@rabbit01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbit03:/var/lib/rabbitmq/

#3、目录授权
[root@rabbit02 ~]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@rabbit03 ~]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

#4、分别启动rabbit02节点(192.168.1.192)和rabbit03(192.168.1.193)节点的rabbitm-server服务
[root@rabbit02 ~]# systemctl start rabbitmq-server
[root@rabbit03 ~]# systemctl start rabbitmq-server

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TryHackMe-Carnage

Carnage 花了两天学了下wireshark 顺便看一下现在我的红队进程 由于ad在进攻性渗透测试当中已经早早收入囊中,这让我在红队进度中变快 现在,红队路径剩下的room应该都算是在整个path当中比较有难度的了,我不经意的查看了剩下的部分room&…

基于昇腾计算语言AscendCL开发AI推理应用

01 初始AscendCL AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装,它提供运行时资源(例如设备、内存等)管理、模型加载与执行、算子…

c函数篇 入门 阶乘 ,素数(2019年)数列求和(2021年),完数,完全平方数,因子求和,x的y次方。

目录 1: 计算s1!2!3!......n! 2:素数问题2019 3:编写程序判断一个数是不是完数 4:编写函数 求x的y次方 完成pow(x,y)的功能 5:输出1到1000内所有完全平方数 6:求因子之和 数列求和 1: 计算s1!2!3!......n! #include<stdio.h> long fac(int n) {int i;long s1;for…

龙智宣布与Incredibuild建立战略合作伙伴关系

近日&#xff0c;龙智宣布与领先的加速编译软件提供商Incredibuild建立战略合作伙伴关系。 Incredibuild是一款加速编译工具。凭借其独特的进程虚拟化技术&#xff08;Vritualized Distributed Processing™&#xff09;&#xff0c;使用户能够轻松地加速代码构建、测试和许多…

Windows10下安装git

文章目录安装环境&#xff1a;Windows10 64bit官网下载&#xff1a;https://git-scm.com/download/win国内下载源&#xff1a;https://npm.taobao.org/mirrors/git-for-windows/ 从官网下载Git安装包&#xff0c;双击下载后的安装包Git-2.32.0-64-bit.exe,开始安装 选择HTTPS…

java面试题(十八)spring MVC

3.1 什么是MVC&#xff1f; 参考答案 MVC是一种设计模式&#xff0c;在这种模式下软件被分为三层&#xff0c;即Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;、Controller&#xff08;控制器&#xff09;。Model代表的是数据&#xff0c;View代表的…

【解决方案】老旧小区升级改造,视频智能化能力如何提升居民安全感?

一、需求背景 随着我国社会经济的快速发展与进步&#xff0c;城市宜居程度成为城市发展的重要指标&#xff0c;城市的发展面临着更新、改造和宜居建设等。一方面&#xff0c;社区居民对生活的环境提出了更高的要求&#xff1b;另一方面&#xff0c;将“智慧城市”的概念引入社…

[MySQL教程①] - MySQL的安装

目录 ❤ Windows下安装MySQL ❤ 下载mysql installer安装 ❤ 下载zip安装包安装 现在作为服务器操作系统的一般有三种&#xff0c;Windows Server&#xff0c;Linux&#xff0c;Unix&#xff0c;在这里我们只介绍在windows下和linux下安装mysql&#xff0c;Unix下安装应该…

03 AC-AC变换器(ACAC Converter)简介

文章目录0、 杂记1、AC-AC变换器概述2、交流调压电路A 相控交流调压3、交流调压电路B 三相相控交流电压4、交流调压电路C 斩控交流电压5、交流调功电路6、交-交变频电路A 周波变换器7、交-交变频电路B 矩阵变换器8、AC-AC变换器总结0、 杂记 在复杂的周期性振荡中&#xff0c;…

百度贴吧发帖软件如何发布?

百度贴吧发帖软件如何发布&#xff1f;贴吧软件发帖顶帖视频教学&#xff0c;防删图技术视频教学#贴吧发帖#贴吧顶帖 大家好&#xff0c;今天给大家讲一下一个贴软件发电机顶帖的视频教学。先给大家讲一下软件一个发帖。今天我们用的一个软件叫做神机。神机我们现在看到的软件…

RESTful API 为何成为顶流 API 架构风格?

作者孙毅&#xff0c;API7.ai 技术工程师&#xff0c;Apache APISIX Committer 万物互联的世界充满着各式各样的 API &#xff0c;如何统筹规范 API 至关重要。RESTful API 是目前世界上最流行的 API 架构风格之一&#xff0c;它可以帮助你实现客户端与服务端关注点分离&#x…

Vue3 企业级优雅实战 - 组件库框架 - 12 发布开源组件库

前面使用了 11 篇文章分享基于 vue3 、Monorepo 的组件库工程完整四件套&#xff08;组件库、文档、example、cli&#xff09;的开发、构建及组件库的发布。本文属于这 11 篇文章的扩展 —— 如何发布到 GitHub 上以及如何快速利用 GitHub 发布组件库文档。这样优雅哥的《组件库…

Springboot862大学生社团管理系统

后台两大功能模块&#xff0c; (1)管理员&#xff1a;个人中心、学校管理、学院管理、年级管理、班级管理、社长管理、学生管理、社团类型管理、社团信息管理、社团成员管理、退团记录管理、社团活动管理、活动报名管理、退出活动管理、社团事务管理、系统管理。 (2)社长&#…

PyTorch学习笔记:nn.SmoothL1Loss——平滑L1损失

PyTorch学习笔记&#xff1a;nn.SmoothL1Loss——平滑L1损失 torch.nn.SmoothL1Loss(size_averageNone, reduceNone, reductionmean, beta1.0)功能&#xff1a;创建一个平滑后的L1L_1L1​损失函数&#xff0c;即Smooth L1&#xff1a; l(x,y)L{l1,…,lN}Tl(x,y)L\{l_1,\dots,l…

【Python爬虫实战案例】采集城市桌游商家数据信息,做可视化演示

前言 这里容我罗嗦几句 &#x1f617; 这个时间&#xff0c;我想大学生应该都回学校了吧&#xff0c;嘿嘿 现在应该蛮忙的&#xff0c;有些的还要准备开学考&#xff0c;临近毕业的朋友&#xff0c;也快要因为工作而烦恼了&#xff0c;但是&#xff01;&#xff01; 咱也是…

新版国家标准GB/T 28181—2022将于2023年7月1日正式实施,与GB/T 28181—2016差别有哪些?

新版国家标准GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》已于2022年12月30日发布&#xff0c;将于2023年7月1日正式实施。与GB/T 28181—2016相比&#xff0c;除结构调整和编辑性改动外&#xff0c;主要技术变化如下。——更改了标准范围&#xf…

排序:堆排序

一、树与二叉树 二、二叉树 1.二叉树&#xff1a;度不超过2的树&#xff08;度&#xff1a;树的分支&#xff09;&#xff0c;每个节点最多有两个孩子节点&#xff0c;两个孩子节点被区分为左孩子节点和右孩子节点。 2.满二叉树&#xff1a;一个二叉树&#xff0c;如果每一个层…

minio查询桶中文件,桶目录中文件

文章目录前言一、文件桶中的文件夹是什么&#xff1f;二、文件查询1.桶中文件查询2.桶中文件夹中的文件查询总结前言 文章再续,书接上文 minio进阶分页查询 说到了文件,可以实现分页查询,然后上次查询的是桶中的文件列表,这次遇到了需要数据隔离的文件,也就是需要在桶中再次建…

I.MX6ULL内核开发3:linux内核设计字符设备原理(简单版)

目录 一、Linux哲学 二、如何把字符设备抽象成文件 三、硬件层原理 四、驱动层原理 五、文件系统原理 一、Linux哲学 一切皆文件 二、如何把字符设备抽象成文件 open函数&#xff0c;在文件系统中找到指定文件的操作接口&#xff0c;绑定到进程task_struct->file_str…

2023-02-10 - 4 丰富的搜索功能

ES为用户提供了丰富的搜索功能&#xff1a;既有基本的搜索功能&#xff0c;又有搜索建议功能&#xff1b;既有常用的普通类型的匹配功能&#xff0c;又有基于地理位置的搜索功能&#xff1b;既提供了分页搜索功能&#xff0c;又提供了搜索的调试分析功能。 1 搜索辅助功能 俗…