OpenResty Edge 高可用資料庫叢集管理工具

簡介

OpenResty Edge 高可用資料庫叢集管理工具是一個用於管理高可用資料庫叢集的命令列工具。它可以幫助使用者快速搭建和管理一個包含監控節點(monitor)和資料節點(data)的資料庫叢集。

架構

叢集包含以下元件:

  • 一個監控節點:管理叢集狀態並協調故障轉移
  • 兩個或多個資料節點:一個主節點(primary)和一個或多個備用節點(secondary)

系統要求

  • 作業系統:Linux(支援 systemd)
  • 記憶體:最少 2GB
  • 硬碟空間:最少 5GB,具體大小需根據實際資料庫資料大小來調整
  • 已安裝 OpenResty PostgreSQL 12 或更高版本
  • 防火牆埠:5432
  • 網路:所有節點之間必須能夠相互通訊

功能特性

  • 安裝、啟動、停止監控節點或資料節點
  • 查詢資料庫叢集狀態
  • 管理資料庫 HBA(Host-Based Authentication)配置
  • 支援切換叢集監控節點
  • 自動故障轉移能力

重要提示

  1. 建議先在非生產環境進行測試
  2. 安裝前務必備份重要資料,可參考此文件
  3. 在維護時間執行操作
  4. 切換監控節點時,先對主資料節點(如存活)執行切換操作,再對從資料節點執行切換操作
  5. 謹慎使用 -y 選項,因為它會跳過所有確認提示,可能會造成資料不一致、損壞或丟失。

安裝步驟

  1. 下載管理工具:
curl -O https://openresty.com/client/oredge/openresty-edge-db-cluster-manager.sh
  1. 安裝監控節點:
sudo bash openresty-edge-db-cluster-manager.sh -a install -t monitor -n 監控節點IP
  1. 安裝一個或多個資料節點:(第一個成功安裝的節點將作為主節點)
sudo bash openresty-edge-db-cluster-manager.sh -a install -t data -m 監控節點IP -n 節點IP
  1. 檢查叢集狀態:
sudo bash openresty-edge-db-cluster-manager.sh -a get -c "cluster state" -m 監控節點IP

工具用法

基本語法

sudo bash openresty-edge-db-cluster-manager.sh [選項]

命令選項

-a, --action       操作型別 (install/start/stop/get/set/switchover/uninstall)
-t, --type         節點型別 (monitor/data)
-m, --monitor-ip   監控節點 IP 地址
-n, --node-ip      當前節點 IP 地址
-v, --pg-version   PostgreSQL 版本(預設:12)
-y, --yes          跳過所有確認並使用預設值(警告:這將自動確認破壞性操作)
-c, --config       配置型別 (get: cluster state/node type/service status, set: pghba)
-i, --pg-hba-ips   PostgreSQL HBA IP 地址列表(逗號分隔)
-s, --switch-type  切換型別 (switch to new monitor)
-h, --help         顯示幫助資訊

常用示例

以完全互動的模式執行:

sudo bash openresty-edge-db-cluster-manager.sh

安裝監控節點:

sudo bash openresty-edge-db-cluster-manager.sh -a install -t monitor -n 192.168.1.10

安裝資料節點:

sudo bash openresty-edge-db-cluster-manager.sh -a install -t data -m 192.168.1.10 -n 192.168.1.11

檢查叢集狀態:

sudo bash openresty-edge-db-cluster-manager.sh -a get -c "cluster state" -m 192.168.1.10

獲取節點型別:

sudo bash openresty-edge-db-cluster-manager.sh -a get -c "node type"

配置資料庫 HBA:

sudo bash openresty-edge-db-cluster-manager.sh -a set -c pghba -t data -i "192.168.1.10,192.168.1.11"

切換到新的監控節點:

sudo bash openresty-edge-db-cluster-manager.sh -a switchover -s "switch to new monitor" -m 192.168.1.12

解除安裝監控節點:

sudo bash openresty-edge-db-cluster-manager.sh -a uninstall -t monitor

切換監控節點的場景

本節詳細描述了不同場景下的監控節點切換操作步驟。 假設初始叢集包含:1個監控節點(monitor),1個主資料節點(primary),1個備用資料節點(secondary)。 監控節點沒有故障時,通常無需進行切換,如果希望進行切換,請先停止監控節點。

