0

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

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


Redis配置:

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

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

Redis sentinel(s) 可能存在也可能不存在于这个结构中,因为我不能保证至少会有服务器。

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


Web应用部署环境:

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

连接字符串如下所示:

  • Redis 主服务器的“server1,password=myredispassword”
  • Redis 从站的“serverN,password=myredispassword”

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


问题情况(和问题):

现在我认为可能会出现以下情况:Redis 副本(主或从)已失效,而我的 Web 应用程序通过连接字符串引用该已失效的 Redis 副本。

我认为在这种情况下,Web 应用程序会停止运行,并表示端点无法访问。

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

4

1 回答 1

1

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

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

  2. 配置提供者:Sentinel 充当配置提供者。通过哨兵连接字符串,它确定主节点和从节点。它还负责将您的读取请求转发给从属服务器并写入主服务器。

您的应用程序应连接到如下端点:IP:端口:即 26379

Make sure the driver attempts to connect newly elected master using sentinel endpoint whenever failover takes place.

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

于 2017-03-15T04:41:41.020 回答