Rabbitmq集群升级方案
升级Rabbitmq 3.6.3版本至3.6.6版本,升级过程中的一些关键步骤记录
Step 1:
顺序关闭集群所有节点,这里注意最后一个关闭的节点必须保证为硬盘节点,而非RAM节点;
centOS 7.x+可使用systemctl工具关闭;
Step 2:
备份mnesia数据库,数据库路径如下:
/var/lib/rabbitmq/mnesia
其中包含该节点集群信息及持久化内容;
并将该数据库目录名变更为mnesia_xxxx(如mnesia_backup_20161213),因为新的rabbitmq服务启动后会重新建立mnesia数据库;
Step 3:
顺序升级所有节点rabbitmq-server版本;
Step 4:
先启动集群主节点,之后重新创建用户及用户组:
$sudo rabbitmqctl add_user jiak jiak //新增用户 $sudo rabbitmqctl set_user_tags jiak administrator //设置用户组(标签) $sudo rabbitmqctl set_permissions -p / jiak "." "." ".*" //为用户分配权限
Step 5:
随后开始启动从节点,启动后仍然先创建用户组,与Step4相同;
然后将从节点加入主节点集群:
$sudo rabbitmqctl stop_app $sudo rabbitmqctl join_cluster rabbit@gs-server-xxxx $sudo rabbitmqctl start_app
Step 6:
对集群所有从节点重复Step5,直到整个集群所有节点正常启动并加入主节点集群。
上述步骤对非在线升级没有问题,但是升级前队列中的消息,包括host,exchange等信息均会丢失,如果需要保留原有的队列相关信息,需要回复原有mnesia数据库;
以下步骤为恢复方法(该部分未测试):
Step1:顺序停止集群中所有节点服务,确保最后一个中止服务的节点为Disc节点而非RAM节点;
Step2:每个节点原有mnesia数据库改名,最后一个节点的mnesia数据库备份改名;
Step3:升级每个节点的rabbitmq-server版本;
Step4:中止epmd服务(Erlang port mapper daemon),如果/var/lib/rabbitmq/mnesia目录存在,删除掉,然后拷贝备份的mnesia数据库目录过来;
Step5:启动主节点的rabbitmq-server服务,并添加用户及用户组权限;
然后对集群中所有从节点,依次按上一部分的Step5,启动服务,添加用户/组,加入主节点集群即可。
注:后一种恢复方案未经过亲自验证。
Rabbitmq集群升级方案的更多相关文章
- RabbitMQ集群架构(HA)并结合.NET Core实操
一.前言 已经一年没有更新博客了,由于公司事务比较多,并且楼主我也积极在公司项目中不断实践.net core.DDD以及Abp vnext,也积累了一些吐血经验,目前我在做一家在线教育公司负责智慧校园 ...
- CentOS7 搭建RabbitMQ集群 后台管理 历史消费记录查看
简介 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接 ...
- Rabbitmq集群高可用测试
Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...
- RabbitMQ 集群与高可用配置
集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送 ...
- 使用jmeter对ActiveMQ集群性能方案进行评估--转载
原文地址:http://www.51testing.com/html/78/23978-143163.html 1.测试概要1.1 关于这篇文档中涉及的基于JMS的消息系统能为应用程序提供可靠的,高性 ...
- (转)RabbitMQ 集群与高可用配置
集群概述 环境 配置步骤 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务 ...
- CentOS7安装RabbitMQ集群
实验环境 RabbitMQ 集群 server1.example.com IP: 10.10.10.11 Node: diskserver2.example.com IP: 10.1 ...
- 私有云Rabbitmq 集群部署
默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq 做高可用 高可用方法 通过 Erlang 的分布式 ...
- Rabbitmq集群高可用部署详细
序言 清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下 ...
随机推荐
- openresty 前端开发入门三之JSON篇
这章主要介绍一下,lua怎么返回一个json字符串,怎么把一个table转成json字符串,又怎么把一个json字符串转成json 其实很简答,直接使用cjson库的encode.decode方法即可 ...
- linux中输入输出和重定向问题
输入输出解释 当我们执行shell的时候,每个进程都和三个打开的文件有关系,并使用文件描述符来引用这些文件.但这些文件不容易记忆,所以shell给了相应的文件名: 0:输入文件-标准输入(它的命令是输 ...
- Hibernate4.2.4入门(二)——一对多的映射关系
一.前言 前面我们已经学过hibernate的基础,学会增删改查简单的操作,然而我们数据库中存在着1对多,多对1,多对多的关系,hibernate又是基于ORM基础上的开源框架,可以让我们不用去编写S ...
- iOS之数字的格式化
//通过NSNumberFormatter,同样可以设置NSNumber输出的格式.例如如下代码: NSNumberFormatter *formatter = [[NSNumberFormatter ...
- android的消息提示(震动与提示音)
protected AudioManager audioManager; protected Vibrator vibrator; audioManager = (AudioManager)getSy ...
- 了解JavaScript 对象的属性操作
提起操作, 很多人都会想到我们学习过程中最经常做的操作, 就是对数据库进行增, 删, 改, 查, 既然提到这个, 那么对于对象的属性操作也不例外, 基本上可以说也是这几个操作. JS中对象的属性标签 ...
- Jsp的九个内置对象
一.什么是内置对象?在jsp开发中,会频繁使用到一些对象.例如HttSession,ServletContext,HttpServletRequest.如果我们每次要使用这些对象都去创建这些对象,就会 ...
- [MySQL Reference Manual] 18 复制
18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
(转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...
- javascript判断是否为闰年
//判断年份year是否为闰年,是闰年则返回true,否则返回false function isLeapYear(year){ var a = year % 4; var b = year % 100 ...