Перейти к содержанию

Обзор развертывания 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 или внутренней сети в зависимости от конфигурации сервиса).

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×