緩存架構(gòu)之14:在項目中以經(jīng)典的3節(jié)點方式部署哨兵集群

動手實操,練習(xí)如何操作部署哨兵集群,如何基于哨兵進(jìn)行故障轉(zhuǎn)移,還有一些企業(yè)級的配置方案

1、哨兵的配置文件

sentinel.conf

最小的配置

每一個哨兵都可以去監(jiān)控多個maser-slaves的主從架構(gòu)

因為可能你的公司里,為不同的項目,部署了多個master-slaves的redis主從集群

相同的一套哨兵集群,就可以去監(jiān)控不同的多個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

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

sentinel monitor mymaster 127.0.0.1 6379

類似這種配置,來指定對一個master的監(jiān)控,給監(jiān)控的master指定的一個名稱,因為后面分布式集群架構(gòu)里會講解,可以配置多個master做數(shù)據(jù)拆分

sentinel down-after-milliseconds mymaster 60000

sentinel failover-timeout mymaster 180000

sentinel parallel-syncs mymaster 1

上面的三個配置,都是針對某個監(jiān)控的master配置的,給其指定上面分配的名稱即可

上面這段配置,就監(jiān)控了兩個master node

這是最小的哨兵配置,如果發(fā)生了master-slave故障轉(zhuǎn)移,或者新的哨兵進(jìn)程加入哨兵集群,那么哨兵會自動更新自己的配置文件

sentinel monitor master-group-name hostname port quorum

quorum的解釋如下:

(1)至少多少個哨兵要一致同意,master進(jìn)程掛掉了,或者slave進(jìn)程掛掉了,或者要啟動一個故障轉(zhuǎn)移操作

(2)quorum是用來識別故障的,真正執(zhí)行故障轉(zhuǎn)移的時候,還是要在哨兵集群執(zhí)行選舉,選舉一個哨兵進(jìn)程出來執(zhí)行故障轉(zhuǎn)移操作

(3)假設(shè)有5個哨兵,quorum設(shè)置了2,那么如果5個哨兵中的2個都認(rèn)為master掛掉了; 2個哨兵中的一個就會做一個選舉,選舉一個哨兵出來,執(zhí)行故障轉(zhuǎn)移; 如果5個哨兵中有3個哨兵都是運(yùn)行的,那么故障轉(zhuǎn)移就會被允許執(zhí)行

down-after-milliseconds,超過多少毫秒跟一個redis實例斷了連接,哨兵就可能認(rèn)為這個redis實例掛了

parallel-syncs,新的master別切換之后,同時有多少個slave被切換到去連接新master,重新做同步,數(shù)字越低,花費(fèi)的時間越多

假設(shè)你的redis是1個master,4個slave

然后master宕機(jī)了,4個slave中有1個切換成了master,剩下3個slave就要掛到新的master上面去

這個時候,如果parallel-syncs是1,那么3個slave,一個一個地掛接到新的master上面去,1個掛接完,而且從新的master sync完數(shù)據(jù)之后,再掛接下一個

如果parallel-syncs是3,那么一次性就會把所有slave掛接到新的master上去

failover-timeout,執(zhí)行故障轉(zhuǎn)移的timeout超時時長

2、在eshop-cache03上再部署一個redis

只要安裝redis就可以了,不需要去部署redis實例的啟動

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(截止2017年4月的最新穩(wěn)定版)

tar -zxvf redis-3.2.8.tar.gz

cd redis-3.2.8

make && make test

make install

2、正式的配置

哨兵默認(rèn)用26379端口,默認(rèn)不能跟其他機(jī)器在指定端口連通,只能在本地訪問

mkdir /etc/sentinal

mkdir -p /var/sentinal/5000

/etc/sentinel/5000.conf

port 5000

bind 192.168.31.187

dir /var/sentinal/5000

sentinel monitor mymaster 192.168.31.187 6379 2

sentinel down-after-milliseconds mymaster 30000

sentinel failover-timeout mymaster 60000

sentinel parallel-syncs mymaster 1

port 5000

bind 192.168.31.19

dir /var/sentinal/5000

sentinel monitor mymaster 192.168.31.187 6379 2

sentinel down-after-milliseconds mymaster 30000

sentinel failover-timeout mymaster 60000

sentinel parallel-syncs mymaster 1

port 5000

bind 192.168.31.227

dir /var/sentinal/5000

sentinel monitor mymaster 192.168.31.187 6379 2

sentinel down-after-milliseconds mymaster 30000

sentinel failover-timeout mymaster 60000

sentinel parallel-syncs mymaster 1

3、啟動哨兵進(jìn)程

在eshop-cache01、eshop-cache02、eshop-cache03三臺機(jī)器上,分別啟動三個哨兵進(jìn)程,組成一個集群,觀察一下日志的輸出

redis-sentinel /etc/sentinal/5000.conf

redis-server /etc/sentinal/5000.conf --sentinel

日志里會顯示出來,每個哨兵都能去監(jiān)控到對應(yīng)的redis master,并能夠自動發(fā)現(xiàn)對應(yīng)的slave

哨兵之間,互相會自動進(jìn)行發(fā)現(xiàn),用的就是之前說的pub/sub,消息發(fā)布和訂閱channel消息系統(tǒng)和機(jī)制

4、檢查哨兵狀態(tài)

redis-cli -h 192.168.31.187 -p 5000

sentinel master mymaster

SENTINEL slaves mymaster

SENTINEL sentinels mymaster

SENTINEL get-master-addr-by-name mymaster

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容