跳到主內容

【Redis】Sentinel 相關指令

下面整理一份「常用 Redis Sentinel 指令速查」(以你目前 master name = mymaster 為例)。
先記得:Sentinel 是連 26379(或你映射的 26380/26381),而且很多命令需要先 AUTH(若你 Sentinel 有開帳密)。


連線與基本檢查

redis-cli -h <sentinel_ip> -p 26379
redis-cli -h <sentinel-host> -p 26379 --user <sentinel-user> -a <sentinel-pass>
  • 測連線

PING

10.10.10.202:26379> ping
PONG
  • 目前登入的 ACL user(若開 ACL)

ACL WHOAMI
  • 授權(若需要)

AUTH <user> <password>
# 或舊式
AUTH <password>

查 master / topology(最常用)

  • 查所有被監控的 masters(摘要列表)

SENTINEL masters

1)  1) "name"
    2) "mymaster"
    3) "ip"
    4) "10.10.10.202"
    5) "port"
    6) "6379"
    7) "runid"
    8) "3bf7dbeca2952f3b9bbe3961b2b75bc3c03bc040"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "533"
   19) "last-ping-reply"
   20) "533"
   21) "down-after-milliseconds"
   22) "30000"
   23) "info-refresh"
   24) "7634"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "44657033"
   29) "config-epoch"
   30) "9"
   31) "num-slaves"
   32) "2"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"
  • 查特定 master 的詳細資訊

SENTINEL master mymaster
  • 取得 master 的位址(最常用,拿 IP/Port)

SENTINEL get-master-addr-by-name mymaster
  • 查 master 的 replicas(從節點清單)

SENTINEL replicas mymaster
# 舊名(相容)
SENTINEL slaves mymaster
  • 查同一個 master 的其他 sentinels

SENTINEL sentinels mymaster

健康/狀態判斷(排錯必備)

  • 看 master 是否被標記 down、目前狀態旗標

SENTINEL master mymaster
# 觀察 "flags"、"last-ok-ping-reply"、"s-down-time" 等欄位
  • Sentinel 自己資訊(版本、runid、監控數量)

INFO
  • 看 Sentinel 的事件(需要開啟通知才會比較多)

SENTINEL ckquorum mymaster

這個會告訴你 quorum 是否足夠(例如你設定 quorum=2,是否能形成共識)。


故障轉移操作(小心用)

  • 立即對指定 master 觸發 failover

SENTINEL failover mymaster
  • 中止正在進行的 failover(如果卡住)

SENTINEL abortfailover mymaster
  • 主動要求 Sentinel 重新掃描、更新配置(常用在手動改 IP/Port 後)

SENTINEL reset mymaster
# 或 reset 全部(小心)
SENTINEL reset *

動態改監控設定(線上調參)

  • 修改 down-after-milliseconds(多久沒回就判定 down)

SENTINEL set mymaster down-after-milliseconds 30000
  • 修改 failover-timeout(failover 超時)

SENTINEL set mymaster failover-timeout 180000
  • 修改 parallel-syncs(一次同步幾台 replica)

SENTINEL set mymaster parallel-syncs 1
  • 修改 quorum(通常不建議頻繁改)

SENTINEL set mymaster quorum 2
  • 查看目前可用的 set 參數(不同版本可能略不同)

SENTINEL help

通知與腳本(你目前有 deny)

你現在設定:

sentinel deny-scripts-reconfig yes

所以 sentinel 腳本重配置會被限制。常見指令/配置(了解用):

  • 設定通知腳本(在 config 檔內)

sentinel notification-script mymaster /path/to/script
sentinel client-reconfig-script mymaster /path/to/script

常用排錯流程(超快)

  1. Sentinel 能不能連:

PING
  1. master 位址:

SENTINEL get-master-addr-by-name mymaster
  1. master 狀態:

SENTINEL master mymaster
  1. replicas 狀態:

SENTINEL replicas mymaster
  1. quorum 是否健康:

SENTINEL ckquorum mymaster

小提醒(你很常遇到的)

  • Sentinel 不支援 SELECT,因為它不是資料庫服務,是監控/仲裁服務。

  • SENTINEL get-master-addr-by-name 回的 IP/HostName 對外能不能用,取決於你的網路(Docker 內外網、DNS、announce 等設定)。