Резервное копирование и восстановление#

Резервное копирование – это процесс создания резервной копии, то есть данных, которые необходимы для восстановления платформы Astra Automation.

Резервная копия представляет собой единый файл архива /var/backups/astra-automation/astra-automation-backup-<date>.tar.gz, где <date> – дата и время создания резервной копии. Архив содержит следующие данные:

  • информация о настройках системы;

  • ключи шифрования паролей и секретов базы данных;

  • каталог с локальными копиями проектов;

  • резервная копия базы данных;

  • сертификаты.

Структура архива резервной копии#

В разархивированном виде структура каталогов резервной копии платформы может выглядеть следующим образом:

├── ac01                        # Каталог с настройками и данными первого узла Automation Controller
│   ├── conf
│   └── projects
├── ac02                        # Каталог с настройками и данными второго узла Automation Controller
│   ├── conf
│   └── projects
├── astra_automation.version    # Файл с информацией о версии платформы
├── automationedacontroller     # Каталог с настройками и данными всех узлов Event-Driven Automation
│   └── automationedacontroller
│       ├── automationedacontroller.db
│       └── conf
├── automationgateway           # Каталог с настройками и данными всех узлов шлюза
│   └── automationgateway
│       ├── automationgateway.db
│       └── conf
├── automationhub               # Каталог с настройками и данными всех узлов Private Automation Hub
│   └── automationhub
│       ├── automationhub.db
│       ├── database_fields.symmetric.key
│       └── var_lib_pulp
├── common                      # Каталог с криптографическим ключом Automation Controller
│   ├── SECRET_KEY
│   └── version
└── postgres                    # Резервная копия базы данных Automation Controller
    ├── aa-controller.db
    ├── instance_group_map_cleanup.sql
    └── instance_group_map.sql

Архив включает следующие файлы:

  • <node>.tar.gz – архив с настройками и данными Automation Controller.

    Здесь <node> – название узла из группы инвентаря automationcontroller.

  • astra_automation.version – файл с информацией о версии Astra Automation, в которой была создана резервная копия.

  • automationedacontroller.tar.gz – архив с настройками и данными Event-Driven Automation. Криптографический ключ контроллера Event-Driven Automation (файл SECRET_KEY) хранится внутри данного архива.

  • automationgateway.tar.gz – архив с настройками и данными шлюза.

  • automationhub.tar.gz – архив с настройками и данными Private Automation Hub. Симметричный ключ шифрования полей базы данных Private Automation Hub (database_fields.symmetric.key) хранится внутри данного архива.

  • common.tar.gz – архив с криптографическим ключом Automation Controller.

  • postgres.tar.gz – резервная копия базы данных Automation Controller.

Ниже приведено описание содержимого каталогов компонентов, входящих в резервную копию платформы Astra Automation.

Automation Controller#

В резервной копии для каждого узла Automation Controller создается отдельный каталог, содержащий его настройки и локальные данные.

Пример структуры каталога узла Automation Controller:

ac01
├── conf
│   ├── conf.d
│   │   ├── aa_setup_custom_variables.py
│   │   ├── container_groups.py
│   │   ├── execution_environments.py
│   │   ├── gateway.py
│   │   ├── ha.py
│   │   └── subscription_usage_model.py
│   ├── settings.py
│   ├── tower.cert
│   ├── tower.key
│   └── uwsgi.ini
└── projects

Здесь:

  • conf – каталог с настройками конкретного узла Automation Controller:

    • conf.d – каталог с дополнительными модулями настройки, автоматически загружаемыми при запуске контроллера:

      • aa_setup_custom_variables.py – пользовательские параметры, заданные при установке и настройке платформы;

      • container_groups.py – настройки контейнерных групп;

      • execution_environments.py – описание EE, доступных для выполнения заданий;

      • gateway.py – параметры взаимодействия со шлюзом;

      • ha.py – настройки HA;

      • subscription_usage_model.py – параметры учета использования подписки.

    • settings.py – основной файл настроек Automation Controller.

    • tower.cert – сертификат TLS Automation Controller.

    • tower.key – закрытый ключ сертификата TLS.

    • uwsgi.ini – настройки сервиса uWSGI.

  • projects – каталог с проектами автоматизации.

