RabbitMQ(6) 集群部署

单节点部署

rabbitmq单节点部署比较简单,可以使用apt-get等工具快速安装部署。

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
echo ‘deb http://www.rabbitmq.com/debian/ {distriubtion} main‘ | sudo tee /etc/apt/sources.list.d/rabbitmq.list
sudo apt-get update
sudo apt-get install rabbitmq-server

如上,添加仓库等认证key,更新本地仓库后安装即可。其中{distriubtion}需根据不同的系统版本指定。

使用apt-get等工具安装比较快速,会一次性安装erlang等依赖。也可以手动安装erlang后,再安装rabbitmq,这种方式也无多大成本,下载rabbitmq的tar.gz包

后解压即可。

rabbitmq安装后,以下为几个比较重要的目录,根据不同的系统和安装方式,目录路径会有所差别:

  • {rabbitHome}/etc: 配置文件目录,rabbitmq.config文件定义rabbitmq配置
  • {rabbitHome}/sbin:rabbitmq可执行文件目录,如:rabbitmq-server、rabbitmqctl、rabbitmq-plugins
  • {rabbitHome}/plugins: rabbitmq内置的插件(.ez)放在此目录,开启相应的插件即可使用。
  • {rabbitHome}/var/log:日志目录

下载后使用 rabbitmq-server [- detached] 即可启动rabbitmq服务。

后台首先会启动一个erlang虚拟机机,然后在此虚拟机中启动rabbitmq服务。

集群部署

rabbitmq提供了多种集群部署的方式:

  • 静态配置:在rabbit.conf文件中静态配置集群节点
  • rabbitmqctl: 使用rabbitmqctl工具手动组装集群
  • 服务发现:基于etcd、consul、k8s等动态配置集群

这里主要介绍使用rabbitmqctl组集群等方式,这种方式在小规模下灵活高效。

假设局域网中有node1,node2,node3三个节点,配置rabbitmq集群需要以下几步:

  1. 复制erlang cookie

    如上所述,rabbitmq运行在erlang虚拟机中,erlang节点需要根据erlang cookie通信,为此需要保证三个节点上的cookie一致。cookie默认位于/var/lib/rabbitmq/.erlang.cookie

    目录下,从一个节点上复制拷贝到其他节点即可。

    [email protected]:~# cat /var/lib/rabbitmq/.erlang.cookie
    JZQIKYDOSOKMADVDSPUO
    
    [email protected]:~# echo JZQIKYDOSOKMADVDSPUO > /var/lib/rabbitmq/.erlang.cookie
    [email protected]:~# echo JZQIKYDOSOKMADVDSPUO > /var/lib/rabbitmq/.erlang.cookie
  2. 分别启动节点
    [email protected]:~# rabbitmq-server -detached
    Warning: PID file not written; -detached was passed.
    
    [email protected]:~# rabbitmq-server -detached
    Warning: PID file not written; -detached was passed.
    
    [email protected]:~# rabbitmq-server -detached
    Warning: PID file not written; -detached was passed.

    在三个节点上分别启动rabbit,此时三个rabbitmq各自独立。可以使用rabbitmqctl cluster_status命令分别在三个节点上查看集群状态。

    [email protected]:~# rabbitmqctl cluster_status
    Cluster status of node [email protected]
    [{nodes,[{disc,[[email protected]]}]},
     {running_nodes,[[email protected]]},
     {cluster_name,<<"[email protected]">>},
     {partitions,[]},
     {alarms,[{[email protected],[]}]}]
  3. 加入集群

    以node1为基础,将node2和node3加入集群。

    [email protected]:~# rabbitmqctl stop_app Stopping rabbit application on node [email protected] [email protected]:~# rabbitmqctl reset Resetting node [email protected] [email protected]:~# rabbitmqctl join_cluster [email protected] Clustering node [email protected] with [email protected] [email protected]:~# rabbitmqctl start_app Starting node [email protected] [email protected]:~#

    首先rabbitmqctl stop_app会停止rabbitmq服务,然后rabbitmqctl reset会重置集群状态,接着将node2加入node1所在集群,最后在启动node2上

    到rabbitmq服务。node3上执行同样到操作。

    完成后,三个节点已经组成集群,再次使用rabbitmqctl cluster_status命令任意节点上查看集群状态:

    [email protected]:~# rabbitmqctl cluster_status
    Cluster status of node [email protected]
    [{nodes,[{disc,[[email protected],[email protected],[email protected]]}]},
     {running_nodes,[[email protected],[email protected],[email protected]]},
     {cluster_name,<<"[email protected]">>},
     {partitions,[]},
     {alarms,[{[email protected],[]},{[email protected],[]},{[email protected],[]}]}]
    [email protected]:~# 

到此集群即组建完毕,组建过程并不复杂。

后续如果需要动态将单个节点脱离集群,也很容易:

[email protected]:~# rabbitmqctl stop_app
Stopping rabbit application on node [email protected]
[email protected]:~# rabbitmqctl reset
Resetting node [email protected]
[email protected]:~# rabbitmqctl start_app
Starting node [email protected]
[email protected]:~#

关闭节点上到rabbitmq服务,重置该节点集群状态,重启rabbitmq服务即可。

集群节点类型

上面在使用rabbitmqctl cluster_status查看集群状态时,会发现node列表中的disc,这是表明节点类型的。

在集群中,存在两种节点:

  • disc 磁盘节点,元数据存储到磁盘
  • ram 内存节点,元数据存储到磁盘

磁盘节点将队列、交换器、绑定关系等源数据存储到磁盘中,而内存节点将这些数据存储在内存中。

上面组建集群时,节点默认为disc类型,也可以在将节点加入集群时指定为ram类型:

[email protected]:~# rabbitmqctl join_cluster [email protected] --ram

对于集群中已有等节点,也可以改变其节点类型:

[email protected]:~# rabbitmqctl change_cluster_node_typef {disc,ram}

当创建一个队列、交换器、绑定等时,需要服务端各个节点将源数据写入后才会响应客户端,这意味这磁盘节点会具有较慢的响应。在频繁创建队列、交换器等创建中,

磁盘节点会拖慢集群响应速度。不过实际中,频繁创建元数据等场景并不多见,所以可以一般将集群中节点全部设置成磁盘节点。在rpc等频繁创建元数据等场景下,

可以考虑使用内存节点。

在一个集群中,应该保证至少有一个磁盘节点,这样才能保证集群重启后元数据等恢复。

原文地址:https://www.cnblogs.com/dreamvibe/p/9695994.html

时间: 2024-08-30 09:41:08

RabbitMQ(6) 集群部署的相关文章

rocketmq集群部署(多master多slave异步)

一.最近公司在做队列的技术选型,经过调研,决定使用rocketmq作为整个架构的队列层,我们之前的公司是用RabbitMQ,集群部署参考我之前的文章:RabbitMQ集群部署:rocketmq集群由NameServer和Broker两种角色组成,NameServer是无状态的可以横向部署多台达到消除单点的目的:Broker分多master.多master多slave同步.多master多slave异步这三种部署方案,一般生产环境都使用的是多master多slave异步这种方案,关于这三种方案的优

RabbitMQ学习之集群部署

我们先搭建一个普通集群模式,在这个模式基础上再配置镜像模式实现高可用,Rabbit集群前增加一个反向代理,生产者.消费者通过反向代理访问RabbitMQ集群. 架构图如下: 设计架构可以如下:在一个集群里,有4台机器,其中1台使用磁盘模式,另2台使用内存模式.2台内存模式的节点,无疑速度更快,因此客户端(consumer.producer) 连接访问它们.而磁盘模式的节点,由于磁盘IO相对较慢,因此仅作数据备份使用,另外一台作为反向代理. 一.4台机器如下(通过/etc/sysconfig/ne

Rabbitmq集群部署手册

一.Rabbitmq集群部署手册 1.环境介绍 系统环境:Red HatEnterprise Linux Server release 6.2 (Santiago) 内核版本:Linux zxt-02.com2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux 软件版本:otp_src_17.3:rabbitmq-server-3.2.4:Python 2.6.6:simple

Rabbitmq集群部署Haproxy

安装前的说明: 1.为了配合做rabbitmq的负载均衡,本次的安装包是安装的低版本1.5.8版本,下载包的地址:https://src.fedoraproject.org/repo/pkgs/haproxy/2.按照上两篇博客,先把rabbitmq集群装好:单机版Rabbitmq部署:http://blog.51cto.com/10950710/2135676Rabbitmq集群部署:http://blog.51cto.com/10950710/2135717 安装步骤: 1.将haproxy

分布式rabbitmq集群部署

分布式rabbitmq集群部署本次部署使用的三台centos服务器安装的erlang 版本为 21.0.4安装的rabbitmq版本为3.7.8-rc.2在三台服务器中分别安装rabbitmq-serverrabbitmq通信是建立在erlang环境中 所以需要先安装erlang环境 因为国外的erlang官方地址中中国不能直接访问,所以我们使用第三方包https://github.com/rabbitmq/erlang-rpm 安装说明地址 修改系统repo包文件修改repo# In /etc

RabbitMQ集群部署和高可用

RabbitMQ 安装和使用 1.安装依赖环境 在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本 在 https://github.com/rabbitmq/erlang-rpm/releases 页面找到需要下载的erlang版本,`erlang-*.centos.x86_64.rpm`就是centos版本的. 复制下载地址后,使用wget命令下载,wget -P /home/download h

Linux CentOS6.5下RabbitMQ集群部署配置

一.服务器与主机名列表 环境:2台Linux主机,主机名和IP如下,rabbitmq执行用户为rabbitmq,所属组为rabbitmq 172.16.192.145   ecs003 172.16.192.146   ecs004 二.在个节点服务器上做好hosts解析 #cat>>/etc/hosts< 172.16.192.145   ecs003 172.16.192.146   ecs004 EOF 三.在各节点安装Rabbitmq 1.安装epel源和rabbit-relan

私有云Rabbitmq 集群部署

默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq 做高可用 高可用方法 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本方案中搭建 3 个节点,并且都是磁盘节点(所有节点

RabbitMQ安装以及集群部署

本次记录安装RabbitMQ的过程,只针对MAC下单机版安装.单机集群安装方法以及配置haproxy负载均衡. RabbitMQ单机版本安装 RabbitMQ单机集群安装方法(适合开发练习) RabbitMQ配置haproxy负载均衡 RabbitMQ集群测试(待续) 参考文档 RabbitMQ单机版本安装 消息发送原理: 应用程序和Rabbit Server之间会创建一个TCP连接,一旦TCP打开,并通过了认证,认证就是你试图连接Rabbit之前发送的Rabbit服务器连接信息和用户名和密码,