哨兵模式的redis部署
redis的叢集模式有三種,主從模式、哨兵模式和cluster叢集,本例主要是說明下哨兵模式的部署
一、說明
哨兵模式是基於主從配置,先配置一主多從的環境,然後由哨兵來監控各個節點的執行情況,如果master節點宕機之後會自主在剩下存活的節點中選取一個作為master節點,宕機的節點修復之後啟動,會重新作為從節點加入到主從環境中,這過程中每個節點的配置檔案(redis.conf)中關於主從配置的引數會自行進行修改。
二、Redis 主從配置
1、修改master配置,上面服務都是以預設的引數進行配置。
vim /etc/redis/6379.conf
新增如下內容:# 修改以下內容開啟遠端訪問 bind 0.0.0.0 # 新增一個密碼 requirepass "123"
2、修改兩臺slave伺服器的配置。
-
vim /etc/redis/6379.conf
新增如下內容:# 修改以下內容開啟遠端訪問 bind 0.0.0.0 # 新增一個密碼 requirepass 123 # 192.168.1.166為主節點ip,6379為埠 slaveof 192.168.1.166 6379 masterauth 123
[NOTE]
較新的版本中,slaveof
已經更改為replicaof
,需要注意,另外如果配置了密碼,在master節點上也需要先配置好masterauth
這個選項,為了在自主切換之後原master節點作為從節點之後能同步到新主節點上的資料。
3、檢查主從狀態
redis-cli -h 127.0.0.1 -p 6379 -a "password" info Replication
三、Redis sentinel 配置
-
複製模版配置檔案
cp /u01/install/redis-5.0.5/sentinel.conf /etc/redis/
-
修改配置檔案
vim /etc/redis/sentinel.conf
新增如下內容:# sentinel monitor [master-group-name] [ip] [port] [quorum] sentinel monitor mymaster 192.168.1.166 6379 2 # 主伺服器 redis密碼 sentinel auth-pass mymaster 123 # 後臺執行 daemonize yes # log檔案 logfile "/var/log/sentinel.log"
[NOTE]
sentinel monitor mymaster 192.168.1.166 6379 2
該行的意思是:監控的master的名字叫做mymaster (可以自定義),地址為192.168.1.166:6379,行尾最後的一個2代表在sentinel叢集中,多少個sentinel認為master死了,才能真正認為該master不可用了。 -
啟動哨兵模式
需要先啟動redis主服務,即service redis_6379 start
然手啟動哨兵模式,redis-server sentinel.conf --sentinel
四、配置哨兵模式開機自動啟動
-
這裡主要是以配置systemctl系統服務的方式來配置開機自啟,另哨兵模式的啟動要求先啟動主服務,可以將主服務考慮一併做成systemctl系統服務。
-
編寫redis.service檔案:
vim /usr/lib/systemd/system/redis.service
[Unit] Description=The redis_6379 Process Manager After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -SIGINT $MAINPID [Install] WantedBy=multi-user.target
[NOTE]
若配置了密碼,ExecStop的部分可以改成/usr/local/bin/redis-cli -p 6379 -a "password" shutdown
-
設定redis主服務開機啟動
systemctl enable redis
-
編寫redis-sentinel.service檔案:
vim /usr/lib/systemd/system/redis-sentinel.service
[Unit] Description=The redis-sentinel Process Manager After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis/sentinel.conf --sentinel ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -SIGINT $MAINPID [Install] WantedBy=multi-user.target
-
設定哨兵模式開機啟動
systemctl enable redis-sentinel