ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

现有rabbitmq集群添加新节点,移除旧节点(可以作为rabbitmq集群迁移使用)

2022-01-13 15:35:21  阅读:153  来源: 互联网

标签:rabbitmq rabbitmqctl hosts 集群 docker 节点


原有集群安装步骤: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,rabbitmqctl,hosts,集群,docker,节点
来源: https://www.cnblogs.com/sanduzxcvbnm/p/15797850.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有