您的位置:首页 > 数据库 > Redis

redis2.6高可用方案【1】

2013-10-15 16:26 375 查看
Redis Sentinel是一个被设计用来管理redis实例的系统。它用来完成如下的三个任务:

监控 Redis Sentinel会不间断检查redis的master和slave是否如你预期一样的工作。
通知 一旦被Redis Sentinel监控的任何一个redis服务实例发生错误,它能够通知系统管理员,或者另一个节点上的服务进程,通信渠道和调用redis服务的API.
故障自动转移 如果master没有正常的工作,Sentinel将提升一个slave成为master,并在新master上启动后备服务程序,而其他的slave则重新配置为使用新的master,并通知正在使用redis server的程序新的master连接地址。

Redis Sentinel是一个分布式系统,这意味着,通常你想在你的设备上运行多个Sentinel 进程,这些进程将使用相同的通信协议以传递master down的信息并将master转移到后备系统。

Redis Sentinel作为一个独立的可执行文件称为redis-sentinel但实际上它是一种特殊的执行模式Redis服务器,也可以使用
--sentinel
选项调用正常redis-sever可执行。

警告:Redis Sentinel目前工作进展顺利。本文档描述了如何使用我们已经实现,并可能改变为铁卫军实现发展。Redis哨兵兼容Redis
2.4.16或更大,和Redis 2 6 0将或更大。

运行Sentinel

如果你有
redis-sentinel
可运行文件(或者一个到
redis-server
可执行文件的链接),你可以使用如下的命令启动Sentinel

redis-sentinel /path/to/sentinel.conf


或者你直接运行
redis-server
在Sentinel模式

redis-server /path/to/sentinel.conf --sentinel


以上二者的效果是一样的。

配置Sentinel

Redis的源代码分发包含一个文件称为sentinel.conf这是一个示例配置文件,你可以用它来配置Sentinel,但是一个典型的最小配置文件如下所示:

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 900000
sentinel can-failover mymaster yes
sentinel parallel-syncs mymaster 1

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 900000
sentinel can-failover resque yes
sentinel parallel-syncs resque 5


第一行是用来告诉Redis的监控的master名字叫做mymaster,地址为127.0.0.1,端口6379,在协议层次需要2个sentinel对处于失效状态的master进行扫描(如果不能达成协议,不启动故障转移)。

其他选项几乎都是这样的形式:

sentinel <option_name> <master_name> <option_value>


用于以下目的:

down-after-milliseconds
的含义是当一个sentinel在以毫秒为单位的时间段内无法达到一个实例时(或者实例不答复PINGs亦或者答复错误)它就认为实例已经关闭所需要的时间值。当实例无正确响应时间超过这个时间时,Sentinel将会将实例标识为subjectively
down
状态,然而此时并不足以进行故障自动转移。但如果有足够多的sentinel实例认为被检测实例存在subjectively
down
状态,然后该实例被标记为objectively down状态。而做出判断的sentinel实例的数量取决于master上的配置文件中设置的数量。
can-failover用来决定一个sentinel是否在实例处于objectively
 down状态时启动故障转移。你可以配置所有的Sentinels执行故障切换,如果需要的话,你还可以配置为只用几个哨兵达成协议,另一些实际负责执行故障转移。

parallel-syncs

slave的集群可以在故障自动转移后被同时重新配置为连接新的master。数字越低,需要花费更多的时间才能够把故障转移过程完成,但是如果配置为slave提供旧数据,你可能不希望同时与新master同步所有的slave,而复制过程大多是非阻断slave,将会有一个时间段停止从master同步数据。(存在问题的翻译)
如你希望每次只有一个slave不可用,确保将此选项设置为1的值。

其他的配置项在sentinel.conf的示例文件中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: