上篇文章我們說了replication的一主二從複製和鏈式複製。
但這都是不可行的,因爲它要你去手動設置老大(當主機掛掉之後),這會帶來業務的停止。
所以,我們引入了哨兵模式。
哨兵就是一個進程,它會站崗,然後監視着master的活動。如果哨兵覺得master已經死了,那他就會根據算法自動選一個老大。這是哨兵智能的地方。
如果要佈置哨兵集羣的話,哨兵們會進行投票來選老大。
既然哨兵是一個進程,所以我們肯定要啓動它:
在redis的目錄下,還有sentinel的配置文件:
這裏面的內容非常多。
我們這次實現一個最簡單版的。
我們自定義一個配置文件sentinel.conf
,裏面只有一行:
sentinel monitor mymaster 127.0.0.1 6379 1
mymaster
是一個名字,可以隨便取。然後監控的是127.0.0.1 6379
,從節點不用寫,sentinel會自動監測到。後面那個1表示需要有多少個sentinel同意才能選出主節點。因爲我們這裏只有一個sentinel,那就寫1就行了。
啓動sentinel:
還是一樣,我們讓6379爲master,6380和6381爲slave。
現在我讓6379停掉,30秒之後就會有日誌出來:
6380自動被選爲master了:
6381自動跟着6380混了:
而且我們自定義的配置文件也發生了變化:
如果此時6379再回來,它會自動成爲6380的slave: