sentinel是redis用於實現高可用的方案,經過部署一個sentinel集羣,sentinel集羣負責監控指定的redis master和slave的狀態,並在master掛的時候自動切換主從,從而保證緩存服務的高可用。redis
那麼sentinel是如何實現的呢?緩存
一、sentinel啓動的時候會指定須要監控的redis master,這裏須要注意,是不須要指定redis slave的,由於sentinel能夠經過master查詢到它的全部slave。異步
二、而後sentinel會定時想全部的redis master、slave發送ping命令,redis master、slave收到ping命令後會回覆pong命令,sentinel就是根據這個來判斷redis master、slave是否處於正常狀態的。部署
三、當一段時間(能夠配置,通常30s)沒有收到redis master的回覆時,sentinel就認爲redis master掛了,並將redis master標記爲主觀下線(後續還有與之對應的客觀下線)。同步
四、當超過指定閾值的sentinel都認爲redis master掛掉了,sentinel就會選擇出來一個leader來處理redis的主從切換。ast
五、選擇一個保留有最新數據的redis slave,將其設置爲mater,並將其餘redis slave的master改成新的master。集羣
sentinel可能存在的問題:監控
一、因爲redis主從同步是異步的方式,因此當發生主從切換的時候仍是有可能形成數據丟失的。配置