rabbitmq集群部署及配置

消息中间件rabbitmq,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。本篇将以rabbitmq+HA方式进行部署。一、原理介绍rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需
摘要由CSDN通过智能技术生成

消息中间件rabbitmq,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。本篇将以rabbitmq+HA方式进行部署。

一、原理介绍

rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以获得认证)来实现的,所以部署rabbitmq分布式集群时要先安装erlang,并把其中一个服务的cookie复制到另外的节点。

rabbitmq集群中,各个rabbitmq为对等节点,即每个节点均提供给客户端连接,进行消息的接收和发送。节点分为内存节点和磁盘节点,一般的,均应建立为磁盘节点,为了防止机器重启后的消息消失;

RabbitMQ的Cluster集群模式一般分为两种,普通模式和镜像模式。消息队列通过rabbitmq HA镜像队列进行消息队列实体复制。

普通模式下,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。

镜像模式下,将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。

二、部署方案

本方案中是在多台机器之间部署rabbitmq的cluster,要求如下:这几个节点需要再同一个局域网内;这几个节点需要有相同的erlang cookie,否则不能正常通信,为了实现cookie内容一致,采用scp的方式进行。

1、环境介绍

rabbitmq01 192.168.101.11  

rabbitmq02 192.168.101.12 

rabbitmq03 192.168.101.13

操作系统:centos6.7

2、部署过程

(1)分别在3台机器上配置/etc/hosts,如下

node1 192.168.101.11  

node2 192.168.101.12 

node3 192.168.101.13

(2)分别在3台机器上安装erLang和rabbitmq

安装erlang

安装依赖包

yum install -y *epel* gcc-c++ unixODBC unixODBC-devel openssl-devel ncurses-devel
编译安装

tar -zxvf otp_src_19.0.tar.gz
cd otp_src_19.0
./configure --prefix=/usr/local/bin/erlang --without-javac
make && make install
echo "export PATH=$PATH:/usr/local/bin/erlang/bin:/usr/local/bin/rabbitmq_server-3.6.5/sbin" >> /etc/profile
source /etc/profile
出现erl命令则说明安装成功;

安装rabbitmq

编译安装

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-generic-unix-3.6.5.tar.xz
yum install -y xz
xz -d rabbitmq-server-3.6.3.tar.xz
tar -xvf rabbitmq-server-generic-unix-3.6.
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
RabbitMQ是一款基于AMQP协议的开源消息队列系统,它可以让应用程序之间进行可靠的异步消息传递。 RabbitMQ支持多个节点的分布式部署,以提高可用性和性能。 以下是RabbitMQ集群部署的步骤: 1. 安装Erlang和RabbitMQ 首先需要安装Erlang和RabbitMQ。可以从官方网站下载安装包并按照说明进行安装。 2. 创建配置文件 在每个节点上,需要创建一个配置文件,该文件将指定节点的名称、IP地址、端口、群集节点等信息。可以使用默认配置文件,并在该文件中添加以下内容: ``` cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config cluster_formation.classic_config.nodes.1 = rabbit@node1 cluster_formation.classic_config.nodes.2 = rabbit@node2 cluster_formation.classic_config.nodes.3 = rabbit@node3 ``` 其中,`rabbit@node1`、`rabbit@node2`、`rabbit@node3`是节点的名称,需要根据实际情况进行更改。 3. 启动节点 在每个节点上启动RabbitMQ服务: ``` rabbitmq-server -detached ``` 4. 加入群集 在每个节点上,使用以下命令将节点加入群集: ``` rabbitmqctl join_cluster rabbit@node1 ``` 其中,`rabbit@node1`是群集中的一个节点,需要根据实际情况进行更改。 5. 启动群集 在任一节点上,使用以下命令启动群集: ``` rabbitmqctl start_app ``` 6. 验证群集状态 使用以下命令验证群集状态: ``` rabbitmqctl cluster_status ``` 如果输出内容包含所有节点的名称,则表示群集已经成功部署。 注意:在RabbitMQ集群中,每个队列都将在某个节点上运行。如果某个节点宕机,该节点上的队列将无法访问。因此,需要使用镜像队列来确保数据的可靠性。具体的做法是将队列的镜像复制到其他节点上,以确保在某个节点宕机时,队列可以在其他节点上运行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值