Ожидание завершения восстановления кэша Hazelcast во время сине-зеленого развертывания - PullRequest
0 голосов
/ 30 ноября 2018

В моей настройке у меня есть два экземпляра приложения, которые одновременно работают и обрабатывают запросы, используя Hazelcast для совместного использования состояния и блокировки.Настройка по умолчанию в том, что все данные находятся на обоих узлах, причем 50% находятся в рабочем состоянии, а 50% являются резервной копией для другого узла.

Я хочу добавить сине-зеленое развертывание в мои настройки так, чтобы яможет развернуть новую версию без прерываний обработки запросов и без потери ошибочных данных / запросов на обработку.

Во время развертывания я бы отключил один экземпляр приложения, то есть оставшийся экземпляр теперь будет иметь 100%живых данных и обрабатывать запросы с этим.Если что-то пойдет не так с этим экземпляром, я потеряю все свои данные (у меня нет настроек резервного копирования) - я рад принять этот риск.

Как только я открою экземпляр новой версии приложения, Hazelcast должен начать перебалансировать кэш, чтобы его 50% работало и 50% резервировалось в каждом экземпляре снова.Именно в этот момент я хочу заблокировать и подождать, пока перебалансирование не будет полностью завершено, прежде чем я объявлю новый экземпляр как живой .По завершении новый экземпляр содержит 50% оперативных данных и 50% в качестве резервной копии.

После завершения перебалансировки я могу отключить вторую версию, вызвать новую версию, Hazelcast инициализирует перебалансировкуЯ бы заблокировал, дождался завершения перебалансировки, а затем объявил бы второй экземпляр как живой.

Мое сине-зеленое развертывание теперь будет завершено.

Вопрос: какзаблокировать новый экземпляр до полного перебалансирования (получены все данные)?

1 Ответ

0 голосов
/ 30 ноября 2018

Hazelcast автоматически перебалансирует и создает резервные копии по мере необходимости, когда вы добавляете / удаляете участников, вам не нужно делать никаких дополнительных настроек.Важным моментом является постепенное отключение, чтобы избежать потери данных при опрокидывании членов.

Способы корректного завершения работы члена:

  • Вы можете вызывать метод HazelcastInstance.shutdown () программно.
  • Вы можете использовать метод завершения работы JMX API.Вы можете сделать это, внедрив клиентское приложение JMX или используя инструмент мониторинга JMX (например, JConsole).
  • Можно установить для свойства hazelcast.shutdownhook.policy значение GRACEFUL, а затем завершить работу с помощью kill -15.Ваш участник будет корректно отключен.
  • Вы можете использовать кнопку «Завершение работы участника» в представлении участников Центра управления Hazelcast, если вы его используете.

OTOH, Hazelcast wiseВам не нужно блокировать участника во время этого процесса.Это специфическое требование для приложения?

...