1. 程式人生 > 實用技巧 >啟動Redis Cluster

啟動Redis Cluster

  • Redis版本5.0.5
  • 由於Cluster自帶Sentinel的故障轉移機制,所以不再需要開啟Sentinel
  • Shane這裡設定6380 6381 6382
  • 兩臺雲伺服器三主三從,一臺全放主一臺全放從
  • 一共6個配置檔案

配置Redis.conf

  • 複製一份原版的redis.conf
  • 對原版配置檔案的以下內容進行修改,其他不管
# bind 127.0.0.1
protected-mode no
# 其他配置檔案埠寫對應即可(6380 6381 6382)
port 6380
# 程序守護開啟(後臺執行)
daemonize yes
# pidfile、logfile、dir可以選一個自己喜歡的位置放(不解釋都是啥了,見名知意)
pidfile "/www/server/redis/redis-6380.pid"
logfile "/usr/local/redis/redis-6380.log"
dir "/usr/local/redis/data"
# 注意:Cluster模式下不可和主從複製同時開啟(5版本為replicaof 3版本為slaveof,將其保持為註釋狀態)
# 配置密碼
masterauth "passadmin"
requirepass "passadmin"
# aof和rdb兩種持久化可同時存在(那就都開啟吧)
appendonly yes
# Cluster配置
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000

開放埠

  • 配置完成後,需要開放埠
  • 在主節點的埠號上+10000
  • 16380 16381 16382

啟動節點

  • 將全部節點(6個節點)啟動
# cd進配置檔案所在地
redis-server redis-6380.conf

三主分配SLOT

  • 指定主節點都是誰
# *為指定的主節點IP,數字0是主從比例(因為沒有指定從所以為0),-a後面寫設定的密碼
redis-cli --cluster create *.*.*.*:6380 *.*.*.*:6381 *.*.*.*:6382 --cluster-replicas 0 -a passadmin

  • 輸入yes並回車
  • 從上圖還能看到各個主節點的ID,可以先記錄下來(後面也需要用到)
  • 沒記錄下來,也可以去日誌中檢視

新增從節點

  • 三個主節點弄完之後,可以為每個主節點,新增從節點了
# 第一個IP地址為從節點地址,第二個IP為主節點IP(從節點要從屬的主節點)
# 一大串亂七八糟的是主節點的ID(不知道可以從日誌中檢視)
# -a 為密碼(沒有去掉就行)
redis-cli --cluster add-node *.*.*.*:6380 *.*.*.*:6380 --cluster-slave --cluster-master-id e937d5721a6a9344db670754329e5c23a3b31006 -a passadmin

  • 如圖則新增成功,如果卡在Waiting for the cluster to join…然後一直出點點點,則為埠沒開放,需開放埠

測試

  • 隨便進一個cli
# -c為叢集的意思
redis-cli -c -p 6380
# 輸入密碼
auth passadmin
  • 輸入cluster nodes命令
cluster nodes

  • 輸入set shane 666 或者set redis 666,會發現有的情況下會redirect到Cluster分配的slot的主節點去
set shane 666
set redis 666

故障轉移測試

  • 手動shutdown一個主節點
  • 此時檢視日誌
  • 從日誌中可以看到已經成功將從節點提升為主節點(和Sentinel功能一致)
  • 再去cli中輸入cluster nodes看看
  • 從圖中可以看出方塊是原來的主節點,橢圓為原來的從節點,現在提升為了主節點

至此Cluster啟動完畢

轉載:https://blog.csdn.net/qq_44419912/article/details/105803592