前言

Redis作為內(nèi)存數(shù)據(jù)庫,需要具備高可用的特點,不然如果服務器宕機,還在內(nèi)存里的數(shù)據(jù)就會丟失。我們最常用的高可用方法就是搭建集群,master機器掛了,可以讓slave機器頂上,繼續(xù)提供服務。但是Redis集群是不會自動進行主從切換的,也就是說,如果主節(jié)點非常不爭氣的在凌晨3點掛了,那么運維同學就要馬上起床,把從節(jié)點改成主節(jié)點,這樣的操作是非常繁瑣低效的。為此,Redis官方提供了一種解決方案:Redis Sentinel
簡介
Redis Sentinel集群通常由3到5個節(jié)點組成,如果個別節(jié)點掛了,集群還可以正常運作。它負責監(jiān)控Redis集群的健康情況。如果主節(jié)點掛掉,Sentinel集群會通過投票選擇一個新的主節(jié)點。當原來的主節(jié)點恢復時,它會被當做新的主節(jié)點的從節(jié)點重新加入Redis集群。
基本原理
Sentinel集群通過指定的配置文件發(fā)現(xiàn)master,對其進行監(jiān)控,并且會發(fā)送info指令獲取master的從節(jié)點信息。Sentinel集群中的節(jié)點通過向其監(jiān)控的主從節(jié)點發(fā)送hello信息(包含Sentinel本身的ip、端口和id等內(nèi)容)來向其他Sentinel宣告自己的存在。
Sentinel集群通過訂閱連接來接收其他Sentinel的hello信息。
Sentinel集群通過ping命令來檢查監(jiān)控的實例狀態(tài),如果在指定時間內(nèi)沒有返回,則認為該實例下線。
Sentinel觸發(fā)failover主從切換后,并不會馬上進行,只有指定(quorum)Sentinel授權(quán)后,master節(jié)點被標記為ODOWN狀態(tài)。這時才真正開始投票選擇新的master。
Sentinel選擇新的master的原則是:首先判斷優(yōu)先級,選擇優(yōu)先級較小的;如果優(yōu)先級相同,查看復制下標,選擇復制數(shù)據(jù)較多的;如果復制下標也相同,就選擇進程ID較小的。
Sentinel被授權(quán)后,它將會獲得宕掉的master的一份最新配置版本號(config-epoch),當failover執(zhí)行結(jié)束以后,這個版本號將會被用于最新的配置,通過廣播形式通知其它Sentinel,其它的Sentinel則更新對應master的配置。
基本使用
我們以Python為例,簡單說明一下在客戶端如何使用Sentinel
from redis.sentinel import Sentinel
if __name__ == '__main__':
 sentinel = Sentinel(['localhost', 26379], socket_timeout=0.1)
 print(sentinel.discover_master('mymaster'))
 print(sentinel.discover_slaves('mymaster'))
 master = sentinel.master_for('mymaster', socket_timeout=0.1)
 slave = sentinel.slave_for('mymaster', socket_timeout=0.1)
 master.set('follow', 'Jackeyzhe2018')
 follow = slave.get('follow')
 print(follow)            
                網(wǎng)站標題:玩轉(zhuǎn)Redis搭建集群之Sentinel詳解-創(chuàng)新互聯(lián)
                
                URL分享:http://chinadenli.net/article8/gcpip.html
            
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、App開發(fā)、品牌網(wǎng)站設計、外貿(mào)建站、服務器托管、電子商務
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
