【Redis主從架構】搭建經典的3節點哨兵集羣

1. 哨兵配置文件

位於redis解壓根目錄下:sentinel.confweb

1
1
  • 最小配置

每個哨兵均可以去監控多個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  複製代碼

1.1 sentinel monitor mymaster 192.168.0.102 6379 2

指定一個master的監控,給監控的master指定一個名稱指定監控的IP地址和端口號,2表示qronum。flex

  • quorum詳解:
  1. 至少須要quorum個哨兵一致贊成,master進程掛掉了,獲取slave進程掛掉了,獲取要啓動一個故障轉移操做。ui

  2. quorum是用來識別故障的,真正執行故障轉移的時候,還要在哨兵集羣執行選舉,選舉一個哨兵進程出來進行故障轉移操做。url

  3. 假若有5個哨兵,quorum設置了2,那麼5個哨兵中的2個都認爲master掛掉了,master纔會認爲是odown了。就會從2個哨兵中的選舉一個哨兵,來執行故障轉移。若是5個哨兵中有3個哨兵都是運行的,那麼故障轉移就會別容許執行。spa

1.2 sentinel down-after-milliseconds

超過多少毫秒跟一個redis實例端口了鏈接,哨兵就可能認爲redis實例掛掉了。.net

1.3 sentinel failover-timeout

執行故障轉移的timeout的超時時長,若是限定時長內沒有完成故障轉移,就會認爲執行故障轉移失敗,就從剩下的哨兵選擇一個哨兵重新執行故障轉移

1.4 sentinel parallel-syncs

新的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上去

2. 安裝一主二從的redis主從架構

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 複製代碼

3. 搭建經典三個節點的哨兵集羣

哨兵默認是用26279端口,默認不能跟其餘集羣在指定端口聯通,只能在本地訪問

mkdir /etc/sentinal
 mkdir -p /var/sentinal/5000/log  # 編輯etc/sentinel/5000.conf cp sentinal.conf 5000.conf  vi 5000.conf  複製代碼
  • 配置sentinal
# 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 複製代碼

3.1 啓動哨兵進程

eshop-cache01,eshop-cache02,eshop-cache03三個節點啓動sentinal,並查看日誌。

  • 啓動sentinal命令
redis-sentinel /etc/sentinal/5000.conf
redis-server /etc/sentinal/5000.conf --sentinal 複製代碼

日誌會顯示出來,每一個哨兵去監控對應的redis master,而且可以自動發現對應的slave。

哨兵之間,互相也會自動進行發現,用的就是pub/sub消息發佈和訂閱信息系統和機制

2019-11-09-11-16-23
2019-11-09-11-16-23

3.2 檢查哨兵轉態

SENTINEL get-master-addr-by-name mymaster
複製代碼
  • 進入哨兵命令行
redis-cli -h 192.168.31.187 -p 5000
複製代碼
  • 查看sentinel是否搭建成功
info sentinel
複製代碼
2019-11-09-12-30-37
2019-11-09-12-30-37

從圖片中能夠看到:redis的master節點有兩個從節點,sentinel有三個節點。

  • 查看全部master的信息
sentinel master mymaster
複製代碼
2019-11-09-11-20-02
2019-11-09-11-20-02
  • 查看全部slave的信息
SENTINEL slaves mymaster
複製代碼
2019-11-09-11-22-33
2019-11-09-11-22-33
2019-11-09-11-23-00
2019-11-09-11-23-00
  • 查看全部的哨兵信息
SENTINEL sentinels mymaster
複製代碼
2019-11-09-12-28-16
2019-11-09-12-28-16
  • 根據master名稱獲取master地址信息
SENTINEL get-master-addr-by-name mymaster
複製代碼
2019-11-09-12-29-02
2019-11-09-12-29-02

本文使用 mdnice 排版

相關文章
相關標籤/搜索