位於redis解壓根目錄下:sentinel.confweb
每個哨兵均可以去監控多個master-slaves的主從架構redis
由於生產環境通常會部署多個master-slaves的redis主從集羣緩存
相同的一套哨兵集羣,能夠去監控不一樣的多個redis主從集羣。架構
你能夠給每一個redis主從集羣分配一個邏輯的名稱:編輯器
sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 複製代碼
指定一個master的監控,給監控的master指定一個名稱,指定監控的IP地址和端口號,2表示qronum。flex
至少須要quorum個哨兵一致贊成,master進程掛掉了,獲取slave進程掛掉了,獲取要啓動一個故障轉移操做。ui
quorum是用來識別故障的,真正執行故障轉移的時候,還要在哨兵集羣執行選舉,選舉一個哨兵進程出來進行故障轉移操做。url
假若有5個哨兵,quorum設置了2,那麼5個哨兵中的2個都認爲master掛掉了,master纔會認爲是odown了。就會從2個哨兵中的選舉一個哨兵,來執行故障轉移。若是5個哨兵中有3個哨兵都是運行的,那麼故障轉移就會別容許執行。spa
超過多少毫秒跟一個redis實例端口了鏈接,哨兵就可能認爲redis實例掛掉了。.net
執行故障轉移的timeout的超時時長,若是限定時長內沒有完成故障轉移,就會認爲執行故障轉移失敗,就從剩下的哨兵選擇一個哨兵重新執行故障轉移。
新的master切換以後,容許同時有多少個slave被切換到去鏈接新的master,從新作同步,數字越低,花費的事件就越高。
假如你的redis是1個master,4個slave
而後你的master宕機了,4個salve中有一個切換成了master,剩下3個slave就要掛到新的master上去。
這個時候,若是parallel-syncs是1,那麼3個slave,會一個接一個掛到新的master上面去,一個掛完後,並且重新的master sync完數據以後,再掛接下一個。
若是parallel-syncs是3,那麼一次性就會把全部的slave掛接到新的master上去。
eshop-cache01,eshop-cache02,eshop-cache03上安裝redis,並啓動。
# 安裝tcl
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz tar -xzvf tcl8.6.1-src.tar.gz cd /usr/local/tcl8.6.1/unix/ ./configure make && make install # 安裝redis tar -zxvf redis-3.2.8.tar.gz cd redis-3.2.8 make && make test make install 複製代碼
哨兵默認是用26279端口,默認不能跟其餘集羣在指定端口聯通,只能在本地訪問
mkdir /etc/sentinal
mkdir -p /var/sentinal/5000/log # 編輯etc/sentinel/5000.conf cp sentinal.conf 5000.conf vi 5000.conf 複製代碼
# redis綁定端口
port 5000 # redis綁定ip bind 192.168.31.187 # redis綁定緩存存儲目錄 dir /var/sentinal/5000 # 哨兵綁定端口,ip,設置quorum sentinel monitor mymaster 192.168.0.102 6379 2 # 哨兵鏈接 master 超時時間 sentinel down-after-milliseconds mymaster 30000 # 哨兵設置 哨兵故障轉移超時時間 sentinel failover-timeout mymaster 60000 # 哨兵設置 運行同時掛載到新master的slave數量 sentinel parallel-syncs mymaster 1 複製代碼
eshop-cache01,eshop-cache02,eshop-cache03三個節點啓動sentinal,並查看日誌。
redis-sentinel /etc/sentinal/5000.conf redis-server /etc/sentinal/5000.conf --sentinal 複製代碼
日誌會顯示出來,每一個哨兵去監控對應的redis master,而且可以自動發現對應的slave。
哨兵之間,互相也會自動進行發現,用的就是pub/sub消息發佈和訂閱信息系統和機制
SENTINEL get-master-addr-by-name mymaster
複製代碼
redis-cli -h 192.168.31.187 -p 5000
複製代碼
info sentinel
複製代碼
從圖片中能夠看到:redis的master節點有兩個從節點,sentinel有三個節點。
sentinel master mymaster
複製代碼
SENTINEL slaves mymaster
複製代碼
SENTINEL sentinels mymaster
複製代碼
SENTINEL get-master-addr-by-name mymaster
複製代碼
本文使用 mdnice 排版