Event-Driven Automation#

Данные Event-Driven Automation сохраняются в одном каталоге, независимо от количества узлов компонента в кластере.

Пример структуры:

automationedacontroller
└── automationedacontroller
    ├── automationedacontroller.db
    └── conf
        ├── SECRET_KEY
        └── settings

Здесь:

  • automationedacontroller.db – локальная база данных Event-Driven Automation, содержащая настройки и служебные данные компонента.

  • conf – каталог с файловой конфигурацией Event-Driven Automation:

    • SECRET_KEY – файл с криптографическим ключом, используемым компонентом для подписи данных и защиты секретов.

    • settings – служебный файл, в который при резервном копировании сохраняется значение криптографического ключа Event-Driven Automation.

Gateway#

Данные шлюза сохраняются в одном каталоге для всех узлов компонента.

Пример структуры:

automationgateway
└── automationgateway
    ├── automationgateway.db
    └── conf
        └── SECRET_KEY

Здесь:

  • automationgateway.db – локальная база данных шлюза, содержащая конфигурационные и служебные данные.

  • conf – каталог с настройками шлюза:

    • SECRET_KEY – криптографический ключ, используемый шлюзом для защиты данных и аутентификации.

Private Automation Hub#

Private Automation Hub сохраняет собственные данные и артефакты в отдельном каталоге резервной копии.

Пример структуры:

automationhub
└── automationhub
    ├── automationhub.db
    ├── database_fields.symmetric.key
    └── var_lib_pulp
        └── media
            └── artifact

Здесь:

  • automationhub.db – локальная база данных Private Automation Hub, содержащая метаданные репозиториев и коллекций.

  • database_fields.symmetric.key – симметричный ключ, используемый для шифрования данных в базе Private Automation Hub.

  • var_lib_pulp – каталог с данными сервиса Pulp:

    • media/artifact – хранилище артефактов и файлов коллекций Ansible.

Общие сведения#

В каталоге common хранятся криптографические данные платформы, используемые Automation Controller.

Пример структуры:

common
├── SECRET_KEY
└── version

Здесь:

  • SECRET_KEY – основной криптографический ключ Automation Controller, используемый для подписи сессий, шифрования секретов и других важных операций;

  • version – служебный файл с информацией о версии платформы.

База данных#

Каталог postgres содержит резервную копию базы данных Automation Controller и вспомогательные сценарии SQL, используемые при восстановлении.

Пример структуры:

postgres
├── aa-controller.db
├── instance_group_map_cleanup.sql
└── instance_group_map.sql

Здесь:

  • aa-controller.db – резервная копия базы данных Automation Controller;

  • instance_group_map.sql – сценарий SQL, сохраняющий во временные таблицы сопоставление групп исполняющих узлов на момент резервного копирования (используется при восстановлении для повторной привязки групп);

  • instance_group_map_cleanup.sql – сценарий SQL, удаляющий эти временные таблицы сопоставления.

Требования к узлу#

Рекомендуется выполнять резервное копирование и восстановление на установочном узле или на узле, удовлетворяющем следующим требованиям:

  • установленный пакет astra-automation-setup;

  • корректно заполненный файл /opt/rbta/aa/astra-automation-setup/inventory.

Утилита назначает владельцем создаваемого файла пользователя, указанного в переменной ansible_user раздела [all:vars] инвентаря. Если эта переменная отсутствует, владельцем файла будет пользователь, от имени которого выполняется подключение к узлам (результат команды whoami без повышения привилегий).

Пример настройки:

[all:vars]
ansible_user='astra'

Предупреждение

Восстанавливать кластер необходимо в той же конфигурации, которая была на момент создания резервной копии.

