1. 程式人生 > 其它 >down redis叢集_Spring整合Redis哨兵配置

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

3db18024eb47ef586bc59e4df672113a.png

注:當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