首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Redis Cluster 生產級部署:3 主 3 從架構、槽位分配、主從漂移修復、故障自動轉移全流程

     編輯:Java 綜合教學

架構要求

  • 最少 3 個 Master,每個 Master 配 1 個 Slave → 共 6 節點
  • 生產環境強制三台物理機,每機 2 實例(1M+1S),避免單點故障
  • 16384 個槽位均勻分配給 3 Master(~5461 slots/節點)

部署步驟(單機模擬 6 實例)

1. 編譯安裝 Redis 7.x

tar -zxf redis-7.2.4.tar.gz && cd redis-7.2.4
make && make install PREFIX=/usr/local/redis
ln -s /usr/local/redis/bin/redis-* /usr/local/bin/

2. 建立 6 個實例目錄與配置

mkdir -p /data/redis_cluster/{7000,7001,7002,7003,7004,7005}
# 7000.conf 範例
port 7000
daemonize yes
pidfile /var/run/redis_7000.pid
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
bind 0.0.0.0
# 其餘 7001-7005 修改 port/pidfile 即可

3. 啟動 6 實例

for port in 7000 7001 7002 7003 7004 7005; do
  redis-server /data/redis_cluster/$port/redis.conf
done
ps -ef | grep redis-server

4. 建立集群

# 安裝 ruby & gem
yum install -y ruby ruby-devel rubygems
gem install redis -v 4.8.0

# 創建:--replicas 1 表示每個 master 1 個 slave
redis-cli --cluster create \
  192.168.2.9:7000 192.168.2.10:7002 192.168.2.7:7004 \
  192.168.2.10:7003 192.168.2.7:7005 192.168.2.9:7001 \
  --cluster-replicas 1
# 輸入 yes 確認

主從關係修復(關鍵運維技能)

創建時隨機分配可能導致 Master/Slave 同機,必須調整:

# 1. 檢查現狀
redis-cli --cluster check 192.168.2.9:7000

# 2. 刪除錯誤從節點(需 node-id)
redis-cli --cluster del-node 192.168.2.10:7003 

# 3. 重新啟動該實例(清空數據文件)
rm -f /data/redis_cluster/7003/*.rdb /data/redis_cluster/7003/*.aof /data/redis_cluster/7003/nodes.conf
redis-server /data/redis_cluster/7003/redis.conf

# 4. 作為正確 Master 的 Slave 加入
redis-cli --cluster add-node --slave --master-id  192.168.2.10:7003 192.168.2.9:7000

驗證與監控

# 槽位覆蓋檢查
redis-cli --cluster check 192.168.2.9:7000
# 輸出應包含 [OK] All 16384 slots covered.

# 客戶端連接(支援集群模式)
redis-cli -c -h 192.168.2.9 -p 7000
# -c 參數自動重定向 MOVED/ASK

故障自動轉移機制

  1. Master 掛掉 → Slave 發起選舉(Raft 協議變體)
  2. 獲得多數 Master 投票 → 升級為新 Master
  3. 更新槽位映射 → 通知所有節點更新 nodes.conf
  4. Client 透過 MOVED 重定向感知新拓撲

生產環境清單

  • 三台機器,防火牆開放 7000-7005 + 17000-17005(cluster bus)
  • cluster-node-timeout 15000 避免網絡抖動誤觸發故障轉移
  • replica-validity-factor 10 允許 Slave 落後較多仍可選舉
  • 備份策略:每日全量 RDB + 實時 AOF,異地存儲
  • 監控:INFO replication、CLUSTER INFO、CLUSTER NODES 關鍵指標接入 Prometheus
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved