我正在使用 StackExchange.Redis 使用主/从和哨兵设置在 Redis 上进行概念验证设置以实现高可用性,并且在使用 StackExchange.Redis 时遇到了一些问题。
我已经使用最新的 Redis 服务器成功设置了 3 台 Ubuntu VM,一台服务器是带有 Sentinel 的主服务器,一台是带有 Sentinel 的从属服务器,另一台是纯粹的 Sentinel。通过使用 CLI,我可以看到从主服务器到从服务器的复制工作正常,当我停止主服务器(sudo services redis_6379 stop)时,从服务器被提升为主服务器。
但是,当尝试使用 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);
Run Code Online (Sandbox Code Playgroud)
我发现这在两台服务器都启动时完美运行,但是当主服务器被关闭时,Sentinel 正确响应,从服务器被提升为主服务器,但是从应用程序到集群的连接需要 12 到 40 秒来连接每次尝试(即它永远不会变得更快)。
我在这里错过了什么吗?我正在尝试实现高可用性,但这种滞后显然是不可接受的。
StackExchange.Redis 不支持 Sentinel。在这个 Github 问题上有一个很大的讨论。
简而言之:StackExchange不使用 Sentinel。他们没有为其建立支持的用例。
在这里您可以看到 Marc Gravell 描述它如何与多个端点一起工作。
| 归档时间: |
|
| 查看次数: |
2976 次 |
| 最近记录: |