redis_failover - Automatic Redis Failover Client/Server

Redis Failoverattempts to provides a full automatic master/slave failover solution for Ruby.Redis does not provide an automatic failover capability when configured formaster/slave replication. When the master node dies, a new master must bemanually brought online and assigned as the slave's new master. This manualswitch-over is not desirable in high traffic sites where Redis is a criticalpart of the overall architecture. The existing standard Redis client for Rubyalso only supports configuration for a single Redis server. When usingmaster/slave replication, it is desirable to have all writes go to the master,and all reads go to one of the N configured slaves.


This gem attempts toaddress both the server and client problems. A redis failover server runs as abackground daemon and monitors all of your configured master/slave nodes. Whenthe server starts up, it automatically discovers who is the master and who arethe slaves. Watchers are setup for each of the redis nodes. As soon as a nodeis detected as being offline, it will be moved to an "unavailable"state. If the node that went offline was the master, then one of the slaveswill be promoted as the new master. All existing slaves will be automaticallyreconfigured to point to the new master for replication. All nodes marked asunavailable will be periodically checked to see if they have been brought backonline. If so, the newly available nodes will be configured as slaves andbrought back into the list of live servers. Note that detection of a node goingdown should be nearly instantaneous, since the mechanism used to keep tabs on anode is via a blocking Redis BLPOP call (no polling). This call fails nearlyimmediately when the node actually goes offline. To avoid false positives(i.e., intermittent flaky network interruption), the server will only mark anode as unavailable if it fails to communicate with it 3 times (this isconfigurable via --max-failures, see configuration options below).


This gem provides aRedisFailover::Client wrapper that is master/slave aware. The client isconfigured with a single host/port pair that points to redis failover server.The client will automatically connect to the server to find out the currentstate of the world (i.e., who's the current master and who are the currentslaves). The client also acts as a load balancer in that it will automaticallydispatch Redis read operations to one of N slaves, and Redis write operationsto the master. If it fails to communicate with any node, it will go back andask the server for the current list of available servers, and then optionallyretry the operation.



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/301743/viewspace-731261/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/301743/viewspace-731261/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值