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

Обновление AW

Внимание обязательно ознакомьтесь с описанием целевого и промежуточных релизов https://community.analyticworkspace.ru/c/opisanie-relizov/20, где подробно указаны значимые изменения и рекомендации по подготовке к обновлению.

Технические изменения в выпуске AW 1.31

Изменения в prod-образах

Добавлены образы:

  • etl-mono - единый образ для всех ETL-сервисов.

Удалены образы:

  • etl-airflow - заменен на etl-mono
  • etl-spark-master - заменен на etl-mono
  • etl-spark-worker - заменен на etl-mono
  • ml-spark-master - заменен на etl-mono
  • ml-spark-worker - заменен на etl-mono
  • ml-data-preview
  • ml-airflow-worker - заменен на etl-mono

Изменения в топологии

  • Вместо сервисов etl-airflow-webserver, etl-airflow-scheduler и etl-airflow-worker теперь запускается единый сервис etl-airfow;
  • Вместо сервисов etl-spark-master, etl-spark-worker теперь запускается единый сервис etl-spark;
  • Удалены сервисы ml-spark-master, ml-spark-worker, ml-data-preview, ml-airflow-worker. Отдельных сервисов для ML задач больше нет. Вся функциональность по работе ML-моделей запускаются в составе основных etl-сервисов.
  • Сервисы ml-flow и ml-flow-db переименованы в etl-mlflow и etl-mlflow-db и перенесены из docker-compose.ml.yml в основной docker-compose.yml;
  • Удалены docker-compose файлы для запуска ML-сервисов: docker-compose.ml.yml, docker-compose.ml.override.yml, docker-compose.ml.prod.yml;

Изменения в конфигурации

Добавлены переменные:

  • ETL_AIRFLOW_WORKERS - Количество воркеров для Airflow (по умолчанию, 16)
  • ETL_AIRFLOW_WORKERS_AUTOSCALE - Включает режим автоскалирования воркеров Airflow (по умолчанию, пусто). Указывается в виде двух значений, разделенных через запятую. Первое значение - макс. количество воркеров, второе - мин. количество (например, 16,8). Cистема будет стараться держать минимальное количество воркеров, увеличивая их только при нагрузке. При указании автоскалирования, значение ETL_AIRFLOW_WORKERS игнорируется
  • ETL_AIRFLOW_WEBSERBER_WORKERS - Количество воркеров для web-сервера Airflow, в т.ч. для API (по умолчанию, 4)
  • ETL_AIRFLOW_SCHEDULER_LOG_LEVEL - Уровень логирования у шедулера Airflow. Нужно менять только в случае отладки, по умолчанию - ERROR
  • ETL_AIRFLOW_SCHEDULER_PARSING_PROCESSES - Количество процессов, которые используюся для парсинга DAG'ов (по умолчанию, 2)
  • ETL_API_WORKERS - Количество web-воркеров для etl-api (по умолчанию, 1)
  • ETL_DATA_PREVIEW_WORKERS - Количество web-воркеров для etl-data-preview (по умолчанию, 4)
  • ETL_MLFLOW_WORKERS - Количество воркеров для web-сервера Mlflow, в т.ч. для API (по умолчанию, 4)
  • ETL_MLFLOW_URL - Внутренний URL к Mlflow (по умолчанию, http://etl-mlflow). Используется при многохостовом развертывании. Данный параметр заменил MLFLOW_URL у auth-bridge
  • ETL_DATA_PREVIEW_SPARK_CORES - Количество ядер, которое выделяется на Spark-задачи предпросмотра в etl-data-preview (по умолчанию, 1). Если указать *, то будут использоваться все ядра
  • ETL_DATA_PREVIEW_SPARK_MEMORY - Лимит памяти, которая выделяется на Spark-задачи предпросмотра в etl-data-preview (по умолчанию, 1g). Принимает значения вида число + ("k", "m", "g" или "t") (например: 512m, 2g)
  • AW_DATA_MASTER_WORKERS - Количество web-воркеров для дата-мастера (по умолчанию, 2)
  • AW_DATA_MASTER_EXPORT_MODEL_DATA - Управляет возможностью выгрузки данных моделей. ALLOW/ON/TRUE (в любом регистре) - разрешено, DENY/OFF/FALSE (в любом регистре) - запрещено, любое другое непустое значение - запрещено (по умолчанию, ALLOW)
  • AW_FILE_PULLER_INTERNAL_DS_S3_URL - указывает на бакет s3-хранилища, в котором размещаются файлы источников. URL заканчивается именно бакетом, без папки 'data_source' и т.п., например: http://minio_user:minio_pass@minio:9000/aw-bucket'

Удалены переменные

  • MLFLOW_URL для auth-bridge (заменен на ETL_MLFLOW_URL)

Обновление AW

Для обновления Системы выполните следующие действия:

  1. Подключитесь к серверу через ssh ; Перейдите в рабочую директорию приложения, в дальнейшем ожидается, что остальные команды выполняются из рабочей директории приложения:

    cd /opt/aw/app
    
    Загрузите на сервер дистрибутив Analytic Workspace.

  2. Создайте резервную копию файла конфигурации, а также сформируйте список изменений в файле конфигурации по сравнению с шаблоном:

    cp .env ../env.backup.$(date +'%Y-%m-%d_%H%M%S')
    diff -wu .env.dist .env > ../env.diff
    
  3. Остановите AW:

    docker compose down -v
    
  4. Удалите папку rabbitmq для корректного обновления версии:

    rm -rf ../db/rabbitmq
    
  5. Распакуйте дистрибутив:

    tar xvf ../release-VERSION.tar
    
    Файл дистрибутива можно удалить, если есть дефицит дискового пространства

  6. Скопируйте шаблон файла конфигурации .env.dist в файл конфигурации .env и примените изменения в нем (автоматически или вручную):

    cp .env.dist .env
    # автоматическое применение изменений:
    patch < ../env.diff
    
    Автоматическое применение изменений может не сработать в некоторых случаях. В этом случае необходимо будет вручную повторно внести изменения в файле .env

    Убедитесь, что произведены все изменения в конфигурации между старой и новой версиями, а также изменения, описанные на странице Технические изменения от релиза к релизу, требующие внимания разработчиков и девопсов

  7. Выполните очистку docker от старых образов:

    docker system prune --all
    
    Данный пункт не обязателен, но является рекомендацией. Данная операция позволяет избежать лишнего использования дискового пространства

  8. Загрузите в Docker обновленные образы компонентов AW.

    Для закрытого контура перейдите в каталог установки Системы и выполните скрипт ./install.sh:

    chmod +x install.sh
    ./install.sh
    

    Для открытого контура: Подключите Docker Registry:

    docker login registry.analyticworkspace.ru
    # Отобразится запрос о необходимости ввести учетную запись. Введите данные учетной записи, ранее использованной для скачивания дистрибутива
    
  9. Запустите скрипт create_project_dirs.sh для того чтобы создать необходимые директории:

    chmod +x create_project_dirs.sh
    ./create_project_dirs.sh
    
  10. При обновлении с версии младше 1.30 необходимо очистить содержимое директории db/rabbitmq

    rm -rf db/rabbitmq/*
    
  11. Выполните запуск Системы и примените миграции:

    docker compose up -d
    docker compose exec backend php yii migrate --interactive=0
    docker compose exec backend php yii run-code-migrations
    docker compose exec etl-api /app/manage migrate