У нас есть конфигурация redis с двумя серверами redis. У нас также есть 3 сторожа для контроля двух экземпляров и инициирования сбоя при необходимости.Как сделать redis FLUSHALL без инициирования отказа от сбоев?
В настоящее время у нас есть процесс, когда нам периодически приходится делать FLUSHALL на сервере redis. Это операция блокировки, которая занимает больше времени, чем время, которое мы выделили для таймеров до таймаута. Другими словами, мы имеем нашу конфигурацию дозорного с:
sentinel down-after-milliseconds OurMasterName 5000
и делает Redis-кли FlushAll на сервере занимает> 5000 миллисекунд, поэтому Часовые инициировать при сбое.
Мы признаем, что выполнение FLUSHALL не очень хорошо, и мы также знаем, что мы могли бы увеличить число минус миллисекунды, но для целей этого вопроса предположим, что ни один из них не является параметром.
Вопрос в том, как мы можем сделать FLUSHALL (или эквивалентную операцию) БЕЗ, если наши часовые инициируют отказ из-за блокировки FLUSHALL более чем на 5000 миллисекунд? Кто-нибудь столкнулся и решил эту проблему?
Если вы находитесь на какой-то облачной платформе, вы можете просто создать новый экземпляр: либо иметь готовые изображения машин, либо с помощью некоторых инструментов devops –
@LiviuCostea Я думаю, что это, вероятно, правильный вариант. Если вы можете ссылаться на что-то более подробно описывающее, как это могло бы работать, я был бы рад принять ваш ответ. – jakejgordon
Если вы используете что-то вроде AWS или Azure, у вас есть API для создания нового кластера Redis. Запустите его, загрузите его с данными и после того как вы готовы просто изменить DNS, снова с помощью API-вызова - все это может быть обработано какой-то частью вашего приложения. Но в помещениях все может усложниться, потому что для этого потребуется автоматизация с помощью/шеф-повара/марионетки. –