1、概念。
1-1、监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
1-2、提醒(Notification):当被监控的某个Redis节点出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
1-3、自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用现在的Master替换失效Master。Master和Slave服务器切换后,Master的redis.conf、Slave的redis.conf和sentinel.conf的配置文件的内容都会发生相应的改变,即,Master主服务器的redis.conf配置文件中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换。
优点:在整个redis集群中,当Master宕机时,可以通过哨兵自动将Slave提升为新的Master,无须手动切换。
192.168.23.130 | 6379 | Master |
192.168.23.131 | 6379 | Slave |
192.168.23.132 | 26379 | Sentinel |
从http://download.redis.io/releases/选择下载redis-3.2.9.tar.gz,上传到middleware文件夹(权限为777)。
2、单机部署redis(部署三台)
tar -xvf redis-3.2.9.tar.gz
cd redis-3.2.9
make install
make test
3、三台部署配置。
Master配置redis.conf
################################## NETWORK #####################################
bind 192.168.23.130
port 6379
timeout 60
################################# GENERAL ######################################
daemonize yes
logfile "/middleware/redis.log"
################################ SNAPSHOTTING ################################
dir /middleware/dbdata
############################## APPEND ONLY MODE ###############################
appendonly yes
appendfsync always
Slave配置redis.conf
################################## NETWORK #####################################
bind 192.168.23.131
port 6379
timeout 60
################################# GENERAL #####################################
daemonize yes
logfile "/middleware/redis.log"
################################ SNAPSHOTTING ################################
dir /middleware/dbdata
################################# REPLICATION #################################
slaveof 192.168.23.130 6379 #Master ip port
slave-serve-stale-data no
############################## APPEND ONLY MODE ###############################
appendonly yes
appendfsync always
Sentinel配置sentinel.conf
*** IMPORTANT ***
port 26379
dir /middleware/redis/sentinel/
sentinel monitor mymaster 192.168.23.130 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000
3、启动redis哨兵模式集群
3-1、启动master和slave,使用redis.conf配置文件来启动。
#本章由于make install 会在bin目录下安装redis,没搞明白
#而我们解压也会有个redis,此时用的是解压的redis
/middleware/redis-3.2.9/src/redis-server /middleware/redis-3.2.9/redis.conf
3-2、启动sentinel,使用sentinel.conf配置文件来启动。
/middleware/redis-3.2.9/src/redis-sentinel /middleware/redis-3.2.9/sentinel.conf
4、脑裂问题
zookeeper采用选举方式解决脑裂问题,不用任何设置,而redis则不同,必须自己制定规则,防止脑裂产生多个Master的情况,具体如下。