上一篇文章,我们研究了redis的主从,即master-slave。
现在更深入一下,如果master宕机,slave能不能自动切换成master呢?这个问题交给sentinel(哨兵)就可以了,当然这是在redis 3.0版本之前的解决方案。
sentinel主要是为Redis master-slaves集群进行master存活检测;进行m-s服务监控;以及出现故障后,进行自动故障转移,让master和slave自动切换,从而提高redis集群的可用性.
简而言之,当master宕掉后,sentinel可以让slave自动切换为master!
先准备环境:
我在同一台机器上配置3个redis服务和3个sentinel服务。
redis.conf配置文件,主要是port不同,运行角色不同,其他基本一致。
master的redis.conf配置文件:
##redis.conf
##redis-0,默认为master
port 6379
##授权密码,请各个配置保持一致
requirepass 6yhn&UJM
masterauth 6yhn&UJM
##rename-command
appendonly yes
save “”
##slaveof no one
slave-read-only yes
slave1的redis.conf配置文件:
#redis.conf
port 6380 #端口不同
slaveof 127.0.0.1 6379
#其他配置一致
slave2的redis.conf配置文件:
#redis.conf
port 6381 #端口不同
slaveof 127.0.0.1 6379
#其他配置一致
从上面的配置,我们可以看出:redis1是master,redis2和redis3是slave.
sentinel.conf配置:
在每个redis下配置sentinel.conf文件如下
##redis-1
##sentinel实例之间的通讯端口
port 26379
sentinel monitor def_master 127.0.0.1 6379 2
sentinel auth-pass def_master 6yhn&UJM
sentinel down-after-milliseconds def_master 30000
sentinel can-failover def_master yes
sentinel parallel-syncs def_master 1
sentinel failover-timeout def_master 900000
##redis-2
port 26380
sentinel monitor def_master 127.0.0.1 6379 2
sentinel auth-pass def_master 6yhn&UJM
sentinel down-after-milliseconds def_master 30000
sentinel can-failover def_master yes
sentinel parallel-syncs def_master 1
sentinel failover-timeout def_master 900000
##redis-3
port 26381
sentinel monitor def_master 127.0.0.1 6379 2
sentinel auth-pass def_master 6yhn&UJM
sentinel down-after-milliseconds def_master 30000
sentinel can-failover def_master yes
sentinel parallel-syncs def_master 1
sentinel failover-timeout def_master 900000
启动和测试:
redis-server /usr/local/redis/conf/redis.conf
##启动sentinel组件
redis-sentinel /usr/local/redis/conf/sentinel.conf
依次启动redis-1,redis-2,redis-3和sentinel1,sentinel2,sentinel3
测试略……
总结:总体来看,sentinel(哨兵),有点像zookeeper
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29806344/viewspace-1424430/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29806344/viewspace-1424430/