返回顶部
首页 > 资讯 > 精选 >RabbitMQ集群如何搭建
  • 826
分享到

RabbitMQ集群如何搭建

2023-06-26 18:06:01 826人浏览 泡泡鱼
摘要

这篇文章主要讲解了“RabbitMQ集群如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RabbitMQ集群如何搭建”吧!1.前提erlang安装版本一致RabbitMQ安装版本一致以

这篇文章主要讲解了“RabbitMQ集群如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RabbitMQ集群如何搭建”吧!

1.前提

erlang安装版本一致

RabbitMQ安装版本一致

以下示例使用 192.168.73.134 和 192.168.73.135 构建 Rabbitmq 集群

2.RabbitMQ集群

RabbitMQ 是用 erlang 开发的。Cluster 非常方便,因为 erlang 本质上是一种分布式语言,但它不支持负载均衡。在第一次模拟考试中,Rabbit模式可以分为三种:单模、共模和镜像模式。

第一次模拟考试:最简单的情况,非集群模式。

普通模式:默认集群模式。

  about Queue Message实体只存在于一个节点,A,B这两个节点只有相同的元数据,即队列结构。    当消息进入A节点的Queue中后,consumer从B节点被拉取时,RabbitMQ会临时在A、B之间传递消息,B中的消息实体发送给consumer。   因此消费者尝试连接每个节点并从中获取消息。也就是说,对于同一个逻辑队列,需要在多个节点建立物理队列。否则不管是A还是B的消费者,出口总是在A,会有瓶颈。    这个模型有问题 A 节点故障后, B 节点无法检索到 A 节点中尚未消费的消息实体。   如果消息持久化完成,则等待A节点恢复后才能被消费;如果没有持久化,那么将不会有更多的节点

镜像模式:将需要的队列做成镜像队列,存在于多个节点中。属于RabbitMQ的HA方案。

  该模式解决了上述问题。其本质与普通模式的区别在于消息实体会主动在镜像节点之间同步,而不是在镜像节点消费者取数据时临时拉取数据。    这种模式的副作用也很明显。除了降低系统性能外,如果图像队列数量过多,大量消息进入,集群内的网络带宽也会被这种同步通信大量消耗。  因此适用于对可靠性要求较高的场合(后面会详细介绍这种模式,我们目前搭建的环境就属于这种模式)。

(1)集群中的基本概念

RabbitMQ 的集群节点包括内存节点和磁盘节点。

顾名思义,内存节点将所有数据放在内存中,而磁盘节点将数据放在磁盘上。但是,如上所述,如果在传递消息时开启消息持久化,即使是内存节点,数据仍然安全地放置在磁盘上。

RabbitMQ 集群可以共享用户、虚拟主机、队列、交换器等。必须在所有节点上复制所有数据和状态。例外是当前属于创建它的节点的消息队列,尽管它们是可见的并且可以被所有节点读取。RabbitMQ 节点可以动态加入集群。一个节点可以加入集群,也可以从集群环集群进行基本的负载均衡

集群中有两种类型的节点:

内存节点:只将状态保存到内存(例外:持久队列的持久内容会保存到磁盘)

磁盘节点:将状态保存到内存和磁盘。

内存节点不写入磁盘,但性能优于磁盘节点。在一个集群中,只需要一个磁盘节点来保存状态,

如果集群中只有内存节点,则不能停止,否则所有的状态、消息等都会丢失。

思路:

为了实现RabbitMQ的高可用,我们先搭建普通集群模式,再配置镜像模式,实现高可用。在Rabbit集群前面增加了一个反向代理,生产者和消费者通过反向代理访问RabbitMQ集群。

架构如下:

RabbitMQ集群如何搭建

(2)集群模式配置

step1:局域网配置

在安装好的三个节点服务器中,分别修改/etc/hosts文件1. vim /etc/hosts192.168.73.134 节点 1192.168.73.135 节点 2

step2:为不同节点之间的相同认证设置Erlang Cookie

Erlang 集群中每个节点的魔法 cookie 来实现,这个 cookie 存储在 /var/lib/rabbitmq/.erlang.cookie 中,该文件的权限为 400。因此,必须保证每个节点的 cookie 一致,否则节点之间将无法通信。从主节点采用 copy 的方式来保持 Cookie 的一致性:1. chmod 777 /var/lib/rabbitmq/.erlang.cookie2. scp -p 22 /var/lib/rabbitmq/.erlang.cookie root@192.168.73.135:/var/lib/rabbitmq/复制后,检查文件的用户、组和权限是否符合要求。如果没有,请修改它。在.erlang.cookie之后恢复,否则可能会遇到错误:3. chown rabbitmq:rabbitmq .erlang.cookie4. chmod 400 /var/lib/rabbitmq/.erlang.cookie

step3:使用-分离运行每个节点

