Обзор развертывания 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.