請注意:

  1. 執行切換操作前,請確保新監控節點已經正確安裝並執行
  2. 切換操作期間可能會短暫影響資料庫服務
  3. 每次切換後都要驗證叢集狀態
  4. 建議在維護時間視窗執行切換操作
  5. 操作前備份重要資料
  6. 保留詳細的操作日誌,以便故障排查

可以使用以下命令在資料節點上獲取該節點的型別:

sudo bash openresty-edge-db-cluster-manager.sh -a get -c "node type"
  • monitor: 監控節點
  • primary: 主節點
  • secondary:備用節點

場景一:監控節點可恢復

當監控節點發生臨時故障但可恢復時,那麼無需進行監控節點切換:

  1. 修復監控節點的故障

  2. 重新啟動監控節點服務:

    sudo bash openresty-edge-db-cluster-manager.sh -a start -t monitor
    
  3. 驗證叢集狀態:

    sudo bash openresty-edge-db-cluster-manager.sh -a get -c "cluster state" -m MONITOR_IP
    

場景二:監控節點無法恢復,但所有資料節點正常

當監控節點無法恢復,但所有資料節點正常執行時,需要將所有資料節點都遷移到新的監控節點。

  1. 在新伺服器上安裝新的監控節點:

    sudo bash openresty-edge-db-cluster-manager.sh -a install -t monitor -n NEW_MONITOR_IP
    
  2. 切換主資料節點到新監控節點:

    sudo bash openresty-edge-db-cluster-manager.sh -a switchover -s "switch to new monitor" -m NEW_MONITOR_IP
    
  3. 在備用資料節點上執行相同的切換操作:

    sudo bash openresty-edge-db-cluster-manager.sh -a switchover -s "switch to new monitor" -m NEW_MONITOR_IP
    
  4. 驗證叢集狀態:

    sudo bash openresty-edge-db-cluster-manager.sh -a get -c "cluster state" -m NEW_MONITOR_IP
    

場景三:監控節點和備用節點故障,主節點正常

當監控節點和備用資料節點同時故障,但主資料節點正常時:

  1. 在新伺服器上安裝新的監控節點:

    sudo bash openresty-edge-db-cluster-manager.sh -a install -t monitor -n NEW_MONITOR_IP
    
  2. 切換主資料節點到新監控節點:

    sudo bash openresty-edge-db-cluster-manager.sh -a switchover -s "switch to new monitor" -m NEW_MONITOR_IP
    
  3. 驗證叢集狀態:

    sudo bash openresty-edge-db-cluster-manager.sh -a get -c "cluster state" -m NEW_MONITOR_IP
    
  4. 修復或重新安裝備用節點(可選)

場景四:監控節點和主資料節點故障,備節點正常

當監控節點和主資料節點同時故障,但備用資料節點正常時:

  1. 在新伺服器上安裝新的監控節點:

    sudo bash openresty-edge-db-cluster-manager.sh -a install -t monitor -n NEW_MONITOR_IP
    
  2. 切換備用資料節點到新監控節點:

    sudo bash openresty-edge-db-cluster-manager.sh -a switchover -s "switch to new monitor" -m NEW_MONITOR_IP
    

    當工具提示"Will promote current node to primary. Continue?“時,選擇"y"以將此節點提升為主節點。

  3. 驗證叢集狀態:

    sudo bash openresty-edge-db-cluster-manager.sh -a get -c "cluster state" -m NEW_MONITOR_IP
    
  4. 修復或重新安裝原主節點作為備用節點(可選)

操作日誌和歷史記錄

  • 每次執行都會建立獨立的歷史記錄目錄:oredge-db-cluster-histories/<時間戳>
  • 所有操作日誌都儲存在 oredge-db-cluster-histories/<時間戳>/script.log

錯誤處理

如果遇到錯誤,可以按照以下步驟排查:

  1. 檢查日誌檔案中的詳細資訊
  2. 驗證節點之間的網路連線
  3. 確認系統要求已滿足
  4. 確保沒有埠衝突
  5. 驗證資料庫服務安裝狀態

常見問題

  1. 監控節點故障時會發生甚麼?

    • 資料節點將繼續執行
    • 可以使用切換命令切換到新的監控節點
  2. 自動故障轉移是如何觸發的?

    • 監控節點持續檢查資料節點的健康狀態
    • 如果主節點發生故障或重啟,將自動提升一個備用節點
  3. 能否向現有叢集新增更多節點?

    • 可以,使用帶資料節點型別的安裝命令
    • 新節點中舊資料將被清空,並自動與主節點同步
  4. 節點啟動失敗時該怎麼辦?