Redis2.X版本是不支持分布式集群的,只能通过第三方的组件进行实现。上一篇文章介绍了twitter的twemproxy,但twemproxy实现的是将value平均分布到各个服务器上,且只能将失败节点移除,这样就保证不了高可用性了。下面介绍下redis的Sentinel,Sentinel也是redis作者开发的,目前已经集成在redis的安装包里,主要目的就是实现redis的高可用性。
我认为,Sentinel实现的最主要的一个功能就是能做到自动故障迁移,即当某一个master挂了的时候,可以自动的将某一个slave提升为新的master,且原master的所有slave也都自动的将自己的master改为新提升的master,这样我们的程序的可用性大大提高了。
--------------------------------------------------------------------------------------------------------------
下面记录下安装即配置过程:
1、安装非常简单,只要redis安装完成,Sentinel就安装完成了,Sentinel集成在redis里了
2、配置,牵扯到的配置文件为redis安装目录下的:sentinel.conf
port 26380 #Sentinel启动端口
dir "/tmp/6380" #Sentinel的工作目录
sentinel monitor mymaster 192.168.100.90 6380 2
#Sentine监听的maste地址,第一个参数是给master起的名字,第二个参数为master IP,第三个为master端口,第四个为当该master挂了的时候,若想将该master判为失效,在Sentine集群中必须至少2个Sentine同意才行,只要该数量不达标,则就不会发生故障迁移。
sentinel down-after-milliseconds mymaster 30000
#master在多长时间内一直没有给Sentine返回有效信息,则认定该master主观下线
sentinel parallel-syncs mymaster 1