rabbitmq集群搭建_rabbitmq集群原理

rabbitmq集群搭建_rabbitmq集群原理讲解单机部署RabbitMQ集群,通过集群的搭建去理解集群思想以及集群知识的理解。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

??????

哈喽!大家好,我是【一心同学】,一位上进心十足的【Java领域博主】!???

✨【一心同学】的写作风格:喜欢用【通俗易懂】的文笔去讲解每一个知识点,而不喜欢用【高大上】的官方陈述。

✨【一心同学】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。

✨如果有对【后端技术】感兴趣的【小可爱】,欢迎关注一心同学】???

❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️ 


目录

一、集群介绍

二、准备工作

三、集群搭建

? 创建节点

? 配置主从节点 

? rabbit-1操作作为主节点

? rabbit2操作为从节点

四、Web监控

小结


一、集群介绍

当我们单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的。RabbitMQ 集群是一个或多个节点的逻辑分组,集群中的每个节点都是对等的,每个节点共享所有的用户,虚拟主机,队列,交换器,绑定关系,运行时参数和其他分布式状态等信息。本片文章主要是通过单机多实例来练习我们的集群搭建。

二、准备工作

(1)我们务必在服务器安全组那边打开以下端口:

5672,15672,5673,15673

(2)其次为端口打开防火墙

firewall-cmd --zone=public --add-port=15672/tcp --permanent

firewall-cmd --zone=public --add-port=5672/tcp --permanent

firewall-cmd --zone=public --add-port=15673/tcp --permanent

firewall-cmd --zone=public --add-port=5673/tcp --permanent


(3)重启防火墙:

firewall-cmd --reload

三、集群搭建

? 创建节点

场景:有两个rabbitmq节点,分别为rabbit-1, rabbit-2,rabbit-1作为主节点,rabbit-2作为从节点。

我们先关闭我们的rabbitmq服务:

 systemctl stop rabbitmq-server

创建并启动第一个结点rabbit-1

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

解释:

RABBITMQ_NODE_PORT:端口号

RABBITMQ_NODENAME:节点名称

创建并启动第二个节点rabbit-2

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

解释:

RABBITMQ_NODE_PORT:端口号

RABBITMQ_NODENAME:节点名称

RABBITMQ_SERVER_START_ARGS:进行覆盖我们的Web端口15673

验证是否启动成功:

ps aux|grep rabbitmq

可以发现,我们成功启动了这两个结点:

rabbitmq集群搭建_rabbitmq集群原理

? 配置主从节点 

? rabbit-1操作作为主节点

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

? rabbit2操作为从节点

# 停止应用
> 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

rabbitmq集群搭建_rabbitmq集群原理

 可以发现现在我们集群已经搭建好了。

四、Web监控

为了能够使用Web管理界面,我们需要两个节点添加用户并赋予权限

rabbit-1节点:

rabbitmqctl -n rabbit-1 add_user yixin 123456
rabbitmqctl -n rabbit-1 set_user_tags yixin administrator
rabbitmqctl -n rabbit-1 set_permissions -p / yixin ".*" ".*" ".*"

rabbit-2节点: 

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

现在我们可以去访问Web管理界面了。

rabbit-1:http://服务器Ip地址:15672/

rabbit-2:http://服务器Ip地址:15673/

rabbitmq集群搭建_rabbitmq集群原理

现在我们利用刚刚添加的用户名和密码登录,进入页面:

rabbitmq集群搭建_rabbitmq集群原理

可以发现,确实已经绑定了这两个节点。

我们在rabbit-1这边进行创建队列queue1

rabbitmq集群搭建_rabbitmq集群原理

接着我们去查看rabbit-2节点:

rabbitmq集群搭建_rabbitmq集群原理

 可以发现,现在这两个已经是主从关系了,我们在rabbit-1实行的操作都能够自动映射到rabbit-2节点。


小结

以上就是【一心同学】整理的【RabbitMQ】的【单机部署集群】,我们在真实开发中其实使用的是【多机部署】,这里的单机部署集群主要是为了去学习集群的【思想】以及【搭建】。

如果这篇【文章】有帮助到你,希望可以给【一心同学】点个?,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【后端技术】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【一心同学】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】??!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195214.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Informatica ETL开发入门实例

    Informatica ETL开发入门实例Informatica客户端工具:5个Designer——定义源及目标结构设计转换规则,生成ETL映射RepositoryManager——元数据资料库,依赖性分析,安全性管理等RepositoryServerAdministratorConsole——Repository的建立与维护WorkflowManager——合理的实现复杂的ETL工作流基于时间或事件的作业高度WorkflowMonitor——监控workflow和session,生成工作日志及报告…

    2022年6月11日
    33
  • 圣经中基甸的故事_未知之路

    圣经中基甸的故事_未知之路给定一个包含 n 个点 m 条边的有向图,每条边都有一个流量下界和流量上界。给定源点 S 和汇点 T,求源点到汇点的最小流。输入格式第一行包含四个整数 n,m,S,T。接下来 m 行,每行包含四个整数 a,b,c,d 表示点 a 和 b 之间存在一条有向边,该边的流量下界为 c,流量上界为 d。点编号从 1 到 n。输出格式输出一个整数表示最小流。如果无解,则输出 No Solution。数据范围1≤n≤50003,1≤m≤125003,1≤a,b≤n,0≤c≤d≤21474836

    2022年8月9日
    0
  • Java 定时器_Javaweb定时器

    Java 定时器_Javaweb定时器上篇提到了阻塞队列,本篇我们将优先级队列和阻塞队列结合,得到阻塞优先队列,以此来实现一个定时器~定时器定义应用场景定时器的实现:定时器构成代码实现:代码分析:忙等一处唤醒,两处阻塞附最终全部代码:完整的执行过程:定义定时器,是多线程编程中的一个重要/常用组件定时器可以强制终止请求:浏览器内部都有一个定时器,发送请求后,定时器就开始计时;若在规定时间内,响应数据没有返回,就会强制终止请求定时器,有些逻辑不想立刻执行,而是要等一定的时间之后,再来执行好比一个闹钟,在我们设定好闹钟时间后,到时

    2022年9月18日
    0
  • HibernateTemplate的使用方法

    HibernateTemplate的使用方法HibernateTemplate的使用方法

    2022年6月22日
    25
  • .h5文件的读取_python读写h5文件

    .h5文件的读取_python读写h5文件**关于hdf5文件**HDF(HierarchicalDataFormat)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。详见其官方介绍:https://support.hdfgroup.org/HDF5/。Python中有一系列的工具可以操作和使用HDF5数据,这里只介绍h5py。一个HDF5文件是存储两类对象的容器,这两类对象分别为:dataset…

    2022年9月9日
    0
  • LEfSe学习[通俗易懂]

    LEfSe学习[通俗易懂]参考:微生物组间差异分析之LEfSe分析LEfSe分析,你真的懂嘛?微生物LEfSe分析图表解读实栗操作:(待续)#!/bin/sh#inthisscriptweshowhowtoperformthebiomarkerdiscoveryoperation#usingLEfSe.ThescriptsrequireLEfSetobein…

    2022年5月29日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号