手動擴容
1聪铺、添加新節(jié)點到集群
./redis-cli -a xxx --cluster add-node newIP:newPort oldIP:oldPort
2、設置新節(jié)點主從關系
redis-cli -h 10.2.19.213 -p 6383 -a xxxx cluster replicate masterID
3摄杂、單個節(jié)點slot負載均衡
./redis-cli -a 密碼 --cluster reshard oldIP:oldPort
自動擴容
1坝咐、添加新節(jié)點到集群
./redis-cli -a xxx --cluster add-node newIP:newPort oldIP:oldPort
2、設置新節(jié)點主從關系
redis-cli -h 10.2.19.213 -p 6383 -a xxxx cluster replicate masterID
3析恢、所有節(jié)點墨坚,一次性reblance
--cluster-simulate 預估遷移槽位,不真正執(zhí)行映挂。
--cluster-pipeline 50 建議每次遷移50個key泽篮,以往這個數(shù)量很平穩(wěn)
--cluster-use-empty-masters 重新平方slot時,包含沒有slot 的節(jié)點
./redis-cli -a xxxx --cluster rebalance --cluster-use-empty-masters --cluster-simulate --cluster-pipeline 50 10.2.321.149:6380
./redis-cli -a xxxx --cluster rebalance --cluster-use-empty-masters --cluster-pipeline 50 10.2.321.149:6380
縮容
1柑船、剔除slave節(jié)點
./redis-cli -a xxxx --cluster del-node 10.2.324.28:6380 待刪除節(jié)點ID
2帽撑、如果是主節(jié)點,將slot遷移到其他節(jié)點鞍时。
3亏拉、master沒有slot時,也可以剔除逆巍。
常見問題
reshard 出錯后及塘,
[WARNING] Node 10.2.68.324:6391@16391 has slots in importing state (0).
[WARNING] Node 10.2.22.229:6380@16380 has slots in migrating state (0).
[WARNING] The following slots are open: 0
# 解決辦法
把目標節(jié)點的slot 刪除
redis-cli -h 10.2.68.324 -p 6391 -a 密碼 cluster delslots 0
slot 在migrating狀態(tài),需要關閉
>>> Check for open slots...
[WARNING] Node 10.2.22.229:6380@16380 has slots in migrating state (0).
[WARNING] The following slots are open: 0
>>> Fixing open slot 0
Set as migrating in: 10.2.22.229:6380@16380
Set as importing in:
[ERR] Sorry, Redis-trib can't fix this slot yet (work in progress). Slot is set as migrating in 10.2.22.229:6380@16380, as importing in , owner is 10.2.22.229:6380@16380
>>> Check slots coverage...
[OK] All 16384 slots covered.
# 必須連接出問題的 端口
redis-cli -h 10.2.22.229 -p 6380 -a 密碼 CLUSTER SETSLOT 0 STABLE
#遇到一次redis集群锐极,在擴容時報錯笙僚,最終選擇redis-shake遷移到新集群
當源端一次執(zhí)行多個key時,不在同一個slot中灵再,會導致擴容的失敗
CROSSSLOT Keys in request don't hash to the same slot