RabbitMQ镜像集群搭建

RabbitMQ镜像集群搭建

  • 前言
  • 环境
        • 服务器
        • 程序包
  • 一、修改主机名和host
  • 二、安装RabbitMQ
  • 三、集群配置
  • 四、其他配置
  • 五、登录查看

在这里插入图片描述

博主 默语带您 Go to New World.
个人主页—— 默语 的博客👦🏻
《java 面试题大全》
《java 专栏》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨


前言

集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。它和普通集群最大的区别在于 Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。

Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3节点,但是基于我们的环境以下使用2个节点为例)。
image.png

环境

服务器

本文以2个RabbitMQ搭建镜像集群为例,2个节点的IP信息如下:

IP主机名类型
192.168.0.43node1cluster
192.168.0.44node2slave
程序包

RabbitMQ安装包下载地址

  • socat-1.7.3.2-2.el7.x86_64.rpm
  • rabbitmq-server-3.8.3-1.el7.noarch.rpm
  • erlang-23.1.5-1.el7.x86_64.rpm

一、修改主机名和host

两台主机都需要做如下的主机名相关配置。
1、修改 /etc/hosts 文件,添加以下主机 IP 配置

192.168.0.43 node1
192.168.0.44 node2

image.png
2、修改主机名:以 node1 的修改为例

hostnamectl set-hostname node1

修改完后要进行重启操作
image.png
3、重启生效
配置完hosts和主机名后需要进行重启才能生效

reboot

配置并重启完确保互相通过服务器名能ping通
image.png

二、安装RabbitMQ

1、将安装文件保存到服务器的/opt目录下并进入该目录
image.png
2、执行安装命令
在/opt目录下执行如下命令:

sudo rpm -i erlang-23.1.5-1.el7.x86_64.rpm
sudo rpm -i socat-1.7.3.2-2.el7.x86_64.rpm
sudo rpm -i rabbitmq-server-3.8.3-1.el7.noarch.rpm

3、启动RabbitMQ
安装完成后可使用如下命令启动RabbitMQ服务

service rabbitmq-server start

4、查看服务状态

service rabbitmq-server status

image.png
5、查看集群状态

rabbitmqctl status

image.png
6、关闭服务
为什么上面要启动这里再关闭呢?因为如果不启动的话就没有.erlang.cookie文件,后面建集群的时候要用到该文件。

service rabbitmq-server stop

注意:两台服务器都需要执行上面的所有操作!!!

三、集群配置

目前两台服务器的RabbitMQ都是处于关闭状态,执行后续操作进行集群配置。
1、复制cookie文件
将主节点(也就是node1服务器)的.erlang.cookie文件复制到slave节点覆盖原有文件,保持两个节点文件内容一致。并保持所有用户和组为 rabbitmq,仅所有者只读。
以下命令在node2(192.168.0.44)服务器执行,也就是slave服务器执行。

# 复制
scp root@192.168.0.43:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/

# 修改用户组
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

# 仅只有所有者可读
chmod 400 /var/lib/rabbitmq/.erlang.cookie

2、启动两个节点的RabbitMQ服务

service rabbitmq-server start

3、slave 设置 cluster 节点
在 slave服务器输入如下命令:

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app

4、查看集群状态
输入如下命令查看集群状态,可以看到三个节点信息。

rabbitmqctl cluster_status

image.png
5、添加集群同步策略
在任意一台服务器执行如下命令添加集群同步策略。

   # 添加策略
   sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
   
   # 查看策略
   sudo rabbitmqctl list_policies
  • ha-mode: all,在集群中所有的节点上进行镜像
  • ha-sync-mode: automatic,在集群节点宕机重新连接后自动同步

四、其他配置

1、安装管理插件

rabbitmq-plugins enable rabbitmq_management

查看管理端口有没有启动

lsof -i:15672

2、创建一个账户admin和密码

rabbitmqctl add_user admin root

3、账号设置权限
这里我们设置为登录最高权限

rabbitmqctl set_user_tags admin administrator

为设置用户分配操作权限

在rabbitmq中用户级别分为如下几个:.administrator:可以登录控制台,查看所有的信息,可以对rabbitmq进行管理
②.monitoring:监控者,登录控制台,指定策略
③.policymaker:策略制定者,登录控制台,指定策略
④.managment:普通管理员,登录控制台

4、角色添加权限
设置admin用户具有访问根目录的所有权限

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

image.png
5、其他命令
查看角色列表

rabbitmqctl list_users

权限列表

rabbitmqctl list_permissions

部分命令示例:

rabbitmqctl add_user 账号 密码
rabbitmqctl set_user_tags 账号 administrator 将账号赋予administrator账号类型
rabbitmqctl change_password Username Newpassword 修改密码
rabbitmqctl delete_user Username 删除用户
rabbitmqctl list_users 查看用户清单
rabbitmqctl.bat set_permissions -p / 用户名 ".*" ".*" ".*" 为用户设置administrator角色
rabbitmqctl.bat set_permissions -p / root ".*" ".*" ".*"

五、登录查看

后面补上

在这里插入图片描述


🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML input 实现回车切换到下一个输入框功能

前言 遇到需求&#xff0c;在客户填写单子时&#xff0c;有多个输入框&#xff0c;为了省事&#xff0c;不需要频繁移动光标填写。 实现效果 实现方式一 HTML <input type"text" name"serialNumber1" onkeydown"cursor(this);"/><in…

【Java多线程】4——特定场景解决办法

4 特定场景解决方法 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个st…

Linux: 检测工具: monit: cpu占用率的一个例子

最近看到monit使用的CPU有时候会突然的增加,通过perf查看,可以看到是下面这个函数调用占用的比较高。 Overhead Comma Shared Object Symbol 29.72% monit [kernel.kallsyms] [k] __d_lookup__d_lookup29.65% d_lookup proc_fill_cache ` proc_readfd_common iterate_dir ksy…

FPGA芯片在通信基站中的作用

基站作为移动通信系统的核心组成部分&#xff0c;承担着信号的发送和接收任务&#xff0c;包括天线、射频前端、数字信号处理和控制等功能。 随着通信技术不断进步和网络容量的提升&#xff0c;基站功能日益复杂&#xff0c;数量也在增加。 与此同时&#xff0c;FPGA芯片被广…

JZ-7-201XMT跳位合位监视专用继电器 220VDC 板后接线,面板安装 JOSEF约瑟

系列型号&#xff1a; JZ-7Y-201XMT跳位合位监视继电器&#xff1b; JZ-7J-201XMT跳位合位监视继电器&#xff1b; JZ-7Y-203XMT跳位合位监视继电器&#xff1b; JZ-7J-203XMT跳位合位监视继电器&#xff1b; JZ-7Y-204XMT跳位合位监视继电器&#xff1b; JZ-7J-204XMT跳…

上采样技术在语义分割中的应用

目录 概要 一、概述 二、实现方法 1.转置卷积 2.反池化 3.双线性插值法 三、在经典网络中的的应用 1.U-Net 2.FCN 总结 概要 上采样是用于深度学习中提高语义分割精度的技术&#xff0c;可以实现图像放大和像素级别标注 一、概述 神经网络的基本结构为&#xff1a;…

【讲解下go和java的区别】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…

【深耕 Python】Data Science with Python 数据科学(2)jupyter-lab和numpy数组

关于数据科学环境的建立&#xff0c;可以参考我的博客&#xff1a;【深耕 Python】Data Science with Python 数据科学&#xff08;1&#xff09;环境搭建 Jupyter代码片段1&#xff1a;简单数组的定义和排序 import numpy as np np.array([1, 2, 3]) a np.array([9, 6, 2, …

vue3-pinia使用(末尾有彩蛋)

什么是 pinia Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。 之前用的是 vuex&#xff0c;后面 vue 官方团队不维护了&#xff0c;推荐使用 pinia 安装 yarn add pinia # 或者使用 npm npm install piniapnpm install piniaStore 是什么&#xf…

2024 ccfcsp认证打卡 2022 06 01 归一化处理

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 输入数字的个数int[] a new int[1010]; // 创建一个数组来存储输入的数字double sum 0; // 用于计算所有输入数字的总…

COLMAP(Windows)实现SFM三维重建位姿估计

问题产生&#xff1a; Guassian splatting第一步用colmap进行位姿估计&#xff0c;图片匹配失败&#xff0c;输出图片全靠运气&#xff0c;最少的时候甚至一张都没匹配上&#xff0c;所以想到用colmap软件先进行匹配&#xff0c;再放入高斯训练。 colmap使用步骤&#xff1a;…

小米汽车引入革命性卫星通信技术:专利揭示直连卫星能力

小米汽车在近期的SU7发布会上&#xff0c;虽已展示了其运动轿跑车型的各项卓越性能&#xff0c;售价起于21.59万元&#xff0c;但其技术创新的深度远不止于此。一项最新公布的专利显示&#xff0c;小米汽车科技有限公司正在积极探索和开发车载卫星通信技术&#xff0c;该技术的…

后端常问面经之操作系统

请简要描述线程与进程的关系,区别及优缺点&#xff1f; 本质区别&#xff1a;进程是操作系统资源分配的基本单位&#xff0c;而线程是任务调度和执行的基本单位 在开销方面&#xff1a;每个进程都有独立的代码和数据空间&#xff08;程序上下文&#xff09;&#xff0c;程序之…

NSGA算法

先给自己叠甲&#xff0c;记录自己的学习过程&#xff0c;如有内容错误欢迎指正!!!。 1. NSGA算法简介&#xff08;Nondominated Sorting Genetic Algorithm&#xff09; 根据标题&#xff0c;NSGA算法分为两个要点&#xff0c;Nondominated Sorting&#xff08;非支配排序&a…

Golang实战:深入hash/crc64标准库的应用与技巧

Golang实战&#xff1a;深入hash/crc64标准库的应用与技巧 引言hash/crc64简介基本原理核心功能 环境准备安装Golang创建一个新的Golang项目引入hash/crc64包测试环境配置 hash/crc64的基本使用计算字符串的CRC64校验和计算文件的CRC64校验和 高级技巧与应用数据流和分块处理网…

springboot 使用@profiles.active@多配置文件切换

项目配置文件结构&#xff1a; 主配置文件内容&#xff1a; pom配置文件&#xff1a; <profiles><profile><id>dev</id><properties><profiles.active>dev</profiles.active></properties></profile><profile>…

鸿蒙OS开发实战:【Socket小试MQTT连接】

本篇分享一下 HarmonyOS 中的Socket使用方法 将从2个方面实践&#xff1a; HarmonyOS 手机应用连接PC端 SocketServerHarmonyOS 手机应用连接MQTT 服务端 通过循序渐进的方式&#xff0c;全面了解实践HarmonyOS中的Socket用法 学习本章前先熟悉文档开发知识更新库gitee.com…

C#预处理器指令(巨细版)

文章目录 一、预处理器指令的基本概念二、预处理器指令的基本规则三、C# 预处理器指令详解3.1 #define 和 #undef3.2 #if、#else、#elif 和 #endif3.3 #line3.4 #error 和 #warning3.5 #region 和 #endregion 四、高级应用&#xff1a;预处理器指令的最佳实践4.1 条件编译的最佳…

hololens 2 投屏 报错

使用Microsoft HoloLens投屏时&#xff0c;ip地址填对了&#xff0c;但是仍然报错&#xff0c;说hololens 2没有打开&#xff0c; 首先检查 开发人员选项 都打开&#xff0c;设备门户也打开 然后检查系统–体验共享&#xff0c;把共享都打开就可以了

【优选算法】双指针 -- 快乐数 和 盛最多水的容器

前言&#xff1a; &#x1f3af;个人博客&#xff1a;Dream_Chaser &#x1f388;刷题专栏&#xff1a;优选算法篇 &#x1f4da;本篇内容&#xff1a;03快乐数 和 04盛最多水的容器 目录 一、快乐数&#xff08;medium&#xff09; 1. 题⽬链接&#xff1a;202. 快乐数 2. …