Механизм обновления узлов 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.4→18.3.5.Major-версия целевого релиза на единицу больше major-версии исходного релиза, например
18.2.0→19.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.
Обновление кластера#
Чтобы обновить кластер с исходной версии на целевую:
Создайте актуальные снепшоты данных критичных кеш-групп. Они могут потребоваться для восстановления данных.
Включите режим Rolling Upgrade:
control.(sh|bat) --rolling-upgrade enableПоочередно обновите каждый серверный узел:
остановите узел;
установите целевую версию DataGrid;
запустите узел;
убедитесь, что узел присоединился к кластеру;
дождитесь завершения восстановления и ребалансировки партиций.
Предупреждение
Если присоединение первого обновленного узла отклонено из-за несовместимости версий или компонентов, верните узел к исходной версии и остановите обновление остальных узлов.
Проверьте, поддерживается ли выбранный переход. При отсутствии сведений обратитесь в техническую поддержку.
Таким же способом обновите все толстые клиентские узлы.
Проверьте состояние режима и версии узлов:
control.(sh|bat) --rolling-upgrade statusУбедитесь, что режим Rolling Upgrade включен, а все серверные и толстые клиентские узлы работают на целевой версии.
Примечание
Чтобы просмотреть состав и версии плагинов на всех узлах, можно использовать системное представление
IGNITE_PLUGINS:control.(sh|bat) --system-view IGNITE_PLUGINS --all-nodesПредставление показывает загруженные плагины, но не подтверждает совместимость перехода. Необязательные плагины могут отсутствовать на толстых клиентских узлах.
Финализируйте целевую версию кластера:
control.(sh|bat) --rolling-upgrade finalizeЕсли команда сообщила о разных версиях компонентов, завершите их обновление и повторите
finalize.Повторно выполните
statusи убедитесь, что режим Rolling Upgrade выключен:control.(sh|bat) --rolling-upgrade status
Откат до запуска финализации#
Описанный ниже откат гарантирован только до первого вызова команды finalize. После вызова команды откат средствами Rolling Upgrade не гарантируется, даже если она завершилась с ошибкой.
Чтобы вернуть кластер к исходной версии:
Поочередно верните обновленные серверные узлы к исходной версии:
остановите узел;
установите исходную версию DataGrid;
запустите узел;
убедитесь, что узел присоединился к кластеру.
Верните обновленные толстые клиентские узлы к исходной версии.
Проверьте состояние режима и версии узлов:
control.(sh|bat) --rolling-upgrade statusУбедитесь, что режим Rolling Upgrade включен, а все серверные и толстые клиентские узлы работают в исходной версии.
Финализируйте исходную версию кластера, чтобы выключить режим Rolling Upgrade:
control.(sh|bat) --rolling-upgrade finalizeПовторно выполните
statusи убедитесь, что режим Rolling Upgrade выключен:control.(sh|bat) --rolling-upgrade statusПри необходимости восстановите данные из подготовленных снепшотов. Подробнее об этом написано в разделе «Восстановление из резервной копии (снепшота)».
Предупреждение
При восстановлении данные возвращаются к состоянию на момент создания снепшота. Изменения, которые были выполнены после создания снепшота, могут быть потеряны.