1. 程式人生 > >Redis Sentinel 模式簡介

Redis Sentinel 模式簡介

toolbar tables 新的 dir tab 官方 timeout entos 疑問

Redis-Sentinel是官方推薦的高可用解決方案,當redis在做master-slave的高可用方案時,假如master宕機 了,redis本身(以及其很多客戶端)都沒有實現自動進行主備切換,而redis-sentinel本身也是獨立運行的進程,可以部署在其他與 redis集群可通訊的機器中監控redis集群。

它的主要功能有一下幾點

1、不時地監控redis是否按照預期良好地運行;
2、如果發現某個redis節點運行出現狀況,能夠通知另外一個進程(例如它的客戶端);
3、能夠進行自動切換。當一個master節點不可用時,能夠選舉出master的多個slave(如果有超過一個slave的話)中的一個來作為新的master,其它的slave節點會將它所追隨的master的地址改為被提升為master的slave的新地址。
4、哨兵為客戶端提供服務發現,客戶端鏈接哨兵,哨兵提供當前master的地址然後提供服務,如果出現切換,也就是master掛了,哨兵會提供客戶端一個新地址。

哨兵(sentinel)本身也是支持集群的

很顯然,單個哨兵會存在自己掛掉而無法監控整個集群的問題,所以哨兵也是支持集群的,我們通常用三臺哨兵機器來監控一組redis集群。

快速開始!

環境準備:
centos7服務器3臺,6也可以,沒什麽區別。
我部署好了三臺
redis-1
redis-2
redis-3
清空selinux與iptables

編譯安裝redis

技術分享
yum install gcc* tcl -y
mkdir /opt/soft
cd /opt/soft
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar xf redis-3.2.4.tar.gz
cd redis-3.2.4
make
mkdir conf
mkdir bin
cp utils/redis_init_script bin/redis
cp redis.conf conf/6379.conf
cd ..
mv redis-3.2.4 /opt/redis
cd /opt/redis/bin
sed -i s#CLIEXEC=\/usr\/local\/bin\/redis-cli#CLIEXEC=\/opt\/redis\/src\/redis-cli#g redis
sed -i s#EXEC=\/usr\/local\/bin\/redis-server#EXEC=\/opt\/redis\/src\/redis-server#g redis
sed -i s#CONF=\"\/etc\/redis#CONF=\"\/opt\/redis\/conf#g redis
cd /opt/redis/conf
sed -i s#daemonize\ no#daemonize\ yes#g 6379.conf
技術分享

安裝完畢後,修改配置文件。

vim /opt/redis/conf/6379.conf
註釋此條
bind 127.0.0.1
protected-mode yes 改為 protected-mode no #關閉安全模式
至此,redis部署完畢。


redis的啟動停止腳本在
/opt/redis/bin/redis stop/start
redis的配置文件在
/opt/redis/conf/6379.conf
redis的登陸命令在
/opt/redis/src/redis-cli

redis配置主從

啟動兩臺redis
redis-1 10.0.0.10
redis-2 10.0.0.20

若redis-1為主的話,在redis-2的配置文件中配置
slaveof 10.0.0.10 6379
修改完畢後重啟redis即可,重啟後我們可通過登陸進入redis後info查看主從信息。

引入哨兵。

redis-1與redis-2搭建完畢主從後,我們開始引入哨兵。
哨兵是一個單獨的程序,所以我們需要單獨部署它。
若是在其他機器上部署哨兵,那麽請用上面的redis安裝腳本重新安裝一遍redis。
在這裏我已經部署完畢了
redis-1
redis-2
redis-3

增加哨兵的配置文件。三臺redis都需要增加,文件內容這三臺一樣。

技術分享
vim /opt/redis/conf/sentinel.conf
##sentinel for  10.0.0.10 ,its slave is 10.0.0.20
#master1
port 26383
sentinel monitor master1 10.0.0.10 6379 2
sentinel down-after-milliseconds master1 30000
sentinel failover-timeout master1 900000
sentinel parallel-syncs master1 1
#sentinel auth-pass mymaster 123456  #如果你的redis集群有密碼
技術分享

配置文件的含義請自行百度。

啟動哨兵
三臺機器都是一個操作方式。


添加窗口
screen -S sentinel


在新窗口啟動哨兵
/opt/redis/src/redis-sentinel /opt/redis/conf/sentinel.conf --protected-mode no
啟動後即可看到前臺輸出信息。


後臺掛起這個窗口請按:
Ctrl+a+d


下次返回觀看這個窗口請輸入
screen -r sentinel


我們這裏暫時不掛起窗口,可以觀察哨兵監控集群的狀態。

我們接下來我們進行切換以及增加新的salve節點測試。
關掉redis-1並查看哨兵監控的狀態,約30秒內,哨兵探測redis-1客觀故障後,即會重新選舉新的master,重新選舉完畢後我們在redis-2中info查看主從狀態,會發現redis-2已經被選舉為master。
重新啟動redis-1,並不需要修改配置文件,啟動後redis-1自動會與redis-2進行同步。

修改redis-3的配置文件,把slaveof指向到redis-2,啟動後你會發現哨兵會把redis-3自動添加到集群中。

Redis sentinel就介紹到這裏,若有疑問請聯系作者

QQ:896482837

Redis Sentinel 模式簡介