Механизм обновления узлов Rolling Upgrade#

Внимание

Механизм Rolling Upgrade доступен для эксплуатации начиная с версии DataGrid 18.0.0.

Rolling Upgrade позволяет поочередно обновлять узлы кластера DataGrid без полной остановки. На время обновления включается режим Rolling Upgrade, в котором могут одновременно работать узлы с совместимыми версиями компонентов.

Один цикл Rolling Upgrade предназначен для одного поддерживаемого перехода. Цикл состоит из трех этапов: включение режима, обновление всех узлов и финализация версии кластера.

До запуска finalize обновленные узлы работают в режиме совместимости с исходной версией кластера. Возможности целевой версии, которые несовместимы с исходной, остаются неактивными и включаются во время финализации.

Перед началом обновления#

Версия DataGrid состоит из трех частей: major.minor.maintenance, например 18.3.5. По умолчанию Rolling Upgrade поддерживается при переходе на более новую версию в следующих случаях:

  • Major-версии исходного и целевого релизов совпадают. Значения minor- и maintenance-версий могут отличаться, например 18.0.418.3.5.

  • Major-версия целевого релиза на единицу больше major-версии исходного релиза, например 18.2.019.1.3.

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

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

В Rolling Upgrade участвуют серверные и толстые клиентские узлы. Тонкие клиенты не входят в топологию кластера и не участвуют в проверках Rolling Upgrade.

Для критичных кеш-групп с режимом PARTITIONED заранее настройте не менее одной резервной копии партиций. Иначе при перезапуске узла данные могут быть временно недоступны, а без включенной персистентности — потеряны.

Предупреждение

Состояние Rolling Upgrade хранится в памяти кластера и сбрасывается после остановки всех серверных узлов. Не выполняйте полную остановку кластера до финализации обновления.

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

Ограничения#

Во время Rolling Upgrade действуют ограничения:

  • в кластере могут одновременно работать не более двух версий каждого компонента;

  • DataGrid автоматически проверяет совместимость, сравнивая наборы поддерживаемых возможностей компонентов присоединяемого узла и кластера;

  • перед финализацией все серверные и толстые клиентские узлы должны быть обновлены до целевой версии;

  • версии настроенных компонентов и плагинов должны быть согласованы на узлах;

  • необязательные плагины могут отсутствовать на толстых клиентских узлах;

  • во время финализации новые узлы не могут присоединиться к кластеру.

Для следующего перехода версий завершите текущий цикл Rolling Upgrade и запустите новый.

Управление Rolling Upgrade с помощью утилиты control.sh#

Команды Rolling Upgrade можно выполнять с помощью утилиты control.(sh|bat) на любом узле кластера. Подробнее об утилите написано в разделе «Утилита control».

Включение режима Rolling Upgrade#

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

control.(sh|bat) --rolling-upgrade enable

Для выполнения команды требуется право ADMIN_ROLLING_UPGRADE. При успешном выполнении команда выводит сообщение Rolling upgrade enabled.

Получение статуса Rolling Upgrade#

Чтобы получить статус Rolling Upgrade и список узлов с версиями DataGrid, выполните команду:

control.(sh|bat) --rolling-upgrade status

Для выполнения команды требуется право ADMIN_OPS. Команда всегда выводит состояние режима и таблицу узлов из топологии. В колонке Client указано, является ли узел толстым клиентским узлом.

Пример вывода команды status

Rolling upgrade status: enabled

Node ID      Consistent ID    Order    Client    Addresses         Ignite version
<node-id-1>  server-1         1        false     [<ip-address-1>]  <source-version>
<node-id-2>  server-2         2        false     [<ip-address-2>]  <target-version>
<node-id-3>  client-1         3        true      [<ip-address-3>]  <target-version>

Команда status показывает версию DataGrid, но не показывает версии отдельных плагинов. Несовпадения версий отдельных компонентов и плагинов выявляются при финализации.

Финализация версии кластера#

После обновления всех серверных и толстых клиентских узлов выполните команду:

control.(sh|bat) --rolling-upgrade finalize

Для выполнения команды требуется право ADMIN_ROLLING_UPGRADE.

