Требования
Требования к серверной инфраструктуре
Для ускорения развертывания Sage предусмотрены флейворы — готовые шаблоны конфигурации, определяющие количество серверов и необходимые ресурсы под определенную нагрузку. Это позволяет протестировать возможности Sage на низконагруженных стендах.
| Флейвор | Топология | Ресурсы на 1 узел | Назначение |
|---|---|---|---|
| 1VM | 1 сервер | 8 CPU 32 ГБ RAM 500 ГБ SSD | Локальное тестирование |
| 3VM | 3 сервера | 8 CPU 32 ГБ RAM 500 ГБ SSD | Имитация распределенного кластера Тестирование отказоустойчивости (HA) |
Поддерживаются любые платформы виртуализации (KVM, VMware, Hyper-V) и bare-metal-серверы. Полные характеристики, ограничения по нагрузке и особенности архитектуры см. в отдельной статье: Флейворы Sage.
Стандартные флейворы (1VM и 3VM) предназначены исключительно для тестовых и демонстрационных целей. Для продуктивной эксплуатации или тестирования при высоких нагрузках требуется расчет индивидуальной конфигурации.
Чтобы точнее рассчитать необходимый объем дискового пространства под нагрузку, воспользуйтесь калькулятором дисковых ресурсов.
Требования к контрольному хосту
Контрольный хост (Control Plane) — это отдельный сервер под управлением Linux (ВМ или bare-metal), с которого запускаются Ansible-плейбуки для установки и управления кластером Sage. Не входит в состав кластера.
Аппаратные ресурсы и ОС
| Параметр | Требования | Комментарий |
|---|---|---|
| CPU | 2 ядра | Минимальное требование |
| RAM | 4 ГБ | |
| Disk | 200 ГБ SSD | Рекомендуется с запасом для локального кэширования Docker-образов. Если образы загружаются напрямую из реестра без сохранения на диск, допустимо меньше |
| ОС | Ubuntu 20.04 (Focal) Ubuntu 22.04 (Jammy) Ubuntu 24.04 (Noble) Astra Linux 1.7 (Орёл) Astra Linux 1.8 (Орёл) Astra Linux 1.8 (Воронеж) | Другие дистрибутивы могут работать, но не протестированы официально |
Программные зависимости
На контрольном хосте должны быть установлены следующие утилиты:
| Компонент | Минимальная версия | Команда для проверки |
|---|---|---|
| Docker Engine | Community Edition 20.10+ | docker --version |
| GNU bash | 5.0+ | bash --version |
| OpenSSH | 8.2+ | ssh -V |
| OpenSSL | 3.0.0+ | openssl version |
| jq | 1.6+ | jq --version |
Требуется наличие клиентских утилит: ssh, ssh-add, ssh-agent.
Для быстрой проверки версий всех необходимых пакетов и утилит используйте утилиту Sage Precheck. Она автоматически проверит, соответствуют ли контрольный хост и целевые серверы требованиям.
Сетевые требования
Контрольный хост должен иметь сетевую связность с внешними сервисами и внутренними компонентами Sage.
Доступ к внешним сервисам (Yandex Cloud)
Требуется исходящий доступ по протоколу HTTPS (TCP/443) к следующим доменам:
storage.yandexcloud.net— скачивание скриптов установки и утилиты Sage Precheck из объектного хранилища.cr.yandex— авторизация в регистре Docker-образов и скачивание установщика и компонентов Sage.
Доступ к внутренним сервисам Sage
Требуется для управления кластером и работы с системой управления доступом (Spirit IAM).
| Направление | Порт | Протокол | Назначение |
|---|---|---|---|
| Контрольный хост → Узлы кластера | 22 | TCP/SSH | Управление хостами (Ansible) |
| Контрольный хост → Узлы кластера | 443 | TCP/HTTPS | Взаимодействие с API сервисов |
| Контрольный хост → Spirit IAM | 9443 | TCP/HTTPS | Доступ к системе управления доступом |
Требования к серверам Sage
На всех целевых хостах должен быть установлен необходимый набор системных пакетов и настроены параметры ядра.
Системные пакеты
Для систем, использующих пакетный менеджер apt:
- Docker
- docker-ce-cli=5:20.10.*
- docker-ce=5:20.10.*
- docker-compose-plugin=2.29.2.*
- Python и PostgreSQL
- python3-docker
- python3-pip
- python3-psycopg2>=2.5.1
- python3-requests
- postgresql-client
- libpq-dev
- Утилиты
- gnupg2
- apt-transport-https
- ca-certificates
- curl
Для быстрой проверки версий всех необходимых пакетов и утилит используйте утилиту Sage Precheck. Она автоматически проверит, соответствуют ли контрольный хост и целевые серверы требованиям.
Параметры ядра
Перед развертыванием компонентов Sage убедитесь, что на всех целевых хостах установлены следующие параметры ядра:
net.ipv4.tcp_retries2 = 5 # Быстрее детектировать обрыв соединения
vm.admin_reserve_kbytes = 64000 # Резерв памяти для root
vm.max_map_count = 262144 # Увеличить лимит областей памяти для БД/OpenSearch
vm.swappiness = 1 # Минимизировать свопинг
vm.user_reserve_kbytes = 256000 # Резерв памяти для пользовательских процессов
Для пошаговой проверки текущих значений выполните серию команд на каждом из целевых хостов:
sysctl net.ipv4.tcp_retries2
sysctl vm.admin_reserve_kbytes
sysctl vm.max_map_count
sysctl vm.swappiness
sysctl vm.user_reserve_kbytes
Настройки Docker
Установите рекомендованные настройки Docker:
{
"bridge": "none",
"data-root": "/srv/docker",
"default-ulimits": {
"memlock": {
"Hard": -1,
"Name": "memlock",
"Soft": -1
},
"nofile": {
"Hard": 256000,
"Name": "nofile",
"Soft": 256000
},
"nproc": {
"Hard": 4096,
"Name": "nproc",
"Soft": 4096
}
},
"live-restore": true,
"log-driver": "json-file",
"log-opts": {
"env": "{{ prod }}",
"max-file": "2",
"max-size": "100m"
},
"storage-driver": "overlay2"
}
Требования к учетной записи
Для установки и управления Sage требуется отдельная учетная запись с правами sudo. Это требование обусловлено принципами безопасности и минимизации привилегий, что позволяет ограничить потенциальные риски при установке и эксплуатации.
Имя пользователя и доступ
Рекомендуемое имя: sage
Используйте единое имя пользователя на всех целевых хостах, участвующих в развертывании. Это удобно для унификации среды развертывания и упрощает автоматизацию и аудит действий (все операции Sage видны в логах под одним пользователем).
Требования к правам доступа:
-
Учетная запись должна существовать и быть доступна по SSH на:
- контрольном хосте;
- всех целевых хостах Sage;
- любых дополнительных узлах (балансировщики, базы данных).
-
Инженер, ответственный за развертывание Sage, должен знать логин и пароль этой учетной записи.
Права на выполнение команд через sudo
Учетная запись для управления Sage должна иметь возможность выполнять привилегированные операции. Для корректной работы скриптов Ansible разрешите выполнение команд без запроса пароля (NOPASSWD) одним из способов ниже.
Вариант 1. Через файл sudoers.d
Добавьте правило, разрешающее выполнение любых команд без пароля.
-
Создайте файл
/etc/sudoers.d/sageсо следующим содержимым:sage ALL=(ALL) NOPASSWD:ALL -
Убедитесь, что файл имеет корректные права доступа:
sudo chmod 440 /etc/sudoers.d/sage
Вариант 2. Через группу администраторов
Если в вашей инфраструктуре принято управлять правами через группы, добавьте пользователя sage в стандартную группу администраторов sudo.
Требования к разрешению DNS-имен
Корректная настройка DNS критична для работы TLS-сертификатов, внутренней аутентификации и взаимодействия между компонентами Sage.
Правила именования хостов
Каждый узел, входящий в кластер Sage, должен соответствовать следующим требованиям:
-
Только FQDN
- Использование коротких имен (shortnames) запрещено.
- Хосты должны быть доступны по полным доменным именам.
- Пример:
sage-node1.sage.example.com
-
Единый домен
- Хосты должны принадлежать одному родительскому домену, который будет использоваться для генерации TLS-сертификатов и работы с registry.
- Пример:
*.sage.example.com
-
Динамический резолвинг
- Разрешение имен для всех хостов, участвующих в развертывании Sage, включая контрольный хост, должно выполняться динамически через доступные в сети DNS-серверы.
- Пример:
dig sage-node1.example.comвозвращает IP.
Запрещается использовать статические записи вида <IP> <Имя_хоста> в локальных конфигурационных файлах (например, /etc/hosts). Это приведет к сбоям при автоматическом перевыпуске или проверке TLS/SSL-сертификатов и сбоям в работе скриптов Ansible.
Доменные имена сервисов
Для работы системы необходимо зарезервировать и настроить следующие доменные имена:
| Тип домена | Пример | Назначение | Обязательность |
|---|---|---|---|
| Основной домен | sage.example.com | Точка входа для пользователей (UI, API) | Обязательно |
| Домен Spirit | spirit.example.com | Система управления доступом и группами (IAM) | Обязательно для Production Опционально для 1VM/3VM |
| Wildcard-домен | *.internal.sage.example.com | Внутренняя коммуникация сервисов | Обязательно для Production Не требуется для 1VM/3VM |
Домен для Spirit не должен быть поддоменом основного домена Sage, и наоборот. Это требование обусловлено особенностями работы Cookies.
Требования к сетевой инфраструктуре кластера
Для корректного взаимодействия между узлами кластера (не включая контрольный хост) сетевая инфраструктура должна соответствовать следующим требованиям.