【发布时间】:2013-06-30 12:21:38
【问题描述】:
根据 git commit 消息,ServiceStack 最近添加了故障转移支持。我最初认为这意味着我可以关闭我的一个 Redis 实例,而我的池化客户端管理器将优雅地处理故障转移并尝试连接我的备用 Redis 实例之一。不幸的是,我的代码出错了,说它无法连接到初始 Redis 实例。
我目前在 Windows 上运行 Redis 2.6.12 的实例,主端口位于 6379 端口,从端口位于 6380,并设置了哨兵以在主节点出现故障时自动将从节点提升为主节点。我目前正在像这样实例化我的客户经理:
PooledRedisClientManager pooledClientManager =
new PooledRedisClientManager(new string[1] { "localhost:6379"},
new string[1] {"localhost:6380"});
其中第一个数组是读写主机(用于主机),第二个数组是只读主机(用于从机)。
当我在端口 6379 终止主服务器时,哨兵将从服务器提升为主服务器。现在,当我尝试运行我的 C# 代码时,它并没有故障转移到端口 6380,而是简单地中断并返回错误“无法在 localhost:6379 连接到 redis 实例”。
有没有办法解决这个问题,或者故障转移根本无法按我想要的方式工作?
【问题讨论】:
-
你找到方法了吗@Vliu
-
不,从我所做的大部分研究来看,大多数人并不依赖代码来处理故障转移。他们在 redis 数据库上使用(linux)代理层,例如 HAProxy @jaxxbo
标签: redis servicestack