Обзор развертывания Open vAIR на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо наличие следующих условий:
-
Операционная система: Ubuntu (поддержка пакетов APT).
-
Права доступа: учетная запись с правами
rootили доступ кsudo. -
Домен: зона
hostkey.in. -
Сетевые порты:
-
Порт
443для внешнего доступа по HTTPS. -
Порт
80для перенаправления на HTTPS и проверки сертификатов. -
Порт
8000для внутреннего веб-интерфейса. -
Порт
5432для базы данных PostgreSQL. -
Порт
5672для очереди сообщений RabbitMQ. -
Порт
9090для метрик Prometheus.
FQDN итоговой панели¶
Доступ к веб-интерфейсу приложения осуществляется по следующему адресу:
opvr<ID сервера>.hostkey.in:443
Где <ID сервера> заменяется на уникальный идентификатор сервера.
Структура файлов и каталогов¶
Приложение и его компоненты размещаются в следующих директориях:
-
Домашняя директория пользователя:
/opt/aero -
Каталог проекта:
/opt/aero/openvair -
Каталог данных:
/opt/aero/data -
Каталог хранилища:
/opt/aero/data/storage -
Каталог монтирования бэкендов:
/opt/aero/data/mnt -
Каталог репозитория резервных копий:
/opt/aero/restic -
Каталог конфигурации Nginx:
/data/nginx/user_conf.d -
Каталог конфигурации Nginx (основной):
/opt/nginx
Процесс установки приложения¶
Установка выполняется путем клонирования репозитория и запуска скрипта установки:
-
Клонирование репозитория
https://github.com/Aerodisk/openvair.gitветкиmainв директорию/opt/aero/openvair. -
Генерация файла конфигурации
project_config.toml. -
Запуск скрипта
install.shв сессииtmuxс ожиданием завершения установки. -
После завершения установки создается маркерный файл
.installed. -
Установка включает в себя настройку баз данных, очередей сообщений и веб-сервиса.
Права доступа и безопасность¶
-
Создается пользователь
aeroс домашней директорией/opt/aero. -
Пользователю
aeroпредоставляются права на выполнение командsudoбез ввода пароля. -
Для пользователя
libvirt-qemu(UID64055) устанавливаются права доступаrwxна директорию/opt/aero/dataи все вложенные файлы рекурсивно. -
Директория
/opt/aero/resticимеет права доступа0700(доступ только владельцу). -
Директория
/opt/nginxимеет права доступа0750.
Базы данных¶
Приложение использует следующие компоненты баз данных и очередей:
| Компонент | Хост | Порт | Пользователь | Пароль | Имя БД/Очереди |
|---|---|---|---|---|---|
| PostgreSQL | 0.0.0.0 | 5432 | aero | aero | openvair |
| RabbitMQ | localhost | 5672 | guest | guest | - |
База данных PostgreSQL запускается в контейнере Docker с именем postgres.
Контейнеры Docker и их запуск¶
Для работы веб-сервера и получения SSL-сертификатов используется стек Docker Compose:
-
Файл конфигурации:
/opt/nginx/docker-compose.yml. -
Образ Nginx:
jonasal/nginx-certbot:latest. -
Режим сети:
host. -
Объемы:
-
nginx_secrets(внешний) монтируется в/etc/letsencrypt. -
Локальная директория
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d.
Запуск стека выполняется командой docker compose с параметрами pull: always и recreate: auto.
Прокси серверы¶
Внешний доступ к приложению осуществляется через Nginx, который работает в режиме обратного прокси-сервера:
-
Домен:
opvr<ID сервера>.hostkey.in. -
Протокол: HTTPS (порт
443). -
Перенаправление HTTP (порт
80) на HTTPS. -
Поддержка WebSocket для VNC-сессий через путь
/vnc-proxy. -
Поддержка API Prometheus через путь
/api/v1/. -
Максимальный размер тела запроса:
20G. -
Сертификаты SSL автоматически генерируются и обновляются через Certbot.
Настройки прав¶
Права на файлы и директории настроены следующим образом:
-
/opt/aero: владелецaero, группаaero, права0755. -
/opt/aero/data: владелецaero, группаaero, права0755. -
/opt/aero/data/storage: владелецaero, группаaero, права0755. -
/opt/aero/data/mnt: владелецaero, группаaero, права0755. -
/opt/aero/restic: владелецaero, группаaero, права0700. -
/opt/nginx: владелецroot, группаroot, права0750. -
/data/nginx/user_conf.d: владелецroot, группаroot, права0755. -
Файл конфигурации
project_config.toml: владелецaero, права0640. -
Файл конфигурации Nginx: владелец
root, права0644.
Расположение конфигурационных файлов и данных¶
Основные конфигурационные файлы находятся в следующих местах:
-
Конфигурация приложения:
/opt/aero/openvair/project_config.toml. -
Конфигурация Nginx для домена:
/data/nginx/user_conf.d/opvr<ID сервера>.hostkey.in.conf. -
Конфигурация Docker Compose:
/opt/nginx/docker-compose.yml. -
Логи установки:
/opt/aero/openvair/install.log. -
Файл окружения для Nginx:
/data/nginx/nginx-certbot.env.
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
443 | TCP | Внешний доступ к веб-интерфейсу (HTTPS) |
80 | TCP | Перенаправление на HTTPS и ACME-вызовы |
8000 | TCP | Внутренний веб-интерфейс (127.0.0.1) |
5432 | TCP | База данных PostgreSQL |
5672 | TCP | Очередь сообщений RabbitMQ |
9090 | TCP | Метрики Prometheus |
Запуск, остановка и обновление¶
Управление сервисами приложения осуществляется через systemd:
-
Запуск/перезапуск веб-приложения:
systemctl restart web-app.service. -
Запуск/перезапуск сервиса виртуальных машин:
systemctl restart vm-domain.service. -
Запуск/перезапуск слоя сервиса виртуальных машин:
systemctl restart vm-service-layer.service.
Для обновления конфигурации Nginx и сертификатов используется Docker Compose:
- Пересоздание стека Nginx:
docker compose -f /opt/nginx/docker-compose.yml up -d.
Проверка статуса веб-сервиса выполняется через эндпоинт https://127.0.0.1:8000/docs/.