Обновление EVTP#

Поузловое обновление кластера производится через установку новой версии дистрибутива. В рамках обновления кластера Zookeeper не затрагивается.

Например, кластер EVTP состоит из 4 узлов: нескольких JobManager (JM) и TaskManager ™. Для обеспечения высокой доступности (HA) используется Apache Zookeeper. Обновление кластера выполняется поэтапно на каждом узле с использованием Jenkins Job и Ansible-скриптов.

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

Предварительные условия#

  1. Администратор должен знать, какой из узлов JobManager является лидером.

  2. Новый дистрибутив EVTP должен быть доступен по ссылке.

  3. Jenkins Job и Ansible-скрипты должны быть настроены для выполнения обновления.

Шаги поузлового обновление кластера EVTP с использованием Jenkins Job#

  1. Подготовка к обновлению:

  • Администратор заполняет параметры Jenkins Job: SYN_custom. Используемый playbook: flink.yaml. Используемые tags: distribute, install, restart.

  • Ссылка на новый дистрибутив Flink.

  • Ansible-теги для выбора ролей (JobManager или TaskManager).

  • Узел (host), который будет обновлен. Tags: only_on_host — отметьте нужный hosts из списка.

Если требуется обновить все узлы (host), используйте параметр select_all_hosts — перезапуск всех узлов из выбранного inventory. Сервис будет не доступен до полного обновления.

  • Запускает Jenkins Job.

Без использования Jenkins Job, с помощью Ansible:

ansible-playbook -i inventories/<ID>/inventory flink.yml -t "distribute,install,restart" --ask-vault-pass -l <узел для обновления>
  1. Обновление TaskManager:

  • Jenkins Job последовательно выбирает узлы TaskManager для обновления.

  • Ansible-скрипты выполняют следующие действия:

    • Останавливают TaskManager на выбранном узле.

    • Устанавливают новую версию EVTP.

    • Запускают TaskManager и проверяют его работоспособность.

  • Администратор ожидает завершения обновления и проверки работоспособности узла.

  1. Обновление JobManager (не лидера):

  • После обновления всех TaskManager администратор выбирает JobManager, который не является лидером.

  • Jenkins Job выполняет аналогичные шаги:

    • Останавливает JobManager.

    • Устанавливает новую версию EVTP.

    • Запускает JobManager и проверяет его работоспособность.

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

  1. Обновление лидера JobManager:

  • Лидер JobManager обновляется последним.

  • Администратор вручную выбирает узел лидера JobManager в Jenkins Job.

  • Jenkins Job выполняет обновление:

    • Останавливает лидера JobManager.

    • Устанавливает новую версию EVTP.

    • Запускает JobManager и проверяет его работоспособность.

  • Zookeeper автоматически назначает нового лидера, если текущий лидер был остановлен.

  1. Завершение обновления:

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

  • Убеждается, что все задачи на обработку выполняются без ошибок.

Особенности процесса#

  • Лидер JobManager всегда обновляется последним, чтобы минимизировать downtime.

  • Jenkins Job и Ansible-скрипты обеспечивают автоматизацию и контроль процесса обновления.

  • Удаление предыдущей версии компонента выполняется автоматически при запуске обновления на новую версию.

Используемые инструменты#

  • Apache Zookeeper: для обеспечения высокой доступности.

  • Jenkins: для управления процессом обновления.

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