Redis副本处理连接字符串失败

时间:2017-03-14 09:09:41

标签: .net redis stackexchange.redis redis-sentinel

我认为我的Redis和Web应用程序部署环境存在问题。

如果有人可以查看我的配置并处理我觉得棘手的案例,我将不胜感激。

Redis配置:

我配置了多个Redis副本,一个作为主副本,另一个作为从属副本。让我们说简化:

  • server1:配置为主
  • server2~serverN:配置为slave,引用server1

Redis哨兵可能存在也可能不存在于此结构中,因为我不能保证至少会有服务器。

在我的情况下,只保证server1存在,服务器2到N不存在。

Web应用程序部署环境:

我还使用两个连接字符串部署.NET Web应用程序,一个用于主服务器,另一个用于一个服务器。 Web服务使用

连接字符串如下所示:

  • “Redis master”的“server1,password = myredispassword”
  • “Redis slave”的“serverN,password = myredispassword”

当然,如果Web应用程序具有serverN的从属连接,则保证serverN存在。

问题情况(和问题):

现在我认为有可能出现Redis副本(主服务器或从服务器)崩溃的情况,我的Web应用程序通过连接字符串引用Redis副本。

我认为在这种情况下,Web应用程序会崩溃,说端点无法访问。

是否可以优雅地将无法访问的端点副本处理到另一个可访问的端点副本?我是否需要配置Redis哨兵才能执行此操作?或者你甚至会说我尝试访问或处理Redis连接的方法不正确?提前感谢您的意见。

1 个答案:

答案 0 :(得分:1)

使用redis sentinel可以更好地处理这种情况。您的应用程序连接到redis sentinel端点:

  1. 提供自动故障转移功能,当主设备发生故障时,其中一个从属节点会自动升级为主设备。

  2. 配置提供商: Sentinel充当配置提供程序。使用sentinel连接字符串,它确定主节点和从节点。它还会将您的读取请求转发给slave并写入master。

  3. 您的应用程序应该连接到端点,如下所示: IP: 港口:即26379

    确保驱动程序在发生故障转移时尝试使用sentinel端点连接新选择的主节点。

    必须可以从应用程序服务器访问redis和sentinel端口。