14. 【實戰】在項目中重新搭建一套讀寫分離+高可用+多master的redis cluster集羣

動手實操,練習如何操作部署哨兵集羣,如何基於哨兵進行故障轉移,還有一些企業級的配置方案

哨兵的配置文件

  1. sentinel.conf
    在這裏插入圖片描述
    最小的配置

  2. 每一個哨兵都可以去監控多個maser-slaves的主從架構,因爲可能你的公司裏,爲不同的項目,部署了多個master-slaves的redis主從集羣,相同的一套哨兵集羣,就可以去監控不同的多個redis主從集羣,你自己給每個redis主從集羣分配一個邏輯的名稱

// mymaster和resque就是兩個不同的master-slaves主從集羣
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

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
  1. sentinel monitor mymaster 127.0.0.1 6379:類似這種配置,來指定對一個master的監控,給監控的master指定的一個名稱,因爲後面分佈式集羣架構裏會講解,可以配置多個master做數據拆分

  2. sentinel monitor master-group-name hostname port quorum

quorum的解釋如下:

  • 至少多少個哨兵要一致同意,master進程掛掉了,或者slave進程掛掉了,或者要啓動一個故障轉移操作
  • quorum是用來識別故障的,真正執行故障轉移的時候,還是要在哨兵集羣執行選舉,選舉一個哨兵進程出來執行故障轉移操作
  • 假設有5個哨兵,quorum設置了2,那麼如果5個哨兵中的2個都認爲master掛掉了; 2個哨兵中的一個就會做一個選舉,選舉一個哨兵出來,執行故障轉移; 如果5個哨兵中有3個哨兵都是運行的,那麼故障轉移就會被允許執行
  1. sentinel down-after-milliseconds mymaster 60000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1

上面的三個配置,都是針對某個監控的master配置的,給其指定上面分配的名稱即可,這是最小的哨兵配置,如果發生了master-slave故障轉移,或者新的哨兵進程加入哨兵集羣,那麼哨兵會自動更新自己的配置文件

  1. down-after-milliseconds:超過多少毫秒跟一個redis實例斷了連接,哨兵就可能認爲這個redis實例掛了
  2. parallel-syncs:新的master別切換之後,同時有多少個slave被切換到去連接新master,重新做同步,數字越低,花費的時間越多

默認1,基本夠用

  • 假設redis集羣是1個master,4個slave,然後master宕機了,4個slave中有1個切換成了master,剩下3個slave就要掛到新的master上面去,
  • 這個時候,如果parallel-syncs是1,那麼3個slave,一個一個地掛接到新的master上面去,1個掛接完,而且從新的master sync完數據之後,再掛接下一個
  • 如果parallel-syncs是3,那麼一次性就會把所有slave掛接到新的master上去
  1. failover-timeout:執行故障轉移的timeout超時時長(ms)

搭建集羣

第三個redis節點部署

在eshop-cache03上再部署一個redis

  1. 哨兵集羣至少需要三個redis節點,所以需要再部署一個
  2. 只要安裝redis就可以了,不需要去部署redis實例的啓動
  3. 安裝
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-3.2.8.tar.gz(最新穩定版)
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test
make install

哨兵集羣配置

哨兵配置文件

哨兵默認用26379端口,默認不能跟其他機器在指定端口連通,只能在本地訪問。

mkdir /etc/sentinal
mkdir -p /var/sentinal/5000
/etc/sentinel/5000.conf
// echop-cache01
port 5000
bind 192.168.0.106
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.0.106 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

// echop-cache02
port 5000
bind 192.168.0.107
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.0.106 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

// echop-cache03
port 5000
bind 192.168.0.108
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.0.106 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

啓動哨兵進程

  1. eshop-cache01eshop-cache02eshop-cache03三臺機器上,分別啓動三個哨兵進程,組成一個集羣,觀察一下日誌的輸出
redis-sentinel /etc/sentinal/5000.conf
redis-server /etc/sentinal/5000.conf --sentinel
  1. 日誌裏會顯示出來,每個哨兵都能去監控到對應的redis master,並能夠自動發現對應的slave
  2. 哨兵之間,互相會自動進行發現,用的就是之前說的pub/sub消息發佈和訂閱channel消息系統和機制
    在這裏插入圖片描述

檢查哨兵狀態

# 連接哨兵
redis-cli -h 192.168.0.106 -p 5000

redis 命令:

sentinel master mymaster
SENTINEL slaves mymaster
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster

在這裏插入圖片描述

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