在RabbitMQ重启后设置cookie:1. cd /sbin2.rabbitmqctl停止3. rabbitmq-server 启动这里正常重启可能会提示节点实例再次运行。如果出现,使用以下命令启动:1. ps -aux | 格雷厄尔2. kill -9 {pid}3. RABBITMQ_node_PORT=5678 RABBITMQ_NODENAME=rabbit@node1 ./rabbitmq-server -detached    RABBITMQ_NODE_PORT=5678 RABBITMQ_NODENAME=rabbit@node2 ./rabbitmq-server -detachedps:上面的5678是因为rabbitmq端口改成了5678,而且nodename和hosts的设置是一致的。    依次启动所有节点。

step4:查看各个节点的状态

1.查看启动端口:netstat -lntp     活动 Internet 连接(仅限服务器)    Proto Recv-Q Send-Q 本地地址 外地址 状态 PID/程序名称        tcp 0 0 0.0.0.0:4369 0.0.0.0:* 听 27321/epmd              tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 760/sshd                tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1066/master             tcp 0 0 0.0.0.0:15678 0.0.0.0:* 听 27862/beam.smp          tcp 0 0 0.0.0.0:25672 0.0.0.0:* 听 27862/beam.smp          tcp6 0 0 :::5678 :::* 听 27862/beam.smp          tcp6 0 0 :::8080 :::* 听 964/java                tcp6 0 0 :::4369 :::* 听 27321/epmd              tcp6 0 0 :::22 :::* LISTEN 760/sshd                tcp6 0 0 ::1:25 :::* LISTEN 1066/master             tcp6 0 0 127.0.0.1:8005 :::* 听 964/java                tcp6 0 0 :::8009 :::* 听 964/java2.查看rabbitmq启动状态:      rabbitmqctl -n rabbit1@node1 状态    rabbitmqctl -n rabbit1@node2 状态  3.访问Http://bbitraq后台打开后,可以查看网页是否可以访问

step5:创建和部署集群

以rabbit@rabbitmq2和rabbit@rabbitmq1组成集群,rabbitmq2作为内存节点(一个硬盘节点就够了);兔子MQ2:    1.停止节点2的应用:rabbitmqctl -n rabbit@node2 stop_app            在节点 rabbit@rabbitmq2 上停止兔子应用程序    2.添加节点1作为内存节点rabbitmqctl -n rabbit@node2 join_cluster --ram rabbit@node1            集群节点 rabbit@node2 与 rabbit@node1    3、启动节点2的应用:rabbitmqctl -n rabbit@node2 start_app            起始节点rabbit@node2

step6:查看集群状态

1.查看节点1的集群状态:rabbitmqctl -n rabbit@node1 cluster_status        节点rabbit@node1的集群状态        [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node2]}]},         {running_nodes,[rabbit@node1]},         {cluster_name,<<"rabbit@node1">>},         {分区,[]},         {警报,[{rabbit@node1,[]}]}] 2.查看节点2的集群状态:rabbitmqctl -n rabbit@node2 cluster_status        节点rabbit@node2的集群状态        [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node2]}]},         {警报,[{rabbit@node1,[]}]}]3.后台查看集群状态:

RabbitMQ集群如何搭建

至此,rabbitmq 集群搭建完毕。

3.RabbitMQ镜像模式

上面配置了RabbitMQ默认的集群模式,但是不保证队列的高可用。虽然可以将切换和绑定复制到集群中的任何节点,但不会复制队列内容。这种模式虽然解决了一些节点压力,但是队列节点宕机直接导致队列无法使用,只能等待重启。因此,需要关闭队列节点,否则故障也可以正常使用。要将队列的内容复制到集群中的每个节点,需要创建一个图像队列。

第一步:添加负载均衡器

在负载均衡器方面,F5的BIG-IP、Radware的AppDirector等商用产品都是硬件架构的产品,可以实现高处理能力。但是这些产品的高价会让人望而却步,所以我们也有软件负载均衡解决方案。互联网公司常用的软件LB有LVS、HAProxy、Nginx等,LVS是内核层产品,主要负责第四层的数据包转发,使用比较复杂。HAProxy 和 Nginx 是应用层产品,但 Nginx 主要用于处理 HTTP,因此选择 HAProxy 作为 RabbitMQ 前端的 lb。

1.安装HAProxy(在192.168.73.136安装在HAProxy上)    yum -y 安装haproxy2.修改haproxy.config进行配置    vim /etc/haproxy/haproxy.config    添加以下配置:    听rabbitmq_cluster 0.0.0.0:5678        模式tcp        平衡循环        服务器rabbitmaster 192.168.73.134:5678 检查inter 2000 上升2 下降3        服务器rabbitslave 192.168.73.135:5678 检查inter 2000 上升2 下降3

修改HaProxy配置后,重启可能会提示端口绑定失败。在这种情况下,请执行以下命令:

 setebool -P haproxy_connect_any=1

负载均衡器将监听 192.168.73.136 的 5678 端口,并轮询我们 192.168.73.134 和 192.168.73.135 的 5678 端口这两个节点。这样磁盘节点不会同时受到影响,除了故障。

第二步:配置Rabbitmq策略

在任意节点上执行:

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'    上面的命令会将所有队列设置为镜像队列,即队列会被复制到每个节点,每个节点的状态会保持一致

第三步:使用负载服务器发送消息

客户端使用负载服务器172.16.3.110(panyuntao3)发送消息,队列复制到所有节点。到这里我们就完成了RabbitMQ集群的高可用配置。

