Rabbitmq主从集群和镜像集群搭建

主从架构集群搭建

一、安装rabbitmq

百度网盘
链接:https://pan.baidu.com/s/1CfjjCL–G4TX9zzs-hzxNg
提取码:sq5z

这里有三个安装包
1、mq是使用erlang语言开发的,所以首先安装erlang-22.0.7-1.el7.x86_64包

rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

2、安装socat-1.7.3.2-2.el7.x86_64

rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm

3、安装rabbitmq

rpm -ivh rabbitmq-server-3.7.18-1.el7.noarch.rpm

本篇文章讲解的是基于三台机器进行搭建的(选择一台进行连接复制

复制完之后修改三台机器的主机地址

vi /etc/sysconfig/network-scripts/ifcfg-eth1

上步骤每个人的主机地址文件可能不同,详情查看自己主机地址文件

ip addr

三台机器上都必须安装上rabbitmq,步骤同上

二、搭建主从架构集群

1、接下来分别进入三台机器中修改三台机器的主机名(文章以mq1、mq2、mq3为例)

vi /etc/hostname

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、配置每个主机的hosts文件

vi /etc/hosts

在文件后添加每台主机的地址及主机名,每台机器都需要如此
在这里插入图片描述
3、读取其中一个节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。
cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中
保证每个节点的.erlang.cookie中的cookie必须一样

4、逐个启动节点 rabbitmq-server -detached
5、查看各节点的状态及集群的状态: rabbitmqctl status, rabbitmqctl cluster_status
6 建立集群
以mq1为主节点,在mq2上:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@hidden1
rabbitmqctl start_app
mq3上的操作与mq2的雷同。
最后通过rabbitmqctl cluster_status查看集群的状态信息
在这里插入图片描述
通过浏览器访问rabbitmq,查看集群的状态
在这里插入图片描述
如果页面起不来,运行命令rabbitmq-plugins enable rabbitmq_management即可,启动其页面管理插件

主从架构集群:
从节点可以和主节点的交换机、队列进行备份,但是不能对从节点中的消息进行备份,也就是说,一但主节点宕机,从节点中的消息也就没有了,不能够做到高可用的一种状态
接下来的镜像集群就很好的解决这一问题,也是大多是企业所采用的一种搭建方式

镜像集群必须在主从集群的搭建上继续配置

镜像集群搭建

1、策略说明

rabbimqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition>
-p Vhost:可选参数,针对指定vhost下的queue进行设置
Name: policy的名字
Pattern: 正则表达式,queue的匹配模式
Definition:镜像定义,包含三个部分ha-mode,ha-params,ha-sync-mode
ha-mode:指明镜像队列的模式,有效值为all/exactly/nodes
		all:表明在集群中所有的节点进行镜像
		exactly:表明在指定个数的节点上进行镜像,节点的个数由ha-params决定
		nodes:表明在指定的节点上进行镜像,节点名称通过ha-params决定
ha-params:ha-mode模式需要用到的参数
ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级

2、查看当前策略
rabbitmqctl list_policies
3、添加策略
rabbitmqctl set_policy ha-all ‘^hello’ ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’
说明:策略"^"表示正则表达式匹配所有队列名称
"^hello"表示匹配所有的以hello开头的队列名称

4、删除策略
rabbitmqctl clear_policy ha-all

操作:
添加策略

rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all","ha-sync-mode":"automatic"}'

所有以hello开头的队列都可以进行消息的备份,补足了主从集群架构的缺陷
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值