原有集群安装步骤: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集群迁移使用)的更多相关文章

  1. k8s集群节点更换ip 或者 k8s集群添加新节点

    1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说:同时,k8s集群节点更换ip也相当于k8s集群添加新节点 ...

  2. Android自定义视图一:扩展现有的视图,添加新的XML属性

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...

  3. Hadoop集群添加新节点步骤

    1.在新节点中进行操作系统配置,包括主机名.网络.防火墙和无密码登录等. 2.在所有节点/etc/host文件中添加新节点 3.把namenode的有关配置文件复制到该节点 4.修改master节点s ...

  4. 大数据实操3 - hadoop集群添加新节点

    hadoop集群支持动态扩展,不需要停止原有集群节点就可以实现新节点的加入. 我是使用docker搭建的进群环境,制作了镜像文件,这里以我的工作基础为例子介绍集群中添加集群的方法 一.制作一个新节点 ...

  5. hadoop集群添加新节点

    0.说明 Hadoop集群已经运行正常,现在新买了一些机子,要加入到集群里面增加新的节点.以下就是增加的过程. 1.配置运行环境 安装与master和其他slave相同的java环境,jdk版本要相同 ...

  6. redis 集群添加新节点

    准备好需要添加的节点:如何创建节点 启动创建的节点: 启动成功: 添加新节点:redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000  第 ...

  7. etcd v3 ssl 集群添加新节点

    集群搭建 下面只用同一台服务器进行三个成员节点的开启 节点1 ./etcd --name cd0 --initial-advertise-peer-urls http://127.0.0.1:2380 ...

  8. redis集群添加新节点

    一.创建节点(接上文) 1.在H1服务器/root/soft目录下创建7002目录 2.将7001目录的配置文件redis.conf拷贝到7002,并修改配置文件的端口 3.进入 redis-5.0. ...

  9. k8s集群添加新得node节点

    服务端操作: 方法一: 获取master的join token kubeadm token create --print-join-command 重新加入节点 kubeadm join 192.16 ...

随机推荐

  1. 常用Linux音译

    su:Swith user 切换用户,切换到root用户 cat: Concatenate 串联 uname: Unix name 系统名称 df: Disk free 空余硬盘 du: Disk u ...

  2. 2 Zookeeper 单击安装

    (二)Zookeeper 本地模式安装 下载地址 镜像库地址:http://archive.apache.org/dist/zookeeper/ apache-zookeeper-3.6.0.tar. ...

  3. 1.JS中变量的重新声明和提升

    重新声明 1.允许在程序的任何位置使用 var 重新声明 JavaScript 变量: 实例 var x = 10; // 现在,x 为 10 var x = 6; // 现在,x 为 6 2.在相同 ...

  4. Java开发学习(二十二)----Spring事务属性、事务传播行为

    一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...

  5. HTML5 基础学习

    HTML 基础学习 参考资料 视频课程:https://www.bilibili.com/video/BV14J4114768 W3C文档:https://webplatform.github.io/ ...

  6. MySQL Update执行流程解读

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 一.update跟踪执行配置 使用内部程序堆栈跟踪工具path_viewer,跟踪mysql update 一行数据的执行 ...

  7. 针对单个球体的World类

    好了,终于到了可以看到图片的环节了.之前的类,你一定要实现好了.所有关于World类的报错,现在我们一个一个解决来了. 先看看World类的声明: #pragma once #ifndef __WOR ...

  8. 飞书前端提到的竞态问题,在 Android 上怎么解决?

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  9. 「vijos-bashu」lxhgww的奇思妙想(长链剖分)

    倍增离线,预处理出爹和孙子们.查询\(O(1)\) #include <cstdio> #include <cstring> #include <numeric> ...

  10. Java SE 9 新增特性

    Java SE 9 新增特性 作者:Grey 原文地址: Java SE 9 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new_ ...