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

Обзор развертывания 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) используется команда:

/usr/bin/pipx install "apache-airflow[celery]=={{ airflow_version }}" --include-deps

После установки бинарный файл airflow ищется в директориях /usr/local/bin, /usr/bin, /root/.local/bin.

Инициализация базы данных выполняется командой:

airflow db migrate

Создание пользователя администратора выполняется командой:

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.

Запуск контейнеров выполняется командой:

docker compose up -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:

docker compose up -d
docker compose down

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