Распределенная установка AW¶
Особенности¶
При распределенной установке AW на несколько серверов необходимо предоставить общий доступ к директории file_storage сервисам, работающим на разных серверах. Для этого один из серверов назначают сервером NFS и настраивают доступ для директории file_storage для остальных серверов.
Системные требования¶
Убедитесь в том что подготовленные сервера удовлетворяют системным требованиям:
Подготовка¶
Установка зависимостей¶
Для работы AW необходимо установить следующие компоненты согласно документации:
1. Установка и настройка серверов¶
Устанавливаем на сервера выбранный дистрибутив Linux, выполняем установку docker и docker compose (или docker-compose-plugin) согласно документации.
На сервер BACKEND выполняем установку компонентов NFS-сервера согласно документации.
2. Установка awctl¶
Выполняем установку awctl согласно документации. Редактируем файл $HOME/.awctl.yml:
aw_registry: registry.analyticworkspace.ru/aw
registry_user: '<username>'
registry_password: '<userpass>'
download_url: https://registry.analyticworkspace.ru/release/
download_user: '<username>'
download_password: '<userpass>'
Учетные данные для загрузки дистрибутива совпадают с логином и паролем выданным при заключении договора.
2.1 Автономная установка с использованием awctl¶
В случае отсутствия доступа к https://registry.analyticworkspace.ru/release/ для продолжения установки нужно выполнить следующие подготовительные шаги.
- Загрузить установочный архив AW на управляющую машину.
- Инициализировать профиль с указанием пути к установочному архиву:
/opt/awctl/awctl init --release-path <путь_к_архиву> <имя_профиля>
3. Создаем профиль awctl¶
Профиль - именованная экземпляр конфигурации установки AW.
Для создания начальной конфигурации выполняем команду:
- Открываем файл $HOME/.awctl/profiles/<имя_профиля>/config.yml для редактирования
- Настраиваем секцию aw (устанавливаем значение переменных aw_version, aw_home),
- Добавляем в секцию hosts сервера и распределяем сервисы (См. пример,
- При необходимости добавляем к серверам секцию env и задаем значение различных параметров
- Адрес Системы:
FRONTEND_URL
; -
Настоятельно рекомендуется изменить пароль для БД и другие переменные отвечающие за авторизацию сервисов:
# Токен авторизации для внутренних коммуникаций системы INTERNAL_API_TOKEN=1 # Пароль пользователя DB_PASSWORD=enter4z # Логин и пароль пользователя-администратора Airflow. С таким пользователем в UI Airflow # ходят пользователи, которые являются админами в AW ETL_AIRFLOW_USER=admin ETL_AIRFLOW_PASSWORD=1 # Логин и пароль пользователя Airflow, под которым в UI Airflow ходят обычные пользователи # (не админы) ETL_AIRFLOW_AW_USER=aw ETL_AIRFLOW_AW_PASSWORD=1 # JWT secret, используемый для генерации токенов доступа к внутренним ресурсам AUTH_BRIDGE_SECRET=a7f67106d9234324b3a28cb618e78fc0
-
Сохраняем изменения,
- Генерируем .env и docker-compose файлы с помощью команды
/opt/awctl/awctl gen <имя_профиля>
4. Создаем необходимые директории¶
Выполняем команду /opt/awctl/awctl md <имя_профиля>
для создания необходимой структуры каталогов.
5. Настраиваем NFS¶
Выполняем настройку NFS сервера и клиента (нижеприведенные команды рассчитаны для случая установки AW в директорию /opt/aw, значение aw_home: /opt/aw/app):
-
на сервере BACKEND (он же сервер NFS) добавляем в /etc/exports строку вида:
/opt/aw/file_storage IP_адрес_nfs_клиента(rw,sync,no_root_squash,no_subtree_check)
сохраняем изменения, выполняем командуsudo exportfs -ra
-
на сервере etl монтируем NFS, добавляем в /etc/fstab строку вида:
IP_адрес_сервера_NFS:/opt/aw/file_storage /opt/aw/file_storage nfs defaults 0 0
, сохраняем изменения и далее выполняем команды:
6. Выполняем установку AW¶
Выполняем установку компонентов AW с помощью команды /opt/awctl/awctl install <имя_профиля>
.
Пример вывода работы команды (вывод сокращен):
/opt/awctl/awctl install myaw
Check if all requred files is available
docker-compose.yml is on place
docker-compose.prod.yml is on place
.env is on place
Release is on place
Начинаю установку на AW на хост: backend
Create AW home dir: /opt/aw/app for host: backend
Create a backup for configuration files in: /opt/aw/app for host: backend
Backup AW configuration from: /opt/aw/app for host: backend
tar: Removing leading `/' from member names
Копирую файлы...
Выполняю авторизацию в docker registry - registry.analyticworkspace.ru/aw
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/bars/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
Создаю необходимые директории...
Create file_storage dir
Create db dir
Create logs dir
Create jars dir
Скачиваю образы
....
....
Останавливаю контейнеры если есть запущенные
....
Check if all requred files is available
docker-compose.yml is on place
docker-compose.prod.yml is on place
.env is on place
Release is on place
Начинаю установку на AW на хост: etl
Create AW home dir: /opt/aw/app for host: etl
Create a backup for configuration files in: /opt/aw/app for host: etl
Backup AW configuration from: /opt/aw/app for host: etl
tar: Removing leading `/' from member names
Копирую файлы...
Выполняю авторизацию в docker registry - registry.analyticworkspace.ru/aw
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/bars/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
Создаю необходимые директории...
Create file_storage dir
Create db dir
Create logs dir
Create jars dir
Скачиваю образы
....
7. Выполняем миграции AW¶
Выполняем миграции с помощью команды /opt/awctl/awctl migrate <имя_профиля>
Примеры конфигурации awctl для распределенной установки¶
Пример распределения сервисов при распределенной установки AW на 2 сервера:
- backends, с IP адресом 192.168.0.110, пользователь для доступа по ssh - awuser, порт 22, директория для установки /opt/aw/app.
- etl, с IP адресом 192.168.0.120, пользователь для доступа по ssh - awuser, порт 22, директория для установки /opt/aw/app.
В качестве имени профиля будем использовать myaw. В качестве NFS сервера будет выступать сервер backends а в качестве клиента etl.
---
aw:
aw_version: 1.30
aw_compose_file: docker-compose.yml:docker-compose.prod.yml
aw_docker_compose_separator: ':'
aw_home: /opt/aw/app
hosts:
backend:
aw_ssh_user: awuser
aw_home: '/opt/aw/app'
aw_host: 192.168.0.110
dns:
- 77.88.8.8
- 77.88.8.1
env:
FRONTEND_URL: http://aw.example.ru
services:
- frontend
- backend
- widget-export
- clear-storage
- model-changes
- model-sync
- websocket
- puppeteer
- db
- pgbouncer
- rabbitmq
- memcached
- auth-bridge
- data-master
- minio
- minio-init
- diag
- clickhouse-parser
- preview
- sender
- file-builder
- cron
- swagger
- clickhouse-server
etl:
aw_host: 192.168.0.120
aw_home: '/opt/aw/app'
aw_ssh_user: awuser
aw_ssh_port: 22
services:
- etl-broker
- etl-airflow-db
- etl-airflow
- etl-spark
- etl-api
- etl-data-preview
- etl-tasks
- java-puller
- file-puller
- odata-puller
- etl-pusher
- etl-stats
- etl-mlflow
- etl-mlflow-db
Распределение сервисов при распределенной установке на 2 сервера¶
BACKEND:
- frontend
- backend
- widget-export
- clear-storage
- model-changes
- model-sync
- websocket
- puppeteer
- db
- pgbouncer
- rabbitmq
- memcached
- auth-bridge
- data-master
- minio
- minio-init
- diag
- clickhouse-parser
- preview
- sender
- file-builder
- cron
- swagger
- clickhouse-server
ETL:
- etl-broker
- etl-airflow-db
- etl-airflow
- etl-spark
- etl-api
- etl-data-preview
- etl-tasks
- java-puller
- file-puller
- odata-puller
- etl-pusher
- etl-stats
- etl-mlflow
- etl-mlflow-db
Распределение сервисов дри распределенной установке на 3 сервера¶
BACKEND:
- frontend
- backend
- widget-export
- clear-storage
- model-changes
- model-sync
- websocket
- puppeteer
- db
- pgbouncer
- rabbitmq
- memcached
- auth-bridge
- data-master
- minio
- minio-init
- diag
- clickhouse-parser
- preview
- sender
- file-builder
- cron
- swagger
ETL:
- etl-broker
- etl-airflow-db
- etl-airflow
- etl-spark
- etl-api
- etl-data-preview
- etl-tasks
- java-puller
- file-puller
- odata-puller
- etl-pusher
- etl-stats
- etl-mlflow
- etl-mlflow-db
DB (ClickHouse):
- clickhouse-server