Я думаю, что что-то не так с моей средой развертывания Redis и веб-приложений.
Было бы признательно, если бы кто-нибудь мог просмотреть мои конфигурации и решить случай, который я считаю сложным.
Конфигурация Redis:
У меня настроено несколько реплик Redis, одна в качестве главной, а другие в качестве подчиненных. Скажем для упрощения:
- server1: настроен как главный
- server2 ~ serverN: настроены как ведомые, ссылаясь на server1
Redis sentinel(s) может быть, а может и не быть в этой структуре, потому что я не могу гарантировать, что там будут как минимум серверы.
В моей ситуации гарантированно существует только server1, а серверы со 2 по N — нет.
Среда развертывания веб-приложения:
У меня также есть веб-приложения .NET, развернутые с использованием двух строк подключения: одна для ведущего, а другая для одного из ведомых. Веб-сервисы используют
Строки подключения будут выглядеть так:
- «server1,password=myredispassword» для мастера Redis
- "serverN,password=myredispassword" для подчиненного устройства Redis
Конечно, если веб-приложение имеет ведомое соединение для serverN, то serverN гарантированно существует.
Проблемная ситуация (и вопрос):
Теперь я думаю, что возможна ситуация, когда есть упавшая реплика Redis (главная или подчиненная), и мое веб-приложение ссылается на эту упавшую реплику Redis через строку подключения.
Я предполагаю, что в таком случае веб-приложение отключится, заявив, что конечная точка недоступна.
Можно ли изящно передать недостижимую реплику конечной точки другой достижимой? Нужно ли для этого настраивать часовых Redis? Или вы даже скажете, что мой подход к попытке доступа или обработки соединения Redis неверен? Заранее спасибо за ваше мнение.