參考官網
redis - 主從(高性能)中,提供了高性能,可是沒辦法提供高可用。好比master掛了,雖然slave能夠提供查詢,可是不能提供寫入服務,相對於不可用了。雖然能夠把slave經過slaveof no one命令變成master,可是手動仍是不太方便。
redis能夠使用sentinel自動完成故障發現和轉移,並提供瞭如下功能:redis
爲了sentinel的健壯性,sentinel也是分佈式的,多個sentinel協同工做的優點以下:segmentfault
在部署以前,咱們須要瞭解一下基本信息:服務器
+----+ +----+ | M1 |---------| R1 | | S1 | | S2 | +----+ +----+ 配置: quorum = 1
這個示例中,一個服務器部署了Mater和Sentinel,一個服務器部署了slave和Sentinel。此時,若是M1掛了,S1和S2只要有一個認爲M1掛了,就會選舉一個Sentinel讓slave升級爲master,可是若是M1所在的服務器異常了,則只剩下S2,此時1小於majority(2)是沒法作故障轉移的。異步
+----+ | M1 | | S1 | +----+ | +----+ | +----+ | R2 |----+----| R3 | | S2 | | S3 | +----+ +----+ 配置: quorum = 2
這個示例中,若是M1所在服務器掛了,此時S2和S3只要有一個認爲M1掛了,就就會選舉一個Sentinel作故障轉移,此時2個Sentinel大於等於majority(2)是能夠作故障轉移的。
以上兩個是比較典型的案例,固然官網還有跟客戶端一個服務器的。至於爲何要一塊兒部署,是由於咱們服務器的資源是寶貴(要錢)的,一塊兒部署既達到了服務的健壯性,也節約了資源。分佈式
首先是主從,在redis - 主從(高性能)中也說了如何配置,sentinel的配置也比較簡單,以下:性能
port 26379 sentinel monitor mymaster ip port 2
有三個配置就啓動三個sentinel,總體流程圖以下:
若是監聽多組集羣,能夠設置多個monitor,好比spa
port 26379 sentinel monitor mymaster ip port 2 sentinel monitor resque ip port 2
原理部分後面章節講解3d