Обзор развертывания Apache Airflow на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания системы необходимо наличие сервера с операционной системой Debian (версия bookworm) или Ubuntu (версия bullseye). Требуется доступ к серверу с правами суперпользователя (root) или возможность выполнения команд через sudo.
Система требует установки следующих системных компонентов и библиотек: - apt-utils, ca-certificates, curl, dumb-init - freetds-bin, krb5-user, libgeos-dev, ldap-utils - libsasl2-2, libsasl2-modules, libxmlsec1, locales - libffi-dev, libldap-2.5-0, libssl-dev, netcat-openbsd - lsb-release, openssh-client, python3-selinux, rsync - sasl2-bin, sqlite3, sudo, unixodbc, pipx - python3-pip, postgresql, findutils
Также требуется наличие установленного Docker для работы прокси-сервера и получения SSL-сертификатов.
Структура файлов и каталогов¶
Конфигурация и данные приложения распределяются по следующим директориям: - /etc/systemd/system/ — файлы служб airflow-webserver.service и airflow-scheduler.service. - /root/nginx/ — каталог для конфигурации прокси-сервера Nginx и скрипта compose.yml. - /data/nginx/ — хранилище для переменных окружения (nginx-certbot.env) и пользовательских конфигураций Nginx (user_conf.d). - /etc/letsencrypt/ — точка монтирования для хранения SSL-сертификатов (объем nginx_secrets). - /opt/pipx — домашняя директория для pipx (используется на Debian bookworm). - /usr/local/bin — директория для бинарных файлов, устанавливаемых через pipx.
Процесс установки приложения¶
Установка Apache Airflow выполняется через пакетный менеджер pip или утилиту pipx в зависимости от версии операционной системы.
На системах Ubuntu (bullseye) используется команда:
pip install "apache-airflow[celery]=={{ airflow_version }}" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{{ airflow_version }}/constraints-3.10.txt" --ignore-installed --break-system-packages
На системах Debian (bookworm) используется команда:
После установки бинарный файл airflow ищется в директориях /usr/local/bin, /usr/bin, /root/.local/bin.
Инициализация базы данных выполняется командой:
Создание пользователя администратора выполняется командой:
airflow users create --username admin --firstname admin --lastname admin --role Admin --email admin@admin.org --password <пароль>
Базы данных¶
В качестве базы данных используется PostgreSQL. Сервис postgresql должен быть установлен и запущен на сервере. Службы Apache Airflow настроены на запуск после инициализации сети и сервиса PostgreSQL.
Контейнеры Docker и их запуск¶
Для работы прокси-сервера и автоматического получения SSL-сертификатов используется Docker Compose. Конфигурация хранится в файле /root/nginx/compose.yml.
Используемый образ контейнера: jonasal/nginx-certbot:latest.
Контейнер запускается с параметрами: - Режим сети: host. - Переменная окружения CERTBOT_EMAIL установлена в значение hkadm@hostkey.com. - Файл переменных окружения: /data/nginx/nginx-certbot.env. - Монтирование тома nginx_secrets в /etc/letsencrypt. - Монтирование директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d.
Запуск контейнеров выполняется командой:
в директории/root/nginx. Прокси серверы¶
В качестве прокси-сервера используется контейнер Nginx с поддержкой Certbot. Он обрабатывает входящий трафик и управляет SSL-сертификатами. Конфигурация прокси-сервера находится в каталоге /root/nginx, а пользовательские настройки размещаются в /data/nginx/user_conf.d.
Настройки прав¶
Файлы конфигурации Docker Compose и каталог /root/nginx принадлежат пользователю root с правами доступа 0644. Службы Apache Airflow настроены на запуск от имени пользователя root.
Запуск, остановка и обновление¶
Управление службами Apache Airflow осуществляется через systemd.
Для запуска и включения автозагрузки служб используются команды:
systemctl daemon-reload
systemctl start airflow-webserver
systemctl enable airflow-webserver
systemctl start airflow-scheduler
systemctl enable airflow-scheduler
Службы настроены на автоматический перезапуск (Restart=always) с задержкой 5 секунд (RestartSec=5s) в случае сбоя.
Для управления контейнером прокси-сервера используются команды Docker Compose в директории /root/nginx: