文章目錄
手動觸發 Redis failover
之前筆記 手動觸發 MongoDB failover 紀錄到如何透過 mongo cli 來進行 failover
今天接著紀錄如何使用 redis cli 來進行 failover
停止服務可以分為:
server level (服務運作的實體機器無法提供服務運行:停機 or 網路斷線)
驗證方式:機器 reboot 或是拔除網路線
service level (服務異常:資源不足、服務本身出現錯誤….)
驗證方式:停止 service process 或是 使用 service 指令執行
今天只會紀錄針對 redis service 進行 failover 的部份
基本環境說明
- macOS Catalina 10.15.5
- docker desktop community 2.3.0.3(45519)
docker images
- redis 6.0.4
redis replication
建立方式請參考之前筆記 使用 docker 建立 Redis Master-Slave Replication Instance
redis cluster
建立方式請參考之前筆記 使用 Helm 在 Kubernetes 上安裝 Redis Cluster
確認 redis master 語法
指令是針對 redis sentinel 的,記得連線至 redis sentinel
語法
redis-cli [-h {redis ip}] [-p {redis port}] [-a {redis auth password}] SENTINEL get-master-addr-by-name {master name}
範例
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
在 Redis Replication 上進行 failover
兩種方式擇一即可,各有優缺點
讓 master 暫時停止回應
需要對
master
下指令語法
redis-cli [-h {redis ip}] [-p {redis port}] [-a {redis auth password}] DEBUG sleep {秒數}
範例
redis-cli -p 6379 DEBUG sleep 30
成功 failover
sentinel api
指令是針對 redis sentinel 的,記得連線至 redis sentinel
語法
redis-cli [-h {redis ip}] [-p {redis port}] [-a {redis auth password}] SENTINEL failover {master name}
範例
redis-cli -p 6379 SENTINEL failover mymaster
成功 failover
在 Redis Cluster 上進行 failover
指令需要下在 cluster replica (slave) node 上,會將該 replica 提昇為 master
語法
redis-cli -h {cluster replica(slave) host} -p {cluster slave port} cluster failover
範例
redis-cli -h redis-cluster-shard0-announce-1.redis.svc.cluster.local -p 6379 cluster failover
成功 failover
心得
redis 的手動 failover 在實際執行上有較多限制:指令的對象有較嚴格的規定,但仔細想想也是合理,failover 雖然是簡單的指令,但難免對於正式服務造成異動,在指令的執行條件上有較多規範以預防人為問題出現操作錯誤是件好事
參考資訊
文章作者 Yowko Tsai
上次更新 2020-12-11
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。