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 https://github.com/rabbitmq/erlang-rpm/releases/download/v21.2.3/erlang-21.2.3-1.el7.centos.x86_64.rpm

安装 Erlang sudo rpm -Uvh /home/download/erlang-21.2.3-1.el7.centos.x86_64.rpm

安装时如果提示‘libcrypto.so.10(OPENSSL_1.0.2)(64bit) is needed’则需要下载 openssl-libs-1.0.2k-16.el7.x86_64.rpm,地址http://rpmfind.net/linux/centos/7.6.1810/os/x86_64/Packages/openssl-libs-1.0.2k-16.el7.x86_64.rpm,然后升级一下 rpm -ivh openssl-libs-1.0.2k-16.el7.x86_64.rpm --force

安装 socat  sudo yum install -y socat

2、安装RabbitMQ

在官方下载页面http://www.rabbitmq.com/download.html)找到CentOS7版本的下载链接,下载rpm安装包

wget -P /home/download https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm

可以在https://github.com/rabbitmq/rabbitmq-server/tags下载历史版本

添加环境配置 vi /etc/rabbitmq/rabbitmq-env.conf ,没有目录时先创建对应的目录, 添加 [email protected]

安装 sudo rpm -Uvh /home/download/rabbitmq-server-3.7.9-1.el7.noarch.rpm

3、基本操作

启动服务  sudo systemctl start rabbitmq-server

查看状态 sudo systemctl status rabbitmq-server

停止服务 sudo systemctl stop rabbitmq-server

设置开机启动 sudo systemctl enable rabbitmq-server

开启Web管理插件 rabbitmq-plugins enable rabbitmq_management,rabbitmq有一个默认的guest用户,但只能通过localhost访问,所以需要添加一个能够远程访问的用户

添加用户 rabbitmqctl add_user admin admin

为用户分配操作权限 rabbitmqctl set_user_tags admin administrator

为用户分配资源权限 rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

4、防火墙添加端口

sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent

重启防火墙 sudo firewall-cmd --reload

多机多节点集群部署

1、准备三台安装好RabbitMQ 的机器,ip分别为192.168.5.125、192.168.5.135、192.168.5.145

2、修改hosts文件,sudo vim /etc/hosts,三台机器分别都添加如下配置,可以通过sudo scp /etc/hosts [email protected]:/etc/复制到node2

192.168.5.125 node1

192.168.5.135 node2

192.168.5.145 node3

3、修改对应主机的hostname hostnamectl set-hostname 名字(重启后仍有效)

4、将192.168.5.125上的/var/lib/rabbitmq/.erlang.cookie文件复制到另外两台机器上

5、给每台机器的防火墙添加端口

6、 启动每台机器的RabbitMQ,sudo systemctl start rabbitmq-server或者 rabbitmq-server -detached

7、 将192.168.5.135加入到集群,停止RabbitMQ 应用 rabbitmqctl stop_app, 重置RabbitMQ 设置  rabbitmqctl reset 加入到集群  rabbitmqctl join_cluster [email protected] --ram

启动RabbitMQ 应用 rabbitmqctl start_app

8、查看集群状态,看到`running_nodes,[[email protected],[email protected]]`表示节点启动成功  rabbitmqctl cluster_status

9、在管理端界面界面查看

镜像队列模式集群

镜像队列属于RabbitMQ 的高可用方案,见:https://www.rabbitmq.com/ha.html#mirroring-arguments

通过前面的步骤搭建的集群属于普通模式集群,是通过共享元数据实现集群

开启镜像队列模式需要在管理页面添加策略,添加方式:

1. 进入管理页面 选择默认虚拟主机"/" -> Admin -> Policies(在页面右侧)-> Add / update a policy

2. 在表单中填入:

name:ha-all  策略名称,如果使用已有的名称,保存后将会修改原来的信息

Apply to:Queues 策略应用到什么对象上

Pattern:^ 策略应用到对象时,对象名称的匹配规则(正则表达式)

Priority: 0 优先级,数值越大,优先级越高,相同优先级取最后一个

Definition:策略定义的类容,对于镜像队列的配置来说,只需要包含3个部分: `ha-mode` 、`ha-params` 和 `ha-sync-mode`。其中,`ha-sync-mode`是同步的方式,自动还是手动,默认是自动。`ha-mode` 和 `ha-params` 组合使用。组合方式如下:

  |all | (empty) | 队列镜像到集群类所有节点 |

  | exactly | count | 队列镜像到集群内指定数量的节点。如果集群内节点数少于此值,队列将会镜像到所有节点。如果大于此值,而且一个包含镜像的节点停止,则新的镜像不会在其它节点创建。 |

  | nodes | nodename | 队列镜像到指定节点,指定的节点不在集群中不会报错。当队列申明时,如果指定的节点不在线,则队列会被创建在客户端所连接的节点上。 |

镜像队列模式相比较普通模式,镜像模式会占用更多的带宽来进行同步,所以镜像队列的吞吐量会低于普通模式,但普通模式不能实现高可用,某个节点挂了后,这个节点上的消息将无法被消费,需要等待节点启动后才能被消费。

除了镜像队列模式,还可以借助插件 shovel、federation来实现高可用,但是不常用,下面是两种方式的区别

原文地址:https://www.cnblogs.com/hhhshct/p/11520400.html

时间: 2024-10-12 07:13:18

RabbitMQ集群部署和高可用的相关文章

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

基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案 http://www.tuicool.com/articles/naeEJbv 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案 时间 2014-02-21 15:15:17  IT社区推荐资讯 原文  http://itindex.net/detail/48192-redis-sentinel-redis Redis Sentinel是一个分布式系统,可以部署多个Se

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

etcd集群搭建(高可用)

一.etcd介绍: ETCD 是一个高可用的分布式键值数据库,可用于服务发现.ETCD 采用 raft 一致性算法,基于 Go 语言实现.etcd作为一个高可用键值存储系统,天生就是为集群化而设计的.由于Raft算法在做决策时需要多数节点的投票,所以etcd一般部署集群推荐奇数个节点,推荐的数量为3.5或者7个节点构成一个集群. 二.特点: 实际上,etcd作为一个受到Zookeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更具有以下4个特点{![引自Docker官方文档]}

分布式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

大厂分布式面试题分享:ZooKeeper集群如何实现高可用部署?

Zookeeper 我想大家都不陌生,在很多场合都听到它的名字.它是 Apache 的一个顶级项目,为分布式应用提供一致性高性能协调服务.可以用来做:配置维护.域名服务.分布式锁等.有很多开源组件,尤其是中间件领域,使用 Zookeeper 作为配置中心或者注册中心.它是 Hadoop 和 HBase 的重要组件,是 Kafka 的管理和协调服务,是 Dubbo 等服务框架的注册中心等. 原理 在介绍高可用部署前,我们先了解下 Zookeeper 的基本知识,这对充分理解它的高可用部署非常重要.

私有云Rabbitmq 集群部署

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

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

ActiveMQ(七)_伪集群和主从高可用使用

一.本文目的 介绍如何在同一台虚拟机上搭建高可用的Activemq服务,集群数量包含3个Activemq,当Activemq可用数>=2时,整个集群可用. 本文Activemq的集群数量为3个,分别命名为mq1,mq2,mq3   二.概念介绍 1.伪集群 集群搭建在同一台虚拟机上,3个Activemq分别使用不同的端口提供服务,启用1个为Master,其它2个为Slaver,同一时间仅Master队列提供服务 2.高可用 3个Activemq服务,同一时间仅Master队列提供服务,当Mast