環境搭建:
前言:
小編使用的redis的版本號是5.0.5,可能會略有不同,例如redis.conf配置文件中,沒有slaveof這一項配置
虛擬機一定要關閉掉防火牆
本次使用7006作為master,7007,7008作為slave
為了方便直接在slave的配置文件中寫好master的配置(配從不配主),配置好master的ip,redis的端口和密碼
slave的redis.conf里主機配置:
啟動主機和從機后一主二從模式就ok了,可以簡單測試一下
下面開始配置哨兵
新建了一個sentinel文件夾用來存儲哨兵的配置文件,並創建了哨兵的配置文件sentinel.conf(建議直接拷貝文件名):
小編是配置放在了安裝目錄下:/usr/local/bin
a、mkdir sentinel
b、touch sentinel.conf
c、在sentinel.conf文件中增加如下配置:
1.sentinel monitor <master-name> <ip> <redis-port> <quorum>
告訴sentinel去監聽地址為ip:port的一個master,這里的master-name可以自定義,quorum是一個數字,指明當有多少個sentinel認為一個master失效時,master才算真正失效。
master-name只能包含英文字母,數字,和“.-_”這三個字符需要注意的是master-ip 要寫真實的ip地址而不要用回環地址(127.0.0.1),
如果在同一台主機上測試也是可以的( sentinel monitor (自己起名字) 127.0.0.1 6379 1)。
配置示例:
sentinel monitor mymaster 192.168.1.5 6379 2
2.sentinel auth-pass <master-name> <password>
設置連接master和slave時的密碼,注意的是sentinel不能分別為master和slave設置不同的密碼,因此master和slave的密碼應該設置相同。
配置示例:sentinel auth-pass mymaster 0123passw0rd
示例:
d、在安裝目錄下執行redis-sentinel sentinel/sentinel.conf開啟監控
后記:
模擬步驟:
原master使用的是7006,后啟動了哨兵模式,讓master模擬故障(shutdown),哨兵選取了slave 7007作為新的master,slave 7008掛載到7007下,
打開7008的redis.conf配置文件也發現,7008的配置文件也被哨兵修改了,由原本的7006改為了7007
此時將7006重新啟動,稍后可以發現7006作為7007的slave並入復制結構中,打開7006的配置文件可以發現,在7006配置文件的最下方追加了replicaof master的信息,但是沒有追加密碼信息;
重啟7006的redis服務器,也會因為配置文件被修改而直接作為7007的slave出現;