down redis叢集_Spring整合Redis哨兵配置
技術標籤:down redis叢集
什麼是哨兵
Sentinel(哨兵)是用於監控Redis叢集中Master狀態工具,可以監視一個或者多個redis master服務,以及這些master服務的所有從服務;當某個master服務宕機後,會把這個master下的某個服務升級為master來替代已宕機的master繼續工作,是Redis高可用解決方案。
部署建議
哨兵節點要有至少3個或者奇數個節點(哨兵在做故障轉移時,少數服從多數,選舉leader)
哨兵分散式部署最好是在不同的計算機節點(如果部署在同一計算機節點,容災性及效能相對比較弱)
一組哨兵建議只監聽一組主從(有利於提高效能)
配置Sentinel(dev201 dev202 dev203)
[[email protected] redis]# vim /usr/local/redis/sentinel.conf
#不限制ip訪問 protected-mode no port 26379 #後臺執行 daemonize yes pidfile "/var/run/redis-sentinel.pid" #日誌 logfile "/usr/local/redis/sentinel/redis-sentinel.log" #工作目錄 dir /usr/local/redis/sentinel/ #監聽配置 及 哨兵數量 #sentinel monitor <master-group-name master> <ip> <port> <quorum> #<master-group-name master> master名稱 <quorum> 哨兵數量 sentinel monitor andrick-master 192.168.1.201 6379 2 #配置哨兵連線master密碼 sentinel auth-pass andrick-master 123456 #哨兵認為master dwon機的間隔時間 sentinel down-after-milliseconds andrick-master 10000 #master並行同步的數量,剩餘的slaves重新和新的master做同步的並行數 sentinel parallel-syncs andrick-master 1 #故障轉移,哨兵執行超時時間(主備切換的超時時間),超過這個時間後,會由其它哨兵來處理 sentinel failover-timeout andrick-master 180000
#增加 dev201 down 機後,連線master的密碼
[[email protected] redis]# vim redis.conf (主從是可以不用修改masterauth,這裡要補上)
masterauth 123456
#配置完dev201 分別把配置檔案複製到其它兩臺伺服器的sentinel
[[email protected] redis]# scp ./sentinel.conf [email protected]:/usr/local/redis/
sentinel.conf 100% 9826 9.6KB/s 00:00
[ [email protected] redis]# scp ./sentinel.conf [email protected]:/usr/local/redis/ sentinel.conf
#啟動sentinel [[email protected] redis]# redis-sentinel sentinel.conf
注:當master down掉後,slave 會選舉一個作為master;而master up 後,會變為slave。
一般 naster資料無法同步給 slave的方案檢查為如下:
1.網路通訊問題,要保證互相ping通,內網互通。
2.關閉防火牆,對應的埠開發(虛擬機器中建永久關閉防火牆,雲伺服器的話需要保證內網互通)。
3.統一所有的密碼,不要漏了某個節點沒有設定。
哨兵資訊查詢
[[email protected] redis]# redis-cli -p 26379
檢視andrick-master下的主節點資訊
127.0.0.1:26379> sentinel master andrick-master
1) "name"
2) "andrick-master"
3) "ip"
4) "192.168.1.203"
5) "port"
6) "6379"
7) "runid"
8) "3429a849f17c51e11e892c7df1adeaab65eded44"
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) "805"
19) "last-ping-reply"
20) "805"
21) "down-after-milliseconds"
22) "10000"
23) "info-refresh"
24) "6547"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "3390366"
29) "config-epoch"
30) "1"
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"
檢視andrick-master下從節點資訊
127.0.0.1:26379> sentinel slaves andrick-master
1) 1) "name"
2) "192.168.1.202:6379"
3) "ip"
4) "192.168.1.202"
5) "port"
6) "6379"
7) "runid"
8) "c9c1e659e488eff9593d40cd6c2957f3c8925d42"
9) "flags"
10) "slave"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "479"
19) "last-ping-reply"
20) "479"
21) "down-after-milliseconds"
22) "10000"
23) "info-refresh"
24) "5869"
25) "role-reported"
26) "slave"
27) "role-reported-time"
28) "3530137"
29) "master-link-down-time"
30) "0"
31) "master-link-status"
32) "ok"
33) "master-host"
34) "192.168.1.203"
35) "master-port"
36) "6379"
37) "slave-priority"
38) "100"
39) "slave-repl-offset"
40) "864069"
2) 1) "name"
2) "192.168.1.201:6379"
3) "ip"
4) "192.168.1.201"
5) "port"
6) "6379"
7) "runid"
8) "6d172b61e7ec702e88f611107206394b61e5c009"
9) "flags"
10) "slave"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "543"
19) "last-ping-reply"
20) "543"
21) "down-after-milliseconds"
22) "10000"
23) "info-refresh"
24) "8179"
25) "role-reported"
26) "slave"
27) "role-reported-time"
28) "3530137"
29) "master-link-down-time"
30) "0"
31) "master-link-status"
32) "ok"
33) "master-host"
34) "192.168.1.203"
35) "master-port"
36) "6379"
37) "slave-priority"
38) "100"
39) "slave-repl-offset"
40) "863467"
127.0.0.1:26379>
檢視andrick-master下的哨兵節點資訊
由於上面配置了2個哨兵所以:
127.0.0.1:26379> sentinel sentinels andrick-master
1) 1) "name"
2) "1053fd8f25198b1c6654f9b1815bf43b873f808a"
3) "ip"
4) "192.168.1.203"
5) "port"
6) "26379"
7) "runid"
8) "1053fd8f25198b1c6654f9b1815bf43b873f808a"
9) "flags"
10) "sentinel"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "523"
19) "last-ping-reply"
20) "523"
21) "down-after-milliseconds"
22) "10000"
23) "last-hello-message"
24) "455"
25) "voted-leader"
26) "?"
27) "voted-leader-epoch"
28) "0"
2) 1) "name"
2) "fce2017d4f744d218b2d6c6a0dfbebabf12e2f4c"
3) "ip"
4) "192.168.1.202"
5) "port"
6) "26379"
7) "runid"
8) "fce2017d4f744d218b2d6c6a0dfbebabf12e2f4c"
9) "flags"
10) "sentinel"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "285"
19) "last-ping-reply"
20) "285"
21) "down-after-milliseconds"
22) "10000"
23) "last-hello-message"
24) "793"
25) "voted-leader"
26) "?"
27) "voted-leader-epoch"
28) "0"
Spring Redis哨兵配置
哨兵(主從複製)配置:
redis:
database: 1
password: 123456
sentinel:
master: andrick-master
nodes: dev201:26379,dev202:26379,dev203:26379
單機版本如下:
redis:
database: 0
host: 192.168.1.200
lettuce:
pool:
max-active: 50
max-idle: 20
max-wait: 10000
min-idle: 5
password:
port: 6379
ssl: false
timeout: 2000