本部署採用 3 主 3 從架構,跨三台 CentOS 6.5 節點:
- redis1 (192.168.188.18):主 6379 / 從 6380
- redis2 (192.168.188.28):主 6379 / 從 6380
- redis3 (192.168.188.38):主 6379 / 從 6380
主從交叉部署避免單點故障,確保高可用。
yum -y install tcl-develwget https://download.redis.io/releases/redis-3.0.7.tar.gz → make && make test && make installutils/install_server.sh,指定端口(6379/6380)、配置檔、日誌、資料目錄。服務註冊至 chkconfig 並設定開機自啟。/etc/init.d/redis_6379 status其餘節點重複上述步驟,修改端口與目錄即可。
編輯 /etc/redis/6379.conf,核心啟用項:
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000
重啟服務後,資料目錄下自動生成 nodes-6379.conf。
複製腳本:cp ./src/redis-trib.rb /usr/local/bin/
建立指令(--replicas 1 表示每主配一從):
/usr/local/bin/redis-trib.rb create --replicas 1 \
192.168.188.18:6379 192.168.188.28:6379 192.168.188.38:6379 \
192.168.188.18:6380 192.168.188.28:6380 192.168.188.38:6380
工具自動分配 16384 個槽位至 3 個主節點,並建立主從關係。輸入 yes 確認後,叢集啟動完成。
預設主從分配可能不符預期,需手動調整:
# 將 18:6380 設為 28:6379 的從節點
redis-cli -c -p 6380 -h 192.168.188.18
cluster replicate 654c0a7853724fe33683f54e8df665993ea704ed
# 將 38:6380 設為 18:6379 的從節點
redis-cli -c -p 6380 -h 192.168.188.38
cluster replicate 53c202561155d141a8e24d42bb8eb2907998fce9
# 持久化配置
cluster saveconfig
使用 redis-trib.rb check 192.168.188.18:6379 驗證槽位覆蓋率與主從狀態。
nodes-*.conf、重啟服務、降級 redis gem 至 3.0.7 版本。sysctl vm.overcommit_memory=1 寫入 /etc/sysctl.conf。echo never > /sys/kernel/mm/transparent_hugepage/enabled 加入 /etc/rc.local。