【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
常用排錯流程(超快)
-
Sentinel 能不能連:
PING
-
master 位址:
SENTINEL get-master-addr-by-name mymaster
-
master 狀態:
SENTINEL master mymaster
-
replicas 狀態:
SENTINEL replicas mymaster
-
quorum 是否健康:
SENTINEL ckquorum mymaster
小提醒(你很常遇到的)
-
Sentinel 不支援
SELECT,因為它不是資料庫服務,是監控/仲裁服務。 -
SENTINEL get-master-addr-by-name回的 IP/HostName 對外能不能用,取決於你的網路(Docker 內外網、DNS、announce 等設定)。