感谢各位的阅读,以上就是“RabbitMQ集群如何搭建”的内容了,经过本文的学习后,相信大家对RabbitMQ集群如何搭建这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: RabbitMQ集群如何搭建

本文链接: https://lsjlt.com/news/308916.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • RabbitMQ集群如何搭建
    这篇文章主要讲解了“RabbitMQ集群如何搭建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RabbitMQ集群如何搭建”吧!1.前提erlang安装版本一致RabbitMQ安装版本一致以...
    99+
    2023-06-26
  • centos6.9 搭建rabbitmq 3.6.8集群
    RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbiMQ模式RabbitMQ模式大概分为以下三种:(1)单一模式。(2)普通模式(默认的集群模式)。(3)...
    99+
    2023-01-31
    集群 rabbitmq
  • Linux RabbitMQ 集群搭建流程图解
    1.整体步骤 最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitM...
    99+
    2022-06-04
    Linux RabbitMQ 集群搭建
  • SpringBoot中RabbitMQ集群的搭建详解
    目录1. 两种模式1.1 普通集群1.2 镜像集群1.3 节点类型2. 搭建普通集群2.1 预备知识2.2 开始搭建2.3 代码测试2.4 反向测试3. 搭建镜像集群3.1 网页配置...
    99+
    2024-04-02
  • Centos7.3 RabbitMQ分布式集群搭建示例
    本文介绍了Centos7.3 RabbitMQ分布式集群搭建示例,分享给大家,具体如下: 注意事项 centos 7.x 关闭firewall 三台机器: 172.17.250.97 rabbiMQ01 172...
    99+
    2022-06-04
    Centos7.3 RabbitMQ分布式集群 Centos7.3 RabbitMQ集群
  • Docker搭建RabbitMQ集群的方法步骤
    目录集群模式介绍1、普通集群的搭建1.1、普通集群架构介绍1.2、环境准备1.3、集群搭建2、镜像集群的搭建2.1、配置镜像集群的策略集群模式介绍 RabbitMQ集群模式有两种:普...
    99+
    2024-04-02
  • redis集群如何搭建
    这篇文章给大家分享的是有关redis集群如何搭建的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。介绍安装环境与版本用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master...
    99+
    2024-04-02
  • 如何搭建MySQL集群
    这篇文章给大家介绍如何搭建MySQL集群,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余...
    99+
    2024-04-02
  • Nacos集群如何搭建
    小编给大家分享一下Nacos集群如何搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一、Nacos 简介Nacos(Naming and Confi...
    99+
    2023-06-15
  • Zookeeper集群如何搭建
    这篇文章主要介绍“Zookeeper集群如何搭建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Zookeeper集群如何搭建”文章能帮助大家解决问题。一、Zookeeper原理简介ZooKeeper...
    99+
    2023-06-28
  • 如何搭建redis集群
    这篇文章主要讲解了“如何搭建redis集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何搭建redis集群”吧!redis集群搭建在开始redis集群搭建之前,我们先简单回顾一下redi...
    99+
    2023-06-25
  • hadoop如何搭建集群
    搭建Hadoop集群需要以下步骤:1. 确保所有节点的操作系统版本一致,并配置好网络环境。2. 在每个节点上安装Java环境,并设置...
    99+
    2023-08-16
    hadoop
  • mysql中如何搭建集群
    mysql中如何搭建集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。MySQL 群集是 MySQL 适合于分布式计算环境的高可用、高冗余...
    99+
    2024-04-02
  • Minikube如何搭建Kubernetes集群
    这篇文章主要介绍了Minikube如何搭建Kubernetes集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Minikube打开 https://github....
    99+
    2023-06-29
  • docker如何搭建kafka集群
    本文小编为大家详细介绍“docker如何搭建kafka集群”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker如何搭建kafka集群”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、原生Docker命令 ...
    99+
    2023-06-30
  • docker如何搭建redis集群
    要搭建Redis集群,可以使用Docker来进行部署。下面是一种常见的方法:1. 创建一个文件夹,在文件夹中创建一个名为`docke...
    99+
    2023-08-23
    docker redis
  • Docker搭建RabbitMq的普通集群和镜像集群的详细操作
    目录一、搭建RabbitMq的运行环境1.通过search查询rabbitmq镜像2.通过pull拉取rabbitmq的官方最新镜像3.创建容器4.启动管理页面5.设置erlang ...
    99+
    2024-04-02
  • 集群搭建
      1.  集群搭建之主从复制 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。 1.1   主服务器的配置 1.1.1   第一步:修改my.con...
    99+
    2017-09-01
    集群搭建
  • 如何搭建Redis集群环境
    本篇文章为大家展示了如何搭建Redis集群环境,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 Redis集群环境搭建方便起见,这里集群环境的所有节点全部位于同一个...
    99+
    2024-04-02
  • Windows下如何搭建Redis集群
    这篇文章给大家分享的是有关Windows下如何搭建Redis集群的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Redis集群:如果部署到多台电脑,就跟普通的集群一样;因为Redis是单线程处理的,多核CPU也只能...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作