ASP.Net会话状态提供程序故障转移方案
我们已经为我们的web应用程序实现了Redis会话状态提供程序,它工作起来很有魅力,但我想知道如果Redis服务器出现故障或者web服务器无法连接到Redis服务器会发生什么 有没有办法将InProc会话状态管理用作Redis的故障切换?ASP.Net会话状态提供程序故障转移方案,asp.net,session,redis,session-state,inproc,Asp.net,Session,Redis,Session State,Inproc,我们已经为我们的web应用程序实现了Redis会话状态提供程序,它工作起来很有魅力,但我想知道如果Redis服务器出现故障或者web服务器无法连接到Redis服务器会发生什么 有没有办法将InProc会话状态管理用作Redis的故障切换? 我找不到任何关于声明多个会话状态提供程序的文档,所以若redis失败,系统可以继续使用inproc。(我接受在redis中丢失会话状态,并在出现故障时从头开始,在Proc中再次丢失会话状态,如果redis可用,则重新从头开始)您需要为您的redis服务器定义从
我找不到任何关于声明多个会话状态提供程序的文档,所以若redis失败,系统可以继续使用inproc。(我接受在redis中丢失会话状态,并在出现故障时从头开始,在Proc中再次丢失会话状态,如果redis可用,则重新从头开始)您需要为您的redis服务器定义从属服务器,并使用redis sentinel来监视您的服务器我正在使用StackExchange库连接到redis服务器。这只是一个简单的代码,它只是显示了如何订阅事件,而不是将其作为最终解决方案。每当sentinel选择新服务器时,您将收到一个事件,以便您可以选择新服务器
ConnectionMultiplexer multiplexer =
ConnectionMultiplexer.Connect(new ConfigurationOptions
{
CommandMap = CommandMap.Sentinel,
EndPoints = { { "127.0.0.1", 26379 }, { "127.0.0.1", 26380 } },
AllowAdmin = true,
TieBreaker = "",
ServiceName = "mymaster",
SyncTimeout = 5000
});
multiplexer.GetSubscriber().Subscribe("*", (c, m) =>
{
Debug.WriteLine("the message=" + m);
Debug.WriteLine("channel=" + c);
try
{
var sentinelServer = multiplexer.GetServer("127.0.0.1", 26379).SentinelGetMasterAddressByName("mymaster");
Debug.WriteLine("Current server=" + sentinelServer);
Debug.Flush();
}
catch (Exception)
{
var sentinelServer = multiplexer.GetServer("127.0.0.1", 26380).SentinelGetMasterAddressByName("mymaster");
Debug.WriteLine("Current server=" + sentinelServer );
Debug.Flush();
}
});
我一直有一个类似的问题,Redis作为会话存储的支持失败,我找不到任何允许故障切换/回切到其他SessionStateProvider的东西
我希望有什么东西可以在mem表或类似的表中写入Redis和SqlServer,然后从1读取,如果从2读取失败的话。但是,这似乎还不存在。因此,没有办法配置redis的替代方案,如ASP.Net InProcCheck this ticket@alirezam。我不相信ASP.Net redis会话状态提供程序支持redis Sentinel。如果你不知道的话,我很高兴我错了。很抱歉我反应太晚。你使用sentinel来配置你的redis。在asp.net中,你订阅sentinel服务器,并在服务器更改时收听事件,然后根据新服务器更新你的网络配置更新web.config不是一个好主意。还有别的办法吗?你不想订阅“+开关主机”活动吗?此外,您的代码并没有确切说明如何在应用程序中进行切换。请详细说明事件处理程序好吗?您需要从StackExchange导入库并使用global.asax文件中的代码