无法用ASP连接到本地Redis Sentinel故障转移系统.. NET Redis SessionState提供程序
本文关键字:Redis NET 系统 转移 SessionState 程序 故障 Sentinel 连接 ASP | 更新日期: 2023-09-27 18:04:24
我有一个内部部署的Redis环境,设置了用于故障转移的Sentinels。我试图在我的MVC应用程序中使用Redis作为我的SessionStateProvider。我已经安装了Microsoft.Web.RedisSessionStateProvider NuGet包,并且我有web。提供程序的配置项。通过阅读微软关于该提供商的公告博客文章,似乎只是通过connectionString属性添加了对多主机的支持。
通过公告博客帖子的评论提出的问题:
@Siddarth
课件。Redis客户端允许使用ConnectionMultiplexer列出多个主机,如github.com/.../Basics.md所示。我怎么能去设置多个主机通过Redis客户端?在之前的评论中,你提到打开可以设置的optionsString,在这种情况下,我们将能够通过多个主机。
反应:
@Dvorac
ConnectionMultiplexer redis =>ConnectionMultiplexer. connect ("server1:6379,server2:6379");
你可以传递这个"server1:6379,server2:6379"使用"connectionString"会话状态提供程序中的设置。
我试图找到比这篇博客文章和评论更深入的文档,但我无法找到任何实质性的东西。在我寻找更多信息的过程中,我相信我读到提供者应该能够通过遍历所有提供的主机来确定哪个是主服务器。
到目前为止,我99%确定我需要使用connectionString来允许多个主机,尽管我几乎没有1%确定这个RedisSessionStateProvider有Sentinel支持。我一直在努力制作一个适当的connectionString,我目前面临以下例外:
类型为'StackExchange.Redis '的异常。RedisConnectionException'发生在Microsoft.Web.RedisSessionStateProvider.dll中,但未在用户代码中处理
附加信息:没有可用的连接来服务此操作:EVAL
我的connectionString,因为它是这样的格式:
connectionString="1.2.3.4:5,1.2.3.4:5,1.2.3.4:5,1.2.3.4:5,1.2.3.4:5,1.2.3.4:5,ssl=true,password=XXXXXX,abortConnect=false"
如果任何人有任何信息可以引导我正确的方向,我将不胜感激。
我已经建立了一个telnet,我已经向Redis服务器发送了消息,所以我知道我有访问权限,可以从我的机器建立连接。我不禁觉得,我要么没有写我的connectionString正确的ASP。. NET会话状态提供程序无法处理此配置,我应该考虑构建一些自定义的东西。
Redis客户端支持多台服务器,但它是关于主服务器和从服务器的,而不是多台主服务器的支持(像集群一样)。ASP。. NET Redis会话提供程序不支持主/从,实际上去从是没有用的,因为你只能从它读取(你只能将它用于只读会话)。
如果你想为你的本地Redis服务器设置高可用性,那么你必须使用一个内部DNS服务器,并为你的Redis会话实例记录。你应该在网上使用那个DNS记录。配置而不是IP,因为当故障转移发生时,您将使用新的主IP更新DNS条目。