【发布时间】: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