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/
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 即可
for port in 7000 7001 7002 7003 7004 7005; do
redis-server /data/redis_cluster/$port/redis.conf
done
ps -ef | grep redis-server
# 安裝 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
nodes.confcluster-node-timeout 15000 避免網絡抖動誤觸發故障轉移replica-validity-factor 10 允許 Slave 落後較多仍可選舉INFO replication、CLUSTER INFO、CLUSTER NODES 關鍵指標接入 Prometheus