RabbitMQ详解(六):RabbitMQ集群搭建

news2024/11/29 22:47:29

集群

官方参考文档:https://www.rabbitmq.com/clustering.html

RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。
在实际使用过程中多采取多机多实例部署方式,为了便于同学们练习搭建,有时候你不得不在一台机器上去搭建一个rabbitmq集群,本章主要针对单机多实例这种方式来进行开展。

集群搭建

配置的前提是你的rabbitmq可以运行起来,比如”ps aux|grep rabbitmq”你能看到相关进程

ps aux|grep rabbitmq
或者
systemctl status rabbitmq-server

注意:确保RabbitMQ可以运行的,确保完成之后,把单机版的RabbitMQ服务停止,后台看不到RabbitMQ的进程为止

systemctl stop rabbitmq-server

单机多实例搭建

  • 启动第一个节点

    sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &
    

    在这里插入图片描述

  • 启动第二个节点

    sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start &
    

    在这里插入图片描述

  • 验证启动 ps aux|grep rabbitmq

    在这里插入图片描述

  • rabbit-1作为主节点

    #停止应用
    > sudo rabbitmqctl -n rabbit-1 stop_app
    #目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)
    > sudo rabbitmqctl -n rabbit-1 reset
    #启动应用
    > sudo rabbitmqctl -n rabbit-1 start_app
    

    在这里插入图片描述

  • rabbit-2作为从节点

    # 停止应用
    > sudo rabbitmqctl -n rabbit-2 stop_app
    # 目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)
    > sudo rabbitmqctl -n rabbit-2 reset
    # 将rabbit2节点加入到rabbit1(主节点)集群当中【Server-node服务器的主机名】
    > sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'Server-node'
    # 启动应用
    > sudo rabbitmqctl -n rabbit-2 start_app
    

    在这里插入图片描述

    在这里插入图片描述

  • 验证集群状态

    sudo rabbitmqctl cluster_status -n rabbit-1
    

    在这里插入图片描述

Web监控

  • 安装命令

    rabbitmq-plugins enable rabbitmq_management
    

    在这里插入图片描述

  • 添加用户并赋予权限

    rabbitmqctl -n rabbit-1 add_user admin admin
    rabbitmqctl -n rabbit-1 set_user_tags admin administrator
    rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"
    rabbitmqctl -n rabbit-2 add_user admin admin
    rabbitmqctl -n rabbit-2 set_user_tags admin administrator
    rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"
    

在这里插入图片描述

  • 一定记得在服务器上安全组开放5672,15672,5673,15673端口,否则无法访问

  • 测试访问http://ip地址:15672/#/ 和http://ip地址:15673/#/

    在这里插入图片描述

测试

  • 假设我们现在将rabbit-2停掉

    [root@hecs-66166 ~]# rabbitmqctl -n rabbit-2 stop_app
    Stopping rabbit application on node rabbit-2@hecs-66166 ...
    

    在这里插入图片描述

    并且rabbit-2的图形化管理页面也不能访问

  • 现在我们在rabbit-1新建一个队列,然后将rabbit-2启动,rabbit-1停掉

    [root@hecs-66166 ~]# rabbitmqctl -n rabbit-1 stop_app
    Stopping rabbit application on node rabbit-1@hecs-66166 ...
    

    在这里插入图片描述

    rabbit-1的图形化管理页面也不能访问,rabbit-2的图形化管理页面发现队列无法使用了

    在这里插入图片描述

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

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

相关文章

什么是柔性玻璃?

柔性玻璃(Flexible glass)是一种新型薄膜玻璃基板(Thin film glass substrate)材料,厚度极薄可以弯曲。 柔性玻璃定义有广义和狭义之分: 广义柔性玻璃泛指所有制成微米尺寸具有可弯曲特性的玻璃材料,如玻璃纤维、光纤、玻璃棉、玻璃布等。这些…

第10课【STM32 USB通讯协议实战】HID键盘+CDC虚拟串口组合设备

目录 前言USB设备类别未定义设备设备描述符/配置描述符分析如何配置从机类型如何配置设备专用的描述符如何配置从机端点 HID设备特点设备描述符/配置描述符分析HID报文描述符短条目前缀可选数据表现形式 层次结构实例分析总结 CDC设备特点设备描述符/配置描述符分析设备类特定请…

【LED子系统】四、核心层详解(一)

个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、前言2、leds_init分析2.1 相关数据结构2.1.1 class 2.2 实现流程 3、leds_class_dev_pm_ops分析…

Mysql出现问题:ERROR 1062 (23000): Duplicate entry ‘‘ for key ‘PRIMARY‘解决方案

回城传送–》《数据库问题解决方案》 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤️点赞 👍 收藏 ⭐再看,养成…

QT中的模态对话框及非模态对话框

QT中的模态对话框及非模态对话框 [1] QT中的模态对话框及非模态对话框[2] Qt工作笔记-主界面往模式对话框emit信号,有注意的问题正常情况下:不正常情况下:下面给出正常情况下的代码: [1] QT中的模态对话框及非模态对话框 原文链接…

KVM软件安装/Guest OS图形模式安装

KVM软件安装 首先你的Linux操作系统得带有图形化界面 虚拟机开启硬件虚拟化 关闭防火墙和selinux [rootserver-d ~]# systemctl stop firewalld [rootserver-d ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.ser…

RK3568修改调试串口的波特率

概述 使用了临滴 RK3568 开发板,其调试串口的默认波特率是 1500000 ,但并不是所有的 USB 转 TTL 都能使用这么高的波特率,所以我们就将波特率修改为 115200 这个比较通用的波特率。 RK3568 调试串口修改波特率的方法 ddr 运行阶段串口波特率的修改 ddr…

linux利用定时任务提权

背景: 运维为了防止数据丢失等,写个定时任务进行数据的打包压缩。由于数据打包压缩命令为tar,tar可以尝试加参数调用其他命令执行。 压缩命令:tar zxf 1.tar.gz /var/www/* 查看定时任务:cat /etc/crontab root权限下…

WordPress入门之WordPress站点基本设置

在Wordpress站点搭建过程中,我们需要快速去熟悉Wordpress,并进行一些简单的基本设置,在开始设置之前,大家可以先熟悉左边的菜单栏的每个选项,了解它们都是做什么的,今天就简单为大家介绍Wordpress入门之Wordpress站点基本设置。 一、设置个人资料 建议大家完善基本信息…

电容笔一定要防误触吗?苹果平板平替电容笔排行

至于用ipad作为学习工具的学生们,更是将它当成了一种必不可少的工具。但是,由于苹果原装电容笔的价格过高,没有人能负担得起。所以,最好的办法就是使用普通的电容笔。我是IPAD的忠实用户,也是数码爱好者,这…

10.BOM浏览器对象模型

BOM 浏览器对象模型 1. BOM 概述 1.1 什么是 BOM BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与**浏览器窗口进行交互的对象,其核心对象是 window BOM 由一系列相关的对象构成,并且每个对象都…

在Bamboo上怎么使用iOS的单元测试 | 京东云技术团队

作者:京东零售 吴滔 本教程将使用北汽登录模块为例,一步一步和大家一起搭建单元测试用例,并在Bamboo上跑起来,最终测试结果和代码覆盖率会Bamboo上汇总。 模块名称:BQLoginModule,是通过iBiu创建的一个模块工程 一 建…

浅尝Kubernetes

第一节 内容编排与Kubernetes 为什么要用k8s 集群环境容器部署的困境,假设我们有数十台服务器。分别部署Nginx,redis,mysql,业务服务。如何合理的分配这些资源。这里就需要用到容器编排 容器编排 在实际集群环境下&#xff0…

JAVA-抽象类和接口

文章目录 前言 大家好呀,今天给大家带来抽象类和接口的讲解,那么废话不多说,跟着我一起去学习吧! 1.1抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类…

Java 11新特性:模块化系统和本地变量类型推断

作为Java语言的最新版本,Java 11带来了许多新特性,其中最引人注目的是模块化系统和本地变量类型推断。这两个新特性对Java开发人员来说具有重要意义,因此在本文中,我们将详细探讨这两个新特性及其对Java开发的影响。 章节1&#…

记录一次uniapp实现APP自动升级

描述 app的版本管理和升级,是一个不可或缺的功能,而uniapp则是提供了一整套的流程,由于官方文档过于复杂,而且写的云里雾里的,所以个人记录一次我的操作,直到配置成功。 总体 一共分为2个部分&#xff0…

scanf与printf函数的用法

前言: 学习c语言编程,必不可少的操作就是键盘输入与屏幕输出。今天我想讲讲自己对scanf与printf使用的看法 一、scanf与printf: 1.scanf()函数: int scanf ( const char * format, ... ); 函数的功能:从标准输入中…

契约锁亮相华为2023中国合作伙伴大会,共谱华为云软件生态新篇章

5月8日-9日,以“因聚而生 众志有为”为主题的“华为中国合作伙伴大会2023”在深圳举行。契约锁作为华为云优秀软件伙伴,受邀参会并在“聚数字化先行者,谱软件生态新乐章”分论坛开展“让数字可信,打通数字化最后一公里”数字化实践…

Google Play 政策更新重点回顾 (下) | 2023 年 4 月

Google Play 和您一样,始终坚持为用户提供更优质的产品、更流畅的体验。为持续打造值得信赖的优质应用平台,我们也在不断进行政策更新。在上一篇文章中与您回顾了 2023 年 4 月 Google Play 政策的更新要点,这篇文章我们将为您带来重点政策解…

golang汇编之常量和全局变量(三)

常量 Go汇编语言中常量以$美元符号为前缀。常量的类型有整数常量、浮点数常量、字符常量和字符串常量等几种类型。以下是几种类型常量的例子: $1 // 十进制 $0xf4f8fcff // 十六进制 $1.5 // 浮点数 $a // 字符 $"abcd" …