我们已经为Redis服务器配置了一个主服务器和两个从服务器。如果我的主服务器出现故障,我们如何处理故障切换而无需重新启动Redis服务器。Redis故障切换
回答
更新:
今天,我会建议您检查出redis-sentinel,通过Redis的作者antirez用于监视和自动故障转移的工具。
原件回复:
检查SLAVEOF
命令:http://redis.io/commands/slaveof
当你发现你的主站出现故障,问题在你的奴隶之一SLAVEOF NO ONE
推动它掌握。然后把你的另一个奴隶指向它的新主人。另请参阅“无停机时升级或重新启动Redis实例”:http://redis.io/topics/admin
对于管理配置文件,您可以沿着这些方向执行某些操作(注意:未经测试,意为示例)。下面的示例假定两个配置文件为每个服务器(/etc/redis/server1.master.conf
,/etc/redis/server1.slave.conf
,等等),一个具有服务器作为一些预定义主的奴隶:
#!/bin/sh
master()
{
server_name=$1
redis-cli slaveof no one
ln -sf /etc/redis/$server_name.master.conf /etc/redis/$server_name.conf
}
# Usage: slave(server1 server2 6379)
slave()
{
server_name=$1
master=$2
master_port=$3
redis-cli slaveof $master $master_port
ln -sf /etc/redis/$server_name.slave.conf /etc/redis/$server_name.conf
}
而是具有预设的配置文件,您可以在编辑与例如飞行sed
。基本上,您要确保在配置文件中始终有一个slaveof
节,可以指向主节点或slaveof no one
。然后重写使用sed
配置(同样,没有测试,就意味着作为深思):(3.2版本为最新的稳定今天)
#!/bin/sh
master()
{
server_name=$1
config=$server_name.conf
redis-cli slaveof no one
sed -i "s/^slaveof.*/slaveof no one/" $config
}
# Usage: slave(server1 server2 6379)
slave()
{
server_name=$1
config=$server_name.conf
master=$2
master_port=$3
redis-cli slaveof $master $master_port
sed -i "s/^slaveof.*/slaveof $master $master_port/" $config
}
我会建议寻找到的Redis集群。集群这是一种新方法,不再哨兵。故障切换的原理是一样的,从设备在主设备停机的情况下提升主设备的性能,并增加新的功能,包括Redis支持的分条逻辑。应用程序只需要连接到具有一组节点的集群,就是这样。
如果我们正在谈论一般故障切换,请注意,Redis集群不保证高度一致性。
请找到片段来自: http://redis.io/topics/cluster-tutorial
“的Redis集群是不能够保证强一致性具体而言,这意味着,在一定条件下有可能Redis的集群将丢失是写操作。通过系统给客户确认。
的第一个原因的Redis集群可以输写是因为它使用异步复制。
还有一个值得注意的场景,Redis集群将丢失写入,这发生在网络分区中,客户端与包含至少一个主控的少数实例隔离。“
- 1. Redis副本集故障切换,Celery
- 2. jQuery切换故障
- 3. Cross-colo故障切换设计,DNS级别故障切换?
- 4. Redis sentinel不会故障切换我的主服务器
- 5. AWS Elasticache Redis故障转移
- 6. CloudFoundry与NodeJS的Redis故障
- 7. ActiveDirectory Provider故障切换最佳实践
- 8. 故障切换视图,澄清需要
- 9. Hazelcast:持久性故障切换
- 10. 集群节点的libmemcached故障切换
- 11. Android上的故障切换类
- 12. Redis/Jedis没有单点故障和自动故障转移
- 13. Redis无故障立即崩溃
- 14. 如何为硬件故障安装Redis?
- 15. 如何在Sentinel和redis-py中使用Redis时故障切换到新主节点?
- 16. T4故障编译转换
- 17. 与Web.Config变换故障
- 18. 载波故障:转换
- 19. qpid/amqp jms客户端的客户端故障切换?
- 20. 有两台备用服务器的PostgreSQL故障切换
- 21. 可用性组副本故障切换连接问题
- 22. “无法连接到主机”的PHP curl故障切换功能
- 23. 多AZ RDS测试故障切换和连接监控
- 24. Heroku app的服务器(故障切换)冗余解决方案
- 25. 自动故障切换器不能在repmgr中工作
- 26. NHibernate和数据库连接故障切换?
- 27. 故障切换与高可用性有何区别?
- 28. 服务器故障切换是否有任何开放标准?
- 29. 程序集,Web.config和App.Config - 构建故障切换逻辑
- 30. memcache负载平衡/故障切换计划
感谢莱纳斯,我曾尝试在Redis的客户其工作正常,但如何改变同样在上飞的Redis的conf,是否有可用的任何脚本?谢谢 – vijay 2012-02-13 04:28:53
太棒了!我不t知道你使用了哪个redis客户端库,但我猜它有一个'slaveof'命令。对于配置文件,你可以为每个服务器配置两个配置,一个用于slave,一个用于master,以及它们之间的符号链接。 – 2012-02-13 12:25:20