При установке с помощью коллекции эти требования соблюдаются на узле с примененной ролью astra.aa_controller.aac.

Требования к дисковому пространству#

Во время резервного копирования на диске временно размещаются несжатые дампы баз данных и промежуточные архивы, суммарный объем которых для рабочих сред (production) с большой историей заданий или крупной библиотекой контента может достигать десятков и даже сотен гигабайт. Если свободного места недостаточно, резервное копирование прерывается с ошибкой, а частично созданные файлы остаются на диске.

Предупреждение

Перед резервным копированием рабочей среды необходимо убедиться, что в каталоге /var/backups/astra-automation/ имеется достаточный запас свободного места на установочном узле и на всех узлах, участвующих в резервном копировании. Для рабочих сред рекомендуется резервировать не менее 100 ГБ; при большом объеме базы данных Automation Controller объем оценивается по формуле оценки объема базы данных, а при крупной библиотеке контента дополнительно учитывается объем артефактов коллекций Private Automation Hub.

Резервное копирование выполняется распределенно, а не централизованно на одном узле. Дампы баз данных Automation Controller, Private Automation Hub и шлюза создаются на первом узле соответствующей группы инвентаря (automationcontroller[0], automationhub[0], automationgateway[0]), а дамп базы данных Event-Driven Automation – на каждом узле группы automationedacontroller. Промежуточные файлы (staging) сохраняются в каталоге backup_dir (по умолчанию /var/backups/astra-automation/) на каждом из этих узлов, а итоговый архив собирается в каталоге backup_dest на установочном узле, с которого запущена команда sudo ./aa-setup -b.

Пиковая нагрузка на диск приходится на следующие узлы:

Узел

Что размещается

Основной источник объема

Каждый управляющий узел (automationcontroller)

Копии файлов проектов (/var/lib/awx/projects/) и файлов конфигурации

Файлы проектов (100–2000 МБ на проект)

Первый управляющий узел (automationcontroller[0]), дополнительно

Дамп базы данных Automation Controller и его сжатая копия

История заданий (таблицы main_job и main_jobevent)

Первый узел Private Automation Hub (automationhub[0])

Дамп базы данных Private Automation Hub и копия артефактов коллекций

Артефакты коллекций Ansible

Каждый узел Event-Driven Automation (automationedacontroller)

Дамп базы данных Event-Driven Automation

Служебные данные Event-Driven Automation

Первый узел шлюза (automationgateway[0])

Дамп базы данных шлюза

Служебные данные шлюза

Установочный узел (backup_dest)

Копии всех промежуточных архивов компонентов и итоговый архив astra-automation-backup-<date>.tar.gz

Суммарный объем архивов всех компонентов (промежуточные копии и итоговый архив временно сосуществуют)

Примечание

По умолчанию каталог backup_dest совпадает с каталогом backup_dir (/var/backups/astra-automation/). Поэтому, если установочный узел одновременно является узлом компонента (чаще всего первым управляющим узлом) или используется совмещенная топология (single-node, all-in-one), промежуточные файлы, копии архивов и итоговый архив размещаются на одном диске – в этом случае требования соответствующих строк таблицы необходимо суммировать, а не рассматривать по отдельности.

Примечание

Дамп базы данных Automation Controller создается на первом управляющем узле независимо от того, где размещена сама база данных: даже если база данных вынесена на внешнюю СУБД, файл дампа сохраняется на диск первого управляющего узла, а не на узел СУБД. Это необходимо учитывать при планировании дискового пространства в топологиях с вынесенной базой данных.

Объем резервной копии определяют два основных источника. Первый – база данных Automation Controller, размер которой зависит от количества запусков шаблонов заданий, срока хранения истории и уровня детализации журналов (verbosity). Второй – артефакты коллекций Private Automation Hub (каталог /var/lib/pulp/media), которые копируются в резервную копию узла automationhub[0]; в средах с крупной библиотекой контента их объем может превышать размер базы данных Automation Controller и определять итоговый размер резервной копии. Поскольку по умолчанию промежуточный дамп базы данных не сжимается, в момент сборки архива на узле одновременно находятся и несжатый дамп, и его сжатая копия, поэтому под них необходимо резервировать больше места, чем размер одного дампа.

