Механизм обновления узлов Rolling Upgrade#
Внимание
Механизм Rolling Upgrade будет доступен для эксплуатации начиная с версии DataGrid 18.0.0.
Rolling Upgrade — механизм, который позволяет поочередно обновлять узлы кластера DataGrid и временно допускает совместную работу двух версий продукта в одном кластере. Перед началом такого обновления запускается Rolling Upgrade Mode — режим работы кластера, который позволяет обновлять кластер без его полной остановки и запрещает выполнять некоторые операции (подробнее о них написано ниже в разделе «Ограничения»).
Допустимые переходы версий#
По умолчанию допускаются только следующие переходы версий:
Переход
maintenance-версии — переход с версииX.Y.Zна версиюX.Y.(Z+1). Например, с 18.5.1 на 18.5.2.Переход
minor-версии — переход с версииX.Y.Zна версиюX.(Y+1).0. Например, с 18.5.1 на 18.6.0.
Управление Rolling Upgrade с помощью утилиты control.sh#
Команды для управления Rolling Upgrade с помощью утилиты control.(sh|bat) можно выполнять на любом узле кластера (подробнее об утилите написано в разделе «Утилита control»). Для выполнения команд по Rolling Upgrade требуется право SecurityPermission.ADMIN_ROLLING_UPGRADE.
Включение режима Rolling Upgrade#
Чтобы включить режим Rolling Upgrade, используйте команду enable:
control.(sh|bat) --rolling-upgrade enable <target_version> [--force]
Параметры:
target_version(обязательный параметр типа String, пример:18.5.1) — целевая версия кластера DataGrid. Значение параметра должно соответствовать правилам перехода на следующую версию — подробнее о них написано в предыдущем разделе.--force— опциональный флаг для принудительного включения режима Rolling Upgrade без проверки правил перехода на следующую версию (подробнее о них написано в предыдущем разделе). Рекомендуется использовать флаг только при необходимости.
Если кластер уже находится в режиме Rolling Upgrade, при попытке выполнить команду enable с другим значением target_version операция будет отклонена с ошибкой Failed to enable rolling upgrade: Rolling upgrade is already enabled with a different current and target version. Поэтому перед повторным запуском команды enable сначала нужно отключить предыдущий Rolling Upgrade.
Выключение режима Rolling Upgrade#
Чтобы отключить режим Rolling Upgrade, используйте команду disable:
control.(sh|bat) --rolling-upgrade disable
Команда выключения Rolling Upgrade успешно выполнится только в том случае, если в кластере нет узлов с разными версиями.
Если в кластере есть узлы с разными версиями, в терминале сгенерируется ошибка вида: Can't disable rolling upgrade with different versions in cluster: <version_1>, <version_2>. В этом случае обновите узлы, которые не обновились ранее, или откатите изменения версий для обновленных узлов и выключите Rolling Upgrade Mode.
Получение статуса режима Rolling Upgrade#
Чтобы вывести статус режима Rolling Upgrade, используйте команду status:
control.(sh|bat) --rolling-upgrade status
Команда показывает текущее состояние Rolling Upgrade. Если режим включен на момент запуска команды, она также выведет список узлов и их версии.
Пример вывода команды status
Rolling upgrade status: enabled
Current version: <current_version>
Target version: <target_version>
Version <current_version>:
Node[id=<uuid>, consistentId=server-1, addrs=[<ip-addresses>], order=1, isClient=false]
Node[id=<uuid>, consistentId=server-2, addrs=[<ip-addresses>], order=2, isClient=false]
Node[id=<uuid>, consistentId=client-1, addrs=[<ip-addresses>], order=3, isClient=true]
Version <target_version>:
Node[id=<uuid>, consistentId=server-3, addrs=[<ip-addresses>], order=4, isClient=false]
Ограничения#
В режиме Rolling Upgrade Mode запрещено запускать:
операции со снепшотами (создание, восстановление, проверка);
смену ключей шифрования (мастер-ключей и ключей кеш-групп);
ротацию файлов статистики компонента Performance Statistics.
Попытка запустить данные операции во время активного Rolling Upgrade будет отклонена.
Пример пользовательского сценария: обновление кластера с помощью механизма Rolling Upgrade#
Пример пошагового обновления кластера DataGrid с версии 18.1.0 на версию 18.2.0 с помощью механизма Rolling Upgrade:
Создайте актуальные снепшоты данных для критичных кеш-групп — они могут понадобиться, если придется выполнять откат (например, при ошибке Rolling Upgrade). Подробнее об алгоритме отката написано в следующем разделе.
Включите Rolling Upgrade Mode — выполните команду на одном из узлов кластера:
control.(sh|bat) --rolling-upgrade enable 18.2.0Выполните обновление поочередно для каждого узла: остановите узел, обновите дистрибутив DataGrid до версии 18.2.0, запустите узел заново и проверьте, что он присоединился к кластеру. Если в кластере используются толстые клиенты, их также нужно обновить до новой версии.
Выключите Rolling Upgrade Mode:
Проверьте, что в кластере нет узлов с версией 18.1.0, с помощью команды
status:control.(sh|bat) --rolling-upgrade statusВыполните команду выключения на одном из узлов кластера:
control.(sh|bat) --rolling-upgrade disableУбедитесь, что команда
disableзавершилась успешно и в терминале появилось сообщениеRolling upgrade disabled. Если команда завершилась с ошибкой (например, из-за разных версий узлов), устраните проблему или выполните откат — подробнее о нем написано в следующем разделе.
Алгоритм отката при ошибке Rolling Upgrade#
Алгоритм отката используется, если кластер уже переведен в режим Rolling Upgrade и:
не получается успешно выполнить команду
--rolling-upgrade disable;в процессе обновления кластера стало необходимо вернуться на первоначальную версию DataGrid.
Чтобы выполнить откат:
Остановите все серверные узлы и толстые клиенты (при наличии), которые уже обновились до новой версии.
Верните обновленные узлы к первоначальной версии. Для этого на каждом обновленном узле:
установите исходную версию DataGrid, с которой начинался Rolling Upgrade;
если формат хранилища PDS (Persistent Data Store) изменился в новой версии — очистите рабочую директорию данных узла;
запустите узел с исходной версией DataGrid.
Выключите Rolling Upgrade Mode с помощью команды
disable:control.(sh|bat) --rolling-upgrade disableУбедитесь, что команда
disableзавершилась успешно и в терминале появилось сообщениеRolling upgrade disabled.Проверьте состояние узлов с помощью системного представления
NODES— оно выведет список всех узлов и их версии:control.(sh|bat) --system-view nodesПри необходимости выполните восстановление данных из ранее созданных снепшотов (для нужных кеш-групп или для всех данных).