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

Обзор развертывания Apache Airflow на сервере

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

Для успешного размещения приложения сервер должен соответствовать следующим требованиям к операционной системе и правам доступа:

  • Операционная система: Debian 12 (Bookworm) или Ubuntu (Bullseye или новее).

  • Права доступа: Для установки пакетов и управления службами требуются права root или привилегии sudo.

  • Домен: Сервер должен быть настроен для разрешения зоны hostkey.in.

  • Порты:

  • Порт 8080 для внутреннего веб-сервера Airflow.

  • Порт 443 для внешнего подключения по HTTPS через прокси.

FQDN финальной панели

Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN): airflow<Server ID>.hostkey.in:443

Структура файлов и каталогов

Развертывание использует следующие каталоги для конфигурации, данных и сертификатов:

  • /root/nginx: Содержит конфигурацию Docker Compose для прокси Nginx и Certbot.

  • /root/nginx/compose.yml: Файл Docker Compose, определяющий службу Nginx.

  • /data/nginx/nginx-certbot.env: Файл окружения, содержащий переменные конфигурации прокси.

  • /data/nginx/user_conf.d: Каталог для пользовательских файлов конфигурации Nginx.

  • /etc/letsencrypt: Точка монтирования тома для SSL-сертификатов, управляемых Certbot.

  • /etc/systemd/system/airflow-webserver.service: Файл юнита Systemd для веб-сервера Airflow.

  • /etc/systemd/system/airflow-scheduler.service: Файл юнита Systemd для планировщика Airflow.

  • /opt/pipx: Домашний каталог для менеджера пакетов pipx (Debian Bookworm).

  • /usr/local/bin: Расположение бинарного файла airflow и бинарных файлов pipx.

Процесс установки приложения

Приложение устанавливается с использованием менеджеров пакетов Python, адаптированных под конкретную версию дистрибутива:

  • Версия Apache Airflow: 2.10.1

  • Версия Python: 3.10

  • Метод установки:

  • На Debian 12 (Bookworm) приложение устанавливается через pipx с дополнительным пакетом celery.

  • На Ubuntu или Debian 11 (Bullseye) приложение устанавливается через pip с дополнительным пакетом celery, используя ограничения для Python 3.10.

  • Инициализация базы данных: База данных Airflow инициализируется с помощью команды airflow db migrate.

  • Создание пользователя: Создается административный пользователь со следующими учетными данными:

  • Имя пользователя: admin

  • Роль: Admin

  • Email: admin@admin.org

Контейнеры Docker и их развертывание

Обратный прокси и завершение SSL-соединений обрабатываются контейнерами Docker, управляемыми через Docker Compose:

  • Образ контейнера: jonasal/nginx-certbot:latest

  • Скрипт развертывания: Контейнер запускается с помощью команды docker compose up -d из каталога /root/nginx.

  • Режим сети: Контейнер работает в режиме сети host.

  • Тома:

  • nginx_secrets: Внешний том, смонтированный в /etc/letsencrypt для SSL-сертификатов.

  • /data/nginx/user_conf.d: Смонтирован в /etc/nginx/user_conf.d для пользовательских конфигураций.

  • Окружение:

  • CERTBOT_EMAIL: Установлено значение hkadm@hostkey.com.

Прокси-серверы

Nginx настроен как обратный прокси для обработки внешнего трафика и завершения SSL-соединений:

  • Внешний порт: 443 (HTTPS).

  • Внутренний порт: 8080 (Веб-сервер Airflow).

  • Картирование путей: Корневой путь / на внешнем интерфейсе отображается на внутреннюю службу Airflow.

  • Управление SSL: Certbot интегрирован в контейнер Nginx для автоматического управления SSL-сертификатами.

  • Расположение конфигурации: Конфигурация прокси определена в /root/nginx/compose.yml и использует переменные окружения из /data/nginx/nginx-certbot.env.

Запуск, остановка и обновление

Службы Airflow управляются как нативные службы systemd, в то время как прокси управляется через Docker Compose.

Службы Airflow:

  • Запуск: systemctl start airflow-webserver и systemctl start airflow-scheduler.

  • Остановка: systemctl stop airflow-webserver и systemctl stop airflow-scheduler.

  • Включение при загрузке: systemctl enable airflow-webserver и systemctl enable airflow-scheduler.

  • Перезагрузка демона: systemctl daemon-reload (требуется после изменения файлов служб).

  • Проверка статуса: systemctl status airflow-webserver и systemctl status airflow-scheduler.

Служба прокси:

  • Запуск: docker compose up -d (выполняется из /root/nginx).

  • Остановка: docker compose down (выполняется из /root/nginx).

  • Перезапуск: docker compose restart (выполняется из /root/nginx).

Доступные порты для подключения

Следующие порты настроены для доступа к приложению:

  • Порт 443: HTTPS-трафик, маршрутизируемый через прокси Nginx на веб-сервер Airflow.

  • Порт 8080: Внутренний порт веб-сервера Airflow (доступен локально или через маршрутизацию прокси).

Настройки прав доступа

Развертывание применяет следующие настройки прав доступа для критических каталогов:

  • /root/nginx: Владелец root:root с правами 0644.

  • /root/nginx/compose.yml: Владелец root:root с правами 0644.

  • Службы Airflow работают от имени пользователя root, как определено в файлах юнитов systemd.

  • Переменная окружения PATH для служб включает /usr/local/bin, /usr/bin, /bin, /usr/local/games, /usr/games и /root/.local/bin.

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