首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

MongoDB 複制集仲裁節點部署實戰:確保自動故障轉移

     編輯:DB2 教學

MongoDB 複制集仲裁節點部署實戰:確保自動故障轉移

MongoDB 複制集要求多數派 (Majority) 選舉 Primary。當節點數為偶數時,需部署 **Arbiter (仲裁節點)** 參與投票但不存儲數據,以最小資源成本保障高可用。本文記錄從雙節點改造為「雙節點 + 仲裁」的完整流程與驗證。

架構演進

階段節點配置投票成員故障轉移能力
初始PRIMARY (11:27017) + SECONDARY (12:27018) + SECONDARY (13:27019)3正常
移除一節點PRIMARY (11:27017) + SECONDARY (12:27018)2 (偶數)失效 - Primary 掛掉無法選舉新 Primary
加入 ArbiterPRIMARY + SECONDARY + ARBITER (13:27019)3 (奇數)恢復正常

部署 Arbiter 步驟 (在 192.168.1.13)

# 1. 建立資料目錄 (極小,僅存儲配置與投票狀態)
mkdir -p /var/lib/mongo/arbiter
chown mongod:mongod /var/lib/mongo/arbiter

# 2. 配置 mongod.conf
cat > /etc/mongod.conf <

從 Primary 加入 Arbiter 並驗證

# 1. 連線 Primary
mongo mongodb11.kk.net:27017

# 2. 加入仲裁節點
rs.addArb("mongodb13.kk.net:27019")

# 3. 驗證配置
rs.conf()
db.isMaster()
# 輸出應包含:
# "arbiters" : [ "mongodb13.kk.net:27019" ]
# "hosts" : [ "mongodb11.kk.net:27017", "mongodb12.kk.net:27018" ]

故障轉移驗證測試

# 1. 模擬 Primary 進程掛掉
kill $(pgrep mongod)  # 在 192.168.1.11

# 2. 連線 Secondary 觀察
mongo mongodb12.kk.net:27018
db.isMaster()
# 應顯示 "ismaster" : true,Primary 自動切換至 12:27018

# 3. 重啟原 Primary,觀察其降級為 Secondary
service mongod start  # 在 192.168.1.11
db.isMaster()  # 顯示 "secondary" : true

Arbiter 關鍵特性總結

  • 不存儲數據: dbpath 僅佔用極少空間 (MB 級),無 .wt 數據檔。
  • 僅參與投票: 不同步 Oplog,不提供讀取服務 (可讀取複制集配置資訊)。
  • 部署彈性: 可部署於應用伺服器、監控伺服器、獨立 VM,**嚴禁與數據節點同機** (失去隔離意義)。
  • 數量限制: 複制集最多 50 成員,投票成員最多 7 個 (含 Primary)。
  • 優先級設定: Arbiter priority: 0 (預設),永遠不會成為 Primary。

生產環境建議

  1. 標準架構:3 數據節點 (1P+2S) + 1-2 Arbiter,跨可用區部署。
  2. 監控指標:replSetGetStatus 中 stateStr、optimeDate 差距、electionId 變更頻率。
  3. 網路要求:節點間 RTT < 5ms,心跳間隔 2s,選舉超時 10s。
  4. 安全性:啟用 keyFile 或 x.509 認證,配置 bindIp 限制存取來源。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved