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

1. 哨兵配置文件

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

1

  • 最小配置

每一個哨兵都可以去監控多個master-slaves的主從架構

因爲生產環境一般會部署多個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。

  • quorum詳解:
  1. 至少需要quorum個哨兵一致同意,master進程掛掉了,獲取slave進程掛掉了,獲取要啓動一個故障轉移操作。

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

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

1.2 sentinel down-after-milliseconds

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

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

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

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

  • 查看所有master的信息
sentinel master mymaster

2019-11-09-11-20-02

  • 查看所有slave的信息
SENTINEL slaves mymaster

2019-11-09-11-22-33

2019-11-09-11-23-00

  • 查看所有的哨兵信息
SENTINEL sentinels mymaster

2019-11-09-12-28-16

  • 根據master名稱獲取master地址信息
SENTINEL get-master-addr-by-name mymaster

2019-11-09-12-29-02

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章