Команда проверяет согласованность версий компонентов и плагинов, затем активирует возможности финализируемой версии и выключает режим Rolling Upgrade. Во время выполнения finalize новые узлы не могут присоединиться к кластеру. При успешном выполнении команда выводит сообщение Cluster version finalized.

Если версии компонентов различаются, команда завершается с ошибкой, а режим Rolling Upgrade остается включенным. В этом случае завершите обновление компонентов и повторите команду finalize. Если финализация завершилась из-за несогласованных версий, выполнять abort не требуется.

Внимание

После начала активации возможностей целевой версии откат средствами Rolling Upgrade не гарантируется. Перед активацией команда finalize проверяет согласованность версий компонентов и плагинов на узлах. Если проверка выявила различия, финализация прекращается до начала активации и штатный откат остается доступным.

Прерывание финализации#

Чтобы вручную прервать выполняющуюся финализацию, используйте команду:

control.(sh|bat) --rolling-upgrade abort

Для выполнения команды требуется право ADMIN_ROLLING_UPGRADE. При успешном выполнении команда выводит сообщение Cluster version finalization aborted.

Команда abort прерывает только выполняющуюся финализацию. Команда не меняет версии узлов и не выключает режим Rolling Upgrade. Сообщение подтверждает выполнение команды, но не означает, что в момент ее вызова выполнялась финализация.

После устранения причины ошибки повторите finalize.

Обновление кластера#

Чтобы обновить кластер с исходной версии на целевую:

  1. Создайте актуальные снепшоты данных критичных кеш-групп. Они могут потребоваться для восстановления данных.

  2. Включите режим Rolling Upgrade:

    control.(sh|bat) --rolling-upgrade enable
    
  3. Поочередно обновите каждый серверный узел:

    • остановите узел;

    • установите целевую версию DataGrid;

    • запустите узел;

    • убедитесь, что узел присоединился к кластеру;

    • дождитесь завершения восстановления и ребалансировки партиций.

    Предупреждение

    Если присоединение первого обновленного узла отклонено из-за несовместимости версий или компонентов, верните узел к исходной версии и остановите обновление остальных узлов.

    Проверьте, поддерживается ли выбранный переход. При отсутствии сведений обратитесь в техническую поддержку.

  4. Таким же способом обновите все толстые клиентские узлы.

  5. Проверьте состояние режима и версии узлов:

    control.(sh|bat) --rolling-upgrade status
    

    Убедитесь, что режим Rolling Upgrade включен, а все серверные и толстые клиентские узлы работают на целевой версии.

    Примечание

    Чтобы просмотреть состав и версии плагинов на всех узлах, можно использовать системное представление IGNITE_PLUGINS:

    control.(sh|bat) --system-view IGNITE_PLUGINS --all-nodes
    

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

  6. Финализируйте целевую версию кластера:

    control.(sh|bat) --rolling-upgrade finalize
    

    Если команда сообщила о разных версиях компонентов, завершите их обновление и повторите finalize.

  7. Повторно выполните status и убедитесь, что режим Rolling Upgrade выключен:

    control.(sh|bat) --rolling-upgrade status
    

Откат до запуска финализации#

Описанный ниже откат гарантирован только до первого вызова команды finalize. После вызова команды откат средствами Rolling Upgrade не гарантируется, даже если она завершилась с ошибкой.

Чтобы вернуть кластер к исходной версии:

  1. Поочередно верните обновленные серверные узлы к исходной версии:

    • остановите узел;

    • установите исходную версию DataGrid;

    • запустите узел;

    • убедитесь, что узел присоединился к кластеру.

  2. Верните обновленные толстые клиентские узлы к исходной версии.

  3. Проверьте состояние режима и версии узлов:

    control.(sh|bat) --rolling-upgrade status
    

    Убедитесь, что режим Rolling Upgrade включен, а все серверные и толстые клиентские узлы работают в исходной версии.

  4. Финализируйте исходную версию кластера, чтобы выключить режим Rolling Upgrade:

    control.(sh|bat) --rolling-upgrade finalize
    
  5. Повторно выполните status и убедитесь, что режим Rolling Upgrade выключен:

    control.(sh|bat) --rolling-upgrade status
    
  6. При необходимости восстановите данные из подготовленных снепшотов. Подробнее об этом написано в разделе «Восстановление из резервной копии (снепшота)».

    Предупреждение

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