Обзор развертывания Apache Airflow на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется сервер с Linux (Debian Bookworm или Ubuntu) со следующими характеристиками:
-
Привилегии root или доступ через
sudo. -
Имя домена в зоне
hostkey.in. -
Сервер должен иметь доступ в интернет для загрузки пакетов и сертификатов.
-
Должны быть установлены следующие системные пакеты в качестве зависимостей:
-
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. -
Требуется версия Python 3.10.
-
Установлена версия Apache Airflow 2.10.1 с дополнением
celery.
URL доступа к приложению¶
Приложение доступно через домен hostkey.in на порту 443. Полное доменное имя (FQDN) имеет следующий формат: airflow<Server ID>.hostkey.in:443 Внешний путь установлен как /.
Структура файлов и каталогов¶
В процессе развертывания используются следующие каталоги и файлы:
-
/root/nginx: Содержит конфигурацию Nginx и файлы Docker Compose. -
/root/nginx/compose.yml: Конфигурация Docker Compose для прокси и SSL. -
/data/nginx/user_conf.d: Каталог для пользовательских конфигураций Nginx. -
/data/nginx/nginx-certbot.env: Файл переменных окружения для контейнера Certbot/Nginx. -
/etc/systemd/system/airflow-webserver.service: Файл единицы Systemd для веб-сервера. -
/etc/systemd/system/airflow-scheduler.service: Файл единицы Systemd для планировщика. -
/opt/pipx: Директория по умолчанию дляpipxв установках Debian Bookworm. -
/usr/local/bin: Расположение установленных бинарных файлов на системах, отличных от Bookworm.
Процесс установки приложения¶
Apache Airflow устанавливается с помощью менеджеров пакетов Python в зависимости от релиза операционной системы:
-
В Debian Bookworm: Установка через
pipxкомандой/usr/bin/pipx install "apache-airflow[celery]==2.10.1" --include-deps. -
В других версиях Debian/Ubuntu: Установка через
pipкомандойpip install "apache-airflow[celery]==2.10.1" --constraint ... --ignore-installed --break-system-packages. -
База данных инициализируется с помощью команды
airflow db migrate. -
Создается пользователь с административными правами со следующими учетными данными:
-
Имя пользователя:
admin -
Имя:
admin -
Фамилия:
admin -
Роль:
Admin -
Email:
admin@admin.org -
Пароль: Установлен равным паролю SSH, используемому в процессе развертывания.
Базы данных¶
Приложение использует PostgreSQL в качестве бэкенд-базы данных:
-
Пакет
postgresqlустановлен локально на сервере. -
Airflow подключается к локальному экземпляру PostgreSQL для хранения метаданных и состояния рабочих процессов.
-
В предоставленных файлах не настроены строки подключения к внешним базам данных или удаленные хранилища.
Контейнеры Docker и их развертывание¶
Docker используется для развертывания компонентов обратного прокси и управления SSL. Развертывание управляется файлом Docker Compose, расположенным по адресу /root/nginx/compose.yml.
Сервис Nginx и Certbot¶
-
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Политика перезапуска:
unless-stopped -
Переменные окружения:
-
CERTBOT_EMAIL: Установлено значениеhkadm@hostkey.com -
Конфигурация загружается из
/data/nginx/nginx-certbot.env. -
Тома (Volumes):
-
nginx_secrets: Отображается в/etc/letsencryptдля хранения SSL-сертификатов. -
/data/nginx/user_conf.d: Отображается в/etc/nginx/user_conf.dдля пользовательских конфигураций Nginx.
Контейнер запускается с помощью команды docker compose up -d, выполненной из каталога /root/nginx.
Прокси-серверы¶
Nginx используется в качестве обратного прокси для обработки завершения SSL и маршрутизации трафика к внутреннему приложению Airflow.
-
Протокол: HTTPS
-
Внешний порт: 443
-
Внутренний порт: 8080
-
Внутренний путь: Пустой (корневой путь)
-
Внешний путь:
/ -
Управление SSL: Автоматически осуществляется контейнером
nginx-certbotс использованием Let's Encrypt.
Запуск, остановка и обновление¶
Компоненты Airflow управляются как сервисы systemd. Для управления сервисами используются следующие команды:
Веб-сервер Airflow¶
-
Запуск:
systemctl start airflow-webserver -
Остановка:
systemctl stop airflow-webserver -
Перезапуск:
systemctl restart airflow-webserver -
Включение при загрузке:
systemctl enable airflow-webserver
Планировщик Airflow¶
-
Запуск:
systemctl start airflow-scheduler -
Остановка:
systemctl stop airflow-scheduler -
Перезапуск:
systemctl restart airflow-scheduler -
Включение при загрузке:
systemctl enable airflow-scheduler
Сервисы Docker-прокси¶
-
Запуск: Выполнить
docker compose up -dиз каталога/root/nginx. -
Остановка: Выполнить
docker compose downиз каталога/root/nginx. -
Обновление: Загрузите свежий образ командой
docker compose pullи перезапустите с помощьюdocker compose up -d.
Доступные порты для соединения¶
Следующие порты открыты для внешнего и внутреннего обмена данными:
-
443: HTTPS (Внешний доступ через Nginx-прокси).
-
8080: HTTP (Внутренний доступ к веб-серверу Airflow, привязанный к localhost или внутренней сети в зависимости от конфигурации сервиса).