現有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文件移除原來集群的節點內容

先把內存節點都修改為磁盤節點(添加的時候已設置),然后重啟節點 (部分節點修改成內存類似)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM