Механизм обновления узлов 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:

  1. Создайте актуальные снепшоты данных для критичных кеш-групп — они могут понадобиться, если придется выполнять откат (например, при ошибке Rolling Upgrade). Подробнее об алгоритме отката написано в следующем разделе.

  2. Включите Rolling Upgrade Mode — выполните команду на одном из узлов кластера:

    control.(sh|bat) --rolling-upgrade enable 18.2.0
    
  3. Выполните обновление поочередно для каждого узла: остановите узел, обновите дистрибутив DataGrid до версии 18.2.0, запустите узел заново и проверьте, что он присоединился к кластеру. Если в кластере используются толстые клиенты, их также нужно обновить до новой версии.

  4. Выключите 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.

Чтобы выполнить откат:

  1. Остановите все серверные узлы и толстые клиенты (при наличии), которые уже обновились до новой версии.

  2. Верните обновленные узлы к первоначальной версии. Для этого на каждом обновленном узле:

    • установите исходную версию DataGrid, с которой начинался Rolling Upgrade;

    • если формат хранилища PDS (Persistent Data Store) изменился в новой версии — очистите рабочую директорию данных узла;

    • запустите узел с исходной версией DataGrid.

  3. Выключите Rolling Upgrade Mode с помощью команды disable:

    control.(sh|bat) --rolling-upgrade disable
    
  4. Убедитесь, что команда disable завершилась успешно и в терминале появилось сообщение Rolling upgrade disabled.

  5. Проверьте состояние узлов с помощью системного представления NODES — оно выведет список всех узлов и их версии:

    control.(sh|bat) --system-view nodes
    
  6. При необходимости выполните восстановление данных из ранее созданных снепшотов (для нужных кеш-групп или для всех данных).