Для снижения риска сбоев резервного копирования рекомендуется:

  • выделять под каталог /var/backups/astra-automation/ отдельный том (volume) и монтировать его на установочном узле и на всех узлах, участвующих в резервном копировании;

  • на первом управляющем узле резервировать свободное место из расчета не менее чем в три раза больше ожидаемого размера базы данных Automation Controller, но не менее 100 ГБ для рабочих сред;

  • на узле automationhub[0] дополнительно резервировать место с учетом объема артефактов коллекций в каталоге /var/lib/pulp/media;

  • на каждом узле Event-Driven Automation (automationedacontroller) резервировать место под дамп базы данных Event-Driven Automation, который создается на всех узлах этой группы;

  • на установочном узле резервировать не менее чем удвоенный суммарный объем архивов всех компонентов, так как промежуточные копии и итоговый архив временно сосуществуют;

  • регулярно удалять устаревшие архивы из каталога резервных копий, оставляя только актуальные копии; символическая ссылка astra-automation-backup-latest.tar.gz всегда указывает на самую новую копию;

  • контролировать объем свободного места перед запуском резервного копирования штатными средствами мониторинга.

Если резервное копирование завершается ошибкой нехватки места (No space left on device), освободите место в каталоге /var/backups/astra-automation/ или смонтируйте под него отдельный том, после чего повторно выполните команду sudo ./aa-setup -b.

Резервное копирование#

Для выполнения резервного копирования выполните следующие действия:

  1. Убедитесь, что в файле inventory в разделе [all:vars] значением параметра ansible_user является название учетной записи пользователя ОС установочного узла, например:

    [all:vars]
    ansible_user='astra'
    
  2. Перейдите в каталог /opt/rbta/aa/astra-automation-setup/.

  3. Выполните команду:

    sudo ./aa-setup -b
    

По умолчанию резервная копия сохраняется в каталог /var/backups/astra-automation/. Чтобы сохранить резервную копию в другой каталог, укажите полный путь к нему в качестве позиционного аргумента после аргумента -b, например:

sudo ./aa-setup -b /opt/backups/

В каталоге для хранения резервных копий также создается символическая ссылка astra-automation-backup-latest.tar.gz, которая всегда указывает на самую новую резервную копию в каталоге.

Восстановление из резервной копии#

Для восстановления Astra Automation из резервной копии выполните следующие действия:

  1. Скопируйте архив с резервной копией в каталог /var/backups/astra-automation/.

  2. Перейдите в каталог /opt/rbta/aa/astra-automation-setup/ и запустите утилиту aa-setup с аргументом -r:

    sudo ./aa-setup -r
    

    По умолчанию утилита aa-setup восстанавливает резервную копию из файла /var/backups/astra-automation/astra-automation-backup-latest.tar.gz – символической ссылки, которую резервное копирование создает на самую новую копию. Если символическая ссылка отсутствует (например, архив скопирован в каталог вручную) или для восстановления необходимо использовать другой архив, укажите полный путь к архиву в качестве позиционного аргумента после аргумента -r, например:

    sudo ./aa-setup -r /var/backups/astra-automation/astra-automation-backup-16-06-2024-155236.tar.gz
    
  3. Если резервная копия была создана в версии платформы, отличающейся от той, в которой она восстанавливается, утилиту aa-setup необходимо запустить еще раз:

    sudo ./aa-setup
    

    Это обусловлено несоответствием структуры таблиц базы данных в разных версиях платформы.

  4. Для проверки корректности восстановления выполните вход в веб-интерфейс Astra Automation от имени администратора и проверьте содержимое разделов.