【问题标题】:Redis replica handle failed connection stringsRedis 副本处理失败的连接字符串
【发布时间】:2017-03-14 09:09:41
【问题描述】:

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

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


Redis 配置:

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

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

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

在我的情况下,只有 server1 可以保证存在,server 2 到 N 不存在。


Web应用部署环境:

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

连接字符串如下所示:

  • "server1,password=myredispassword" 用于 Redis 主服务器
  • "serverN,password=myredispassword" 用于 Redis 从站

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


问题情况(和问题):

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

我认为在这种情况下,Web 应用程序会出现故障,并表示端点无法访问。

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

【问题讨论】:

  • 那么带有主连接字符串的应用程序只执行写入,而其他带有从属连接字符串的应用程序只执行读取?
  • @Astro 嗯,一个应用程序有主连接和从连接,但它使用主连接字符串写入并使用从连接字符串读取。我认为这是使用复制的预期行为?我想知道当 slave 宕机并且应用程序尝试读取时会发生什么(如果我需要处理这种情况),或者 master 宕机并且应用程序尝试写入时会发生什么。
  • 在这两种情况下它都应该失败..因为如果一个端点的连接失败,它不知道在哪里连接。这通常使用 sentinel 处理

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


【解决方案1】:

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

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

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

您的应用程序应连接到如下端点: 知识产权: 端口:即 26379

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

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

【讨论】:

  • 感谢您的澄清!
猜你喜欢
  • 2015-01-22
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 2014-07-20
  • 1970-01-01
  • 2015-06-02
相关资源
最近更新 更多