Автоматизированная установка API-gateway
Предусловия
Перед началом установки убедитесь, что выполнены следующие условия:
- Подготовлено окружение.
- Дистрибутив CopyWala распакован в соответствии с инструкцией, приведенной в разделе Установка, шаг Распаковка дистрибутива CopyWala.
Последовательность действий
Выполните шаги в следующем порядке:
- Подготовка среды Ansible.
- Установка Ansible-коллекций.
- Генерация TLS-сертификатов.
- Подготовка inventory-файла и переменных ролей.
- Запуск установки.
Подготовка среды Ansible
Рекомендуется запускать установку модуля API-gateway в виртуальной среде Python.
Данный шаг выполняется на управляющем узле Ansible (control node) — машине, с которой запускаются Ansible-плейбуки.
Создание виртуальной среды позволяет избежать конфликтов с уже предустановленными пакетами и не затрагивать существующую среду на текущей машине. Для подготовки виртуального окружения выполните следующие шаги:
-
Создайте виртуальное окружение. Рекомендуется использовать Python 3.9:
python3 -m venv .pbr -
Активируйте виртуальное окружение:
source .pbr/bin/activate -
Установите необходимые пакеты:
python3.9 -m pip install 'ansible==8.7.0' -
Проверьте, что установка Ansible прошла успешно:
ansible --version. В результате вывод не должен содержать ошибок. Командаpip listдолжна вывести зависимости:ansible 8.7.0ansible-core 2.15.13
После завершения установки компонентов виртуальную среду можно отключить. Выполните консольную команду: deactivate.
Установка Ansible-коллекций
Данный шаг выполняется на управляющем узле Ansible (control node) — машине, с которой запускаются Ansible-плейбуки.
Установите или обновите Ansible-коллекции с помощью ansible-galaxy. Необходимые зависимости:
Название Ansible-коллекции | Версия | Установка |
|---|---|---|
| 1.0.0 | Перейдите в директорию с распакованным дистрибутивом любого компонента CopyWala и запустите команду: |
| 3.9.1 | |
| 1.0.2 | |
Генерация TLS-сертификатов
Сгенерируйте TLS-сертификаты, необходимые для работы модуля API-gateway с шифрованием.
Для генерации используйте Ansible-роль certs. Работа с ролью описана в дополнительной документации для автоматизированного варианта установки (с помощью Ansible) в разделе Генерация сертификатов с помощью Ansible-роли certs.
Подготовка inventory-файла и переменных ролей
-
Перейдите в директорию со скриптами установки. Например, если дистрибутив был распакован в
/path_to_dir/distrib/:cd /path_to_dir/distrib/pbr/owned/dbbr/package/scripts/Ansible -
Создайте inventory-файл на основе
inventory_example.ymlи в секцииdbbr.hostsукажите IP-адреса узлов, на которые необходимо установить модуль API-gateway.Пример inventory-файлаdbbr:hosts:dbbr_api:ansible_host: "<api_gw_ip_address>"ПодсказкаЕсли API-gateway необходимо установить на несколько хостов, добавьте дополнительные секции в inventory-файл по примеру ниже:
Пример inventory-файлаdbbr:hosts:dbbr_api1:ansible_host: "<api_gw_ip_address_1>"dbbr_api2:ansible_host: "<api_gw_ip_address_2>"# КОД ПРОПУЩЕН: секции с IP-адресами остальных хостов -
Задайте переменные роли api_gateway.
примечаниеРоль api_gateway поддерживает два режима установки, которые определяются значением переменной
api_gateway_rpm_path:api_gateway_rpm_pathзадан (непустой путь) — устанавливается пакет SynGX из указанного файла. Пакет копируется на целевой узел в директорию/tmp/, после чего выполняется его установка. Путь к пакету SynGX можно задать вручную с помощью переменнойapi_gateway_rpm_pathили определить автоматически с помощью роли common.api_gateway_rpm_pathне задан (пустая строка'', значение по умолчанию) — устанавливается стандартныйnginxиз репозитория.
Задайте все переменные, у которых в таблице ниже в столбце «Обязательность заполнения» указано Да.
примечание-
Если переменная не задана явно в плейбуке, для нее используется значение по умолчанию, определенное в файле
defaults/main.ymlроли. -
Из необязательных переменных рекомендуется заполнять секцию
*_tls, где*— это префикс с именем модуля. Например, для Storage Manager секция будет выглядеть так:storage_manager_tls:rootca:local_path: /path/to/certs/certificates/rootCA.crtcert:local_path: /path/to/certs/certificates/storage-manager.crtkey:local_path: /path/to/certs/certificates/storage-manager.key
Название переменной | Описание | Значение по умолчанию | Обязательность заполнения |
|---|---|---|---|
| Путь к RPM-файлу установщика Syngx |
| Да или использовать роль common. При использовании роли common задавать эту переменную не требуется |
| Адрес, на который направляются запросы для последующей обработки Syngx |
| Нет |
| Директория для конфигурационного файла |
| Нет |
| Порт, на котором Syngx будет принимать входящие запросы |
| Нет |
| Порт, на котором будет доступна служебная информация |
| Нет |
| IP-адрес, на котором доступен Agent Manager |
| Нет |
| Порт, на котором доступен API Agent Manager |
| Нет |
| Порт, на котором доступен WebSocket Agent Manager |
| Нет |
| Использование tls-шифрования для подключения к Agent Manager |
| Нет |
| Использование взаимной аутентификации с помощью сертификатов для подключения к Agent Manager |
| Нет |
| IP-адрес, на котором доступен Storage Manager |
| Нет |
| Порт, на котором доступен Storage Manager |
| Нет |
| Использование tls-шифрования для подключения к Storage Manager |
| Нет |
| Использование взаимной аутентификации с помощью сертификатов для подключения к Storage Manager |
| Нет |
| IP-адрес, на котором доступен Task Manager |
| Нет |
| Порт, на котором доступен Task Manager |
| Нет |
| Использование tls-шифрования для подключения к Task Manager |
| Нет |
| Использование взаимной аутентификации с помощью сертификатов для подключения к Task Manager |
| Нет |
| Путь к сертификату, с помощью которого производится проверка валидности сертификатов у компонентов Copywala при перенаправлении запросов |
| Нет |
| Путь к сертификату, с помощью которого производится проверка валидности сертификатов у клиентских машин при перенаправлении запросов |
| Нет |
| Словарь, указывающий пути к сертификатам Syngx. Содержит следующие ключи:<br /> |
| Нет |
Переменные роли можно задать одним из следующих способов:
- в inventory-файле
- в плейбуке
install.yml - в отдельном файле с переменными (например,
api-gateway-vars.yml)
dbbr:
hosts:
dbbr_api:
ansible_host: "<api_gw_ip_address>"
api_gateway_rpm_path: ''
- name: Install API Gateway
hosts: dbbr
roles:
- role: api_gateway
become: true
vars:
api_gateway_rpm_path: ''
api_gateway_rpm_path: ''
Пример плейбука также приведен в файле pbr/owned/dbbr/package/scripts/Ansible/playbook_example.yml.
Запуск установки
Перед запуском убедитесь, что виртуальное окружение .pbr активировано.
-
Перед запуском установки API-gateway, в
install.ymlзакомментируйте или удалите роли компонентов, которые не требуется устанавливать.Пример- name: Install API Gatewayhosts: dbbrroles:# - agent_manager- api_gateway# - task_manager# - storage_manager#- name: Install Recovery Manager# hosts: recovery# roles:# - recovery_manager -
Для запуска установки выполните команды:
cd pbr/owned/dbbr/package/scripts/Ansibleansible-playbook -i inventory.yml install.ymlпримечаниеЕсли на шаге подготовка inventory-файла и переменных ролей переменные были заданы в отдельном файле, укажите его с помощью флага
-e, например:cd pbr/owned/dbbr/package/scripts/Ansibleansible-playbook -i inventory.yml install.yml -e @api-gateway-vars.yml
Проверка результата
-
Проверьте статус сервера:
$ systemctl status syngx.service. -
Положительным результатом проверки будут являться успешные записи в логах с выводом
status=0/SUCCESS:syngx.service - The SYNGX HTTP and reverse proxy serverLoaded: loaded (/etc/systemd/system/syngx.service; enabled; vendor preset: disabled)Drop-In: /etc/systemd/system/syngx.service.d└─service.confActive: active (running) since Mon 2025-06-30 07:21:15 UTC; 5s agoProcess: 106 ExecStart=/usr/sbin/syngx (code=exited, status=0/SUCCESS)Process: 105 ExecStartPre=/bin/bash -c chown syngx.syngx /opt/syngx/conf/syngx.conf.current (code=exited, status=0/SUCCESS)Process: 103 ExecStartPre=/bin/bash -c /sbin/syngx -T > /opt/syngx/conf/syngx.conf.current (code=exited, status=0/SUCCESS)Process: 99 ExecStartPre=/bin/bash -c VARTIME=`cat /proc/uptime | cut -d . -f 1`; if [ $VARTIME -le 300 ] ; then sleep 2; fi (code=exited, status=0/SUCCESS)Process: 98 ExecStartPre=/usr/sbin/syngx -t (code=exited, status=0/SUCCESS)Main PID: 107 (syngx)Tasks: 5 (limit: 26213)Memory: 4.6MCGroups: <Позиция syngx в иерархии cgroups>Jun 30 07:21:15 syngx2 systemd[1]: Starting The SYNGX HTTP and reverse proxy server...Jun 30 07:21:15 syngx2 syngx[98]: syngx: the configuration file /opt/syngx/conf/syngx.conf syntax is okJun 30 07:21:15 syngx2 syngx[98]: syngx: configuration file /opt/syngx/conf/syngx.conf test is successfulJun 30 07:21:15 syngx2 bash[104]: syngx: the configuration file /opt/syngx/conf/syngx.conf syntax is okJun 30 07:21:15 syngx2 bash[104]: syngx: configuration file /opt/syngx/conf/syngx.conf test is successfulJun 30 07:21:15 syngx2 systemd[1]: Started The SYNGX HTTP and reverse proxy server.
Пример запроса для проверки корректной обработки Syngx:
$ curl -I http://<DNS запись узла>:29001/metrics
Положительный ответ:
HTTP/1.1 200 OK
Server: SynGX/3.0.2 (based on nginx-1.24.0)
Date: Tue, 01 Jul 2025 08:26:34 GMT
Content-Type: text/html
Content-Length: 278
Connection: close
После завершения установки данного модуля:
- При необходимости выполните установку других модулей Platform V CopyWala.
- Перейдите к следующему шагу — Настройка интеграции Platform V CopyWala с внешними сервисами.