Конфигурация: три раздела кластера Redis в трех наборах по одному ведущему и одному ведомому. Когда мастер выходит из строя, салат немедленно обнаруживает сбой и начинает повторную попытку. Однако салат-латук не обнаруживает, что связанное ведомое устройство повысило себя до уровня ведущего, и продолжает повторять попытки, используя старый ведущий сервер, который недоступен и в конечном итоге истекает время ожидания. Пытался установить различные параметры обновления топологии, но безрезультатно.
Предлагаемое решение: после того, как первая попытка завершится неудачно (вторая попытка в строке завершится неудачей), повторно запустите обновление топологии (которое использовалось для получения топологии во время инициализации), используя топологию любого из предоставленных узлов (поскольку все они имеют одинаковую топологию. Информация). Это восстановит связи с текущими мастерами. Затем повторите неудачную операцию с разделом, которая ранее не удалась.
Redis Cluster ограничен с точки зрения распространения обновлений конфигурации по сравнению с Redis Sentinel. Redis Sentinel передает обновления через Pub / Sub, в то время как Redis Cluster оставляет опрос как единственный вариант.
Салат-латук поддерживает периодические и адаптивные триггеры обновление топологии кластера. Топология периодических обновлений через равные промежутки времени, адаптивное обновление отслеживает отключения и перенаправления кластера.
И то, и другое можно настроить через ClusterClientOptions
.
Периодические и адаптивные обновления пытаются охватить большинство случаев, которые в основном являются предположениями, компенсирующими отсутствие надлежащего распространения изменений конфигурации. Всегда есть лазейки (см. Выпуск # 672), в которых салат-латук быстрее, чем фактическое изменение топологии. Это оставляет салат-латук с устаревшим представлением топологии, поскольку фактическое изменение происходит несколько позже.
У меня такая же проблема, я не могу ее исправить stackoverflow.com/questions/61941396/…
Lettuce immediately detects the outage and begins retrying
тут говорит о переподключении?