具有主/从服务器的StackExchange.Redis客户端 - 如何处理失败的主服务器

时间:2016-02-29 11:04:13

标签: redis

我正在使用StackExchange.Redis在Redis上进行概念验证设置,使用主/从和Sentinel设置以获得高可用性,并且在使用StackExchange.Redis时遇到了一些问题。

我已经使用最新的Redis服务器成功设置了3个Ubuntu VM,一个服务器是Master with Sentinel,一个是Slave with Sentinel,另一个是纯Sentinel。通过使用CLI,我可以看到从主服务器到从服务器的复制正常工作,当我停止主服务器(sudo服务redis_6379停止)时,从服务器被提升为主服务器。

但是,在尝试使用StackExchange.Redis时

ConnectionMultiplexer redis;
ConfigurationOptions options = ConfigurationOptions.Parse("172.20.74.40:6379,172.20.74.41:6379");
options.AbortOnConnectFail = false;
redis = ConnectionMultiplexer.Connect(options);

我发现当两个服务器都启动时,这种方法非常有效,但是当主服务器关闭时,Sentinel会正确响应,从服务器将升级为主服务器,但从应用程序到集群的连接需要12到40秒才能连接每次尝试(即永远不会变快)。

我在这里遗漏了什么吗?我试图实现高可用性,但这种滞后显然是不可接受的。

1 个答案:

答案 0 :(得分:2)

StackExchange.Redis不支持Sentinel。 在this Github issue上有一个关于它的大讨论。

简而言之: StackExchange 不使用Sentinel。他们没有用于建立对它的支持的用例。

Here你可以看到Marc Gravell描述它如何与多个端点一起使用。