Обновление OpenSearch: Как обновить версию без потери данных

Под обновлением понимается переход на новую версию OpenSearch. Процесс обновления распределенных систем, таких как OpenSearch, может быть достаточно сложным, учитывая большие объемы данных, участие множества узлов и различные конфигурации, которые могут существовать в кластере.

Обновление существующего кластера может быть выполнено двумя способами: путем скользящего обновления и путем полного перезапуска кластера. Преимуществом скользящего обновления является отсутствие простоев.

Следует помнить, что любые изменения в системе могут привести к потере данных при неточном соблюдении инструкций. Тщательно тестируйте и разрабатывайте стратегию обновления, а также создавайте резервные копии данных перед выполнением любых обновлений.

Для перехода с Elasticsearch на OpenSearch ознакомьтесь с этим руководством.

Что необходимо проверить перед обновлением версий?

После обновления узлы OpenSearch не могут быть понижены. Перед началом процесса обновления необходимо:

  • Проверить журнал устаревания и устранить все проблемы.
  • Просмотреть список изменений, чтобы убедиться в том, что вы знаете о функциональных возможностях, которые могут измениться или исчезнуть. В основном это касается конфигурации узлов, маппингов и шаблонов индексов, а также настроек кластера.
  • Проверьте совместимость плагинов ES, чтобы убедиться в их совместимости с новой версией.
  • Во избежание проблем перед обновлением рабочего кластера создайте тестовую среду для проверки процесса обновления в тестовой или промежуточной среде.
  • Сделайте резервную копию и снимки данных, поскольку единственный способ "отменить" неудачное обновление - это создать новый кластер со старой версией и восстановить данные из снимков.

Как выполнить автономное обновление - полное обновление с перезапуском кластера

Обновление с полным перезапуском кластера предполагает одновременную остановку всех узлов OpenSearch, их обновление и последующий перезапуск каждого из них. Такой подход к обновлению неизбежно приведет к простою кластера OpenSearch на протяжении всего процесса.

Как правило, автономные обновления проще, чем онлайн, поскольку не требуется одновременная работа с кластером с различными версиями узлов.

Порядок действий следующий:

  1. Отключить выделение шардов
  2. Остановите все узлы OpenSearch и обновите их
  3. Обновить все подключаемые модули
  4. Запустить кластер OpenSearch
  5. Вновь включить распределение шардов
  6. Обновление клиентских библиотек до новой версии
  7. Перезапустить узлы, отвечающие требованиям мастера
  8. Перезапустить узлы, не являющиеся ведущими.

Следует помнить, что при полном перезапуске кластера мастер-узлы должны быть запущены раньше, чем не мастер-узлы. Это необходимо для того, чтобы ведущие узлы могли создать кластер, к которому смогут присоединиться другие узлы, в отличие от скользящего запуска, при котором не ведущие узлы должны быть обновлены раньше ведущих.

Как выполнить обновление в режиме онлайн - обновление с скользящим перезапусками

Обновление со скользящим перезапуском позволяет обновить кластер без простоев. В этом случае каждый узел последовательно обновляется и перезагружается, не останавливая работу всего кластера OpenSearch.

Скользящее обновление с перезагрузкой не может быть выполнено при изменении MAJOR-версий. По этой причине при выполнении скользящего перезапуска между основными версиями необходимо ВСЕГДА использовать последнюю минорную версию в качестве промежуточного шага для обновления до последующей основной версии.

Как обновлять узлы при скользящем обновлении

Обновление узлов выполняется следующим образом: сначала обновляются все узлы NON, отвечающие требованиям мастера.

Убедитесь, что статус кластера зеленый и стабильный.

Убедитесь, что все реплики доступны, чтобы отключение узла не привело к потере данных.

Отключите ненужное индексирование

По возможности следует остановить все процессы индексирования, чтобы повысить стабильность кластера.

Отключить выделение шардов

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

Остановить OpenSearch

Остановите OpenSearch, прежде чем переходить к следующему шагу.

Обновление OpenSearch

Метод обновления зависит от способа установки.

Обновление подключаемых модулей

OpenSearch не запустится, если подключаемый модуль не той же версии, что и OpenSearch.

Запуск OpenSearch

Запустите OpenSearch, прежде чем переходить к следующему шагу.

Повторное включение выделения шардов

Используйте команду, приведенную ниже.

Проверьте, что обновленный узел вернулся в кластер.

С помощью приведенной ниже команды можно проверить, сколько узлов находится в кластере.

Дождитесь, пока статус кластера станет зеленым

Команда, представленная ниже, также покажет прогресс процесса восстановления шардов на обновленном узле, пока кластер не перейдет в зеленое состояние.

Повторите

Повторите весь описанный выше процесс для каждого узла.

Чтобы отключить выделение шардов, выполните команду:

Чтобы снова включить выделение шардов, выполните команду:

Получите состояние кластера и узнайте, сколько узлов находится в кластере:

Общие проблемы и важные моменты

  • Основной проблемой при обновлении является несовместимость версий. OpenSearch поддерживает скользящее обновление только между младшими версиями. Необходимо изучить официальную документацию, чтобы убедиться, что ваш кластер поддерживает скользящее обновление, иначе потребуется полная переиндексация.
  • После обновления узла OpenSearch откат невозможен. Поэтому перед обновлением необходимо создать резервную копию данных.
  • В каждом выпуске OpenSearch постоянно удаляет или устаревает некоторые функции, поэтому перед планированием обновления необходимо следить за журналами изменений каждой версии.
  • При скользящем обновлении важно отключить выделение шардов перед остановкой узла и включить выделение шардов при обновлении и перезапуске узла. Этот процесс позволяет избежать излишней нагрузки на IO в кластере.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий