现有rabbitmq集群添加新节点,移除旧节点(可以作为rabbitmq集群迁移使用)
原有集群安装步骤:https://www.cnblogs.com/sanduzxcvbnm/p/15797788.html
1.拉取镜像
集群中新节点需要执行
docker pull rabbitmq:3.8.3-management
2.上传docker-compose文件,设置可执行权限
相关文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13292779.html
cd /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
3.创建有关目录
路径根据实际需求来定(hosts文件下同)
mkdir -p /home/rabbitmq/{config,data}
config目录存放配置文件以及一些脚本,data存放rabbitmq程序数据
添加hosts文件 (最好不要在系统hosts文件中设置)
原有集群中的该文件不用修改(集群新节点需要加上原有集群节点内容)
tee /home/rabbitmq/hosts <<-'EOF'
192.168.2.163 rabbitmq1
192.168.2.164 rabbitmq2
192.168.2.165 rabbitmq3
192.168.2.167 rabbitmq4
EOF
4.在上一步中创建的rabbitmq目录下,创建docker-compose.yml文件
# cat /home/rabbitmq/docker-compose.yml
version: '3'
services:
rabbitmq1:
image: rabbitmq:3.8.3-management
container_name: rabbitmq4
restart: always
hostname: rabbitmq4
ports:
- 4369:4369
- 5671:5671
- 5672:5672
- 15672:15672
- 25672:25672
- 15692:15692
volumes:
- ./data:/var/lib/rabbitmq
- ./config/rabbitmq.sh:/etc/rabbitmq/rabbitmq.sh
- ./hosts:/etc/hosts
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=password
- RABBITMQ_ERLANG_COOKIE=thisisacookie
注意:在挂载参数中,必须加上“- ./hosts:/etc/hosts”,否则集群无法成功会报“Error: unable TO perform an operation ON node 'rabbit@rabbitmq1'. Please see diagnostics information AND suggestions below.”
5.启动
每个新节点均在"/home/rabbitmq"路径下执行如下命令:
docker-compose up -d
关闭防火墙或者开放对应的映射端口
6.重置并加入已有集群中
在第一步中事先规划好了各节点rabbitmq的存储方式,即节点1是disk,节点2和节点3都是ram
所以在直接完docker-compose后,执行命令进入各docker节点:
docker exec -it rabbitmq4 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --disc rabbit@rabbitmq1
rabbitmqctl start_app
如果后期需要修改节点的存储方式可以使用:rabbitmqctl change_cluster_node_type disc/ram #更改节点为磁盘或内存节点
# 转换节点类型
# rabbitmqctl stop_app
# rabbitmqctl change_cluster_node_type disc 或者是 rabbitmqctl change_cluster_node_type ram
# rabbitmqctl start_app
7.原有集群节点逐个从集群中移除
设置集群名称:rabbitmqctl -q set_cluster_name myrabbitmq (这一步最后再做)
在留在集群中的节点上执行操作,如下是在rabbitmq4新节点上执行的,从集群中移除rabbitmq2节点 (其他要移除的节点依次操作)
先把要移除的节点停止运行:rabbitmqctl -n rabbit@rabbitmq2 stop_app 或者是rabbitmqctl -n rabbit@rabbitmq2 stop
再从集群中移除该节点:rabbitmqctl -n rabbit@rabbitmq4 forget_cluster_node rabbit@rabbitmq2
检查集群各节点状态:rabbitmqctl cluster_status
最后关闭移除原有集群节点的rabbit应用
8.新集群节点中的hosts文件移除原来集群的节点内容
先把内存节点都修改为磁盘节点(添加的时候已设置),然后重启节点 (部分节点修改成内存类似)
现有rabbitmq集群添加新节点,移除旧节点(可以作为rabbitmq集群迁移使用)的更多相关文章
- k8s集群节点更换ip 或者 k8s集群添加新节点
1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说:同时,k8s集群节点更换ip也相当于k8s集群添加新节点 ...
- Android自定义视图一:扩展现有的视图,添加新的XML属性
这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...
- Hadoop集群添加新节点步骤
1.在新节点中进行操作系统配置,包括主机名.网络.防火墙和无密码登录等. 2.在所有节点/etc/host文件中添加新节点 3.把namenode的有关配置文件复制到该节点 4.修改master节点s ...
- 大数据实操3 - hadoop集群添加新节点
hadoop集群支持动态扩展,不需要停止原有集群节点就可以实现新节点的加入. 我是使用docker搭建的进群环境,制作了镜像文件,这里以我的工作基础为例子介绍集群中添加集群的方法 一.制作一个新节点 ...
- hadoop集群添加新节点
0.说明 Hadoop集群已经运行正常,现在新买了一些机子,要加入到集群里面增加新的节点.以下就是增加的过程. 1.配置运行环境 安装与master和其他slave相同的java环境,jdk版本要相同 ...
- redis 集群添加新节点
准备好需要添加的节点:如何创建节点 启动创建的节点: 启动成功: 添加新节点:redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 第 ...
- etcd v3 ssl 集群添加新节点
集群搭建 下面只用同一台服务器进行三个成员节点的开启 节点1 ./etcd --name cd0 --initial-advertise-peer-urls http://127.0.0.1:2380 ...
- redis集群添加新节点
一.创建节点(接上文) 1.在H1服务器/root/soft目录下创建7002目录 2.将7001目录的配置文件redis.conf拷贝到7002,并修改配置文件的端口 3.进入 redis-5.0. ...
- k8s集群添加新得node节点
服务端操作: 方法一: 获取master的join token kubeadm token create --print-join-command 重新加入节点 kubeadm join 192.16 ...
随机推荐
- System类的常用方法和StringBuilder的原理
System类的常用方法1.currentTimeMillis方法2.arraycopy方法 java.lang.System 类中提供大量的静态方法,可以获取与系统相关的信息或系统级操作,在Syst ...
- 揭开周获 18k star 开源项目的神秘面纱「GitHub 热点速览 v.22.28」
本周 GitHub Trending 的项目重量十足,比如标题的一周获得 18k+ 的高性能 JS Runtime--bun,用性能来体现了它的"含金量".同样有重量的还有一行代码 ...
- springboot配置logback.xml
由于springboot框架自带log4j,因此我们只需配置下logback文件,即可, 在main/resources根目录下,新建logback-spring.xml文件,copy下述代码: &l ...
- CF1706A Another String Minimization Problem 题解
题意 给定一个长度为 \(n\) 的序列 \(a\) 以及一个长度为 \(m\) 的字符串 \(s\),初始 \(s\) 均为 \(\text{B}\),第 \(i\) 次操作可以把 \(s_{a_i ...
- 在 macOS 上搭建 Flutter 开发环境
下载 Flutter SDK flutter官网下载:https://flutter.io/sdk-archive/#macos 若上述链接无法访问,可通过GitHub下载 https://githu ...
- 从matlab的bwmorph函数的'majority'参数中扩展的一种二值图像边缘光滑的实时算法。
在matlab的图像处理工具箱中,有一系列关于Binary Images的处理函数,都是以字母bw开头的,其中以bwmorph函数选项最为丰富,一共有'bothat'.'branchpoints'.' ...
- [算法1-排序](.NET源码学习)& LINQ & Lambda
[算法1-排序](.NET源码学习)& LINQ & Lambda 说起排序算法,在日常实际开发中我们基本不在意这些事情,有API不用不是没事找事嘛.但必要的基础还是需要了解掌握. 排 ...
- 面试突击73:IoC 和 DI 有什么区别?
IoC 和 DI 都是 Spring 框架中的重要概念,就像玫瑰花与爱情一样,IoC 和 DI 通常情况下也是成对出现的.那 IoC 和 DI 什么关系和区别呢?接下来,我们一起来看. 1.IoC 介 ...
- Redis 17 缓存穿透 缓存击穿 缓存雪崩
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 使用缓存的问题 ...
- 搞定面试官 - 你可以介绍一下在 MySQL 中,哪些情况下 索引会失效嘛?
大家好,我是程序员啊粥,前边给大家分享了 *MySQL InnoDB 索引模型 在 MySQL InnoDB 中,为什么 delete 删除数据之后表数据文件大小没有变 如何计算一个索引的长度 如何查 ...