Распределенная установка AW¶
Особенности¶
При распределенной установке AW на несколько серверов необходимо предоставить общий доступ к директории file_storage сервисам, работающим на разных серверах. Для этого один из серверов назначают сервером NFS и настраивают доступ для директории file_storage для остальных серверов.
Системные требования¶
Убедитесь в том что подготовленные сервера удовлетворяют системным требованиям:
Подготовка¶
Установка зависимостей¶
Для работы AW необходимо установить следующие компоненты согласно документации:
Для того что бы awctl могла успешно выполнять действия необходимые для установки AW BI необходимо выполнить настройку пользователя из под имени которого выполняется установка и настройка AW BI.
Инструкция по настройке пользователя.
1. Установка и настройка серверов¶
Устанавливаем на сервера выбранный дистрибутив Linux, выполняем установку docker и docker compose (или docker-compose-plugin) согласно документации.
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>'
Учетные данные для загрузки дистрибутива совпадают с логином и паролем выданным при заключении договора.
3. Создаем профиль awctl¶
Профиль - именованная экземпляр конфигурации установки AW.
Для создания начальной конфигурации нужно выполнить следующие подготовительные шаги:
- Загрузить установочный архив AW на управляющую машину.
- Инициализировать профиль с указанием пути к установочному архиву:
/opt/awctl/awctl init --preset <кол-во серверов> --release-path <путь_к_архиву> <имя_профиля>
Далее редактируем конфигурационный файл профиля:
- Открываем файл $HOME/.awctl/profiles/<имя_профиля>/config.yml для редактирования
- Настраиваем секцию aw (устанавливаем значение переменных aw_version, aw_home),
- Добавляем в секцию hosts сервера и распределяем сервисы (См. пример),
-
К серверам добавляем секцию env и задаем значение различных параметров:
- Адрес Системы:
FRONTEND_URL
; - Настоятельно рекомендуется изменить пароль для БД и другие переменные отвечающие за авторизацию сервисов:
Новые значения следует поместить в конфигурационный файл профиля в секцию env для каждого сервера.# Токен авторизации для внутренних коммуникаций системы 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. Выполняем установку 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
Скачиваю образы
....
6. Выполняем миграции AW¶
Выполняем миграции с помощью команды /opt/awctl/awctl migrate <имя_профиля>
7. Окончание установки.¶
В окне интернет браузера переходим по адресу, указанному в переменной `FRONTEND_URL`.
В случае успешной установки отобразится интерфейс AW, пройти аутентификацию в только что установленной системе можно специальным пользователем:
```
Имя пользователя: tech_admin
Пароль по умолчанию: 123456
```
Примеры конфигурации 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.
---
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
INTERNAL_API_TOKEN: MySuperSecretToken
DB_PASSWORD: SuperDBPassword!
ETL_AIRFLOW_USER: admin
ETL_AIRFLOW_PASSWORD: SecrureAirflowAdminPass
ETL_AIRFLOW_AW_USER: aw
ETL_AIRFLOW_AW_PASSWORD: SecureAirflowUserPass
AUTH_BRIDGE_SECRET: aedf85f86fee4b25aca9466a7de25c06
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
env:
INTERNAL_API_TOKEN=: ySuperSecretToken
DB_PASSWORD: SuperDBPassword!
ETL_AIRFLOW_USER: admin
ETL_AIRFLOW_PASSWORD: SecrureAirflowAdminPass
ETL_AIRFLOW_AW_USER: aw
ETL_AIRFLOW_AW_PASSWORD: SecureAirflowUserPass
AUTH_BRIDGE_SECRET: aedf85f86fee4b25aca9466a7de25c06
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