Обновление EVTP#
Поузловое обновление кластера производится через установку новой версии дистрибутива. В рамках обновления кластера Zookeeper не затрагивается.
Процесс поузлового обновления кластера Apache Flink#
Например, кластер EVTP состоит из 4 узлов: нескольких JobManager (JM) и TaskManager ™. Для обеспечения высокой доступности (HA) используется Apache Zookeeper. Обновление кластера выполняется поэтапно на каждом узле с использованием Jenkins Job и Ansible-скриптов.
Лидер JobManager обновляется последним, чтобы минимизировать влияние на работу кластера. Текущего лидера можно узнать с помощью тега jobmanager_leader.
Предварительные условия#
Администратор должен знать, какой из узлов JobManager является лидером.
Новый дистрибутив EVTP должен быть доступен по ссылке.
Jenkins Job и Ansible-скрипты должны быть настроены для выполнения обновления.
Шаги поузлового обновление кластера EVTP с использованием Jenkins Job#
Подготовка к обновлению:
Администратор заполняет параметры 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 <узел для обновления>
Обновление TaskManager:
Jenkins Job последовательно выбирает узлы TaskManager для обновления.
Ansible-скрипты выполняют следующие действия:
Останавливают TaskManager на выбранном узле.
Устанавливают новую версию EVTP.
Запускают TaskManager и проверяют его работоспособность.
Администратор ожидает завершения обновления и проверки работоспособности узла.
Обновление JobManager (не лидера):
После обновления всех TaskManager администратор выбирает JobManager, который не является лидером.
Jenkins Job выполняет аналогичные шаги:
Останавливает JobManager.
Устанавливает новую версию EVTP.
Запускает JobManager и проверяет его работоспособность.
Администратор убеждается, что кластер продолжает работать корректно.
Обновление лидера JobManager:
Лидер JobManager обновляется последним.
Администратор вручную выбирает узел лидера JobManager в Jenkins Job.
Jenkins Job выполняет обновление:
Останавливает лидера JobManager.
Устанавливает новую версию EVTP.
Запускает JobManager и проверяет его работоспособность.
Zookeeper автоматически назначает нового лидера, если текущий лидер был остановлен.
Завершение обновления:
После успешного обновления всех узлов администратор проверяет общую работоспособность кластера.
Убеждается, что все задачи на обработку выполняются без ошибок.
Особенности процесса#
Лидер JobManager всегда обновляется последним, чтобы минимизировать downtime.
Jenkins Job и Ansible-скрипты обеспечивают автоматизацию и контроль процесса обновления.
Удаление предыдущей версии компонента выполняется автоматически при запуске обновления на новую версию.
Используемые инструменты#
Apache Zookeeper: для обеспечения высокой доступности.
Jenkins: для управления процессом обновления.
Ansible: для выполнения скриптов обновления на узлах.