Требования к инфраструктуре Почты VK WorkSpace
Представители VK предоставляют вам:
- Ссылку на скачивание дистрибутива Почты.
- Лицензионный ключ.
- Комплект документации.
Также вам потребуется:
- Набор DNS-записей: A, CNAME, MX, SPF, TXT, NS — см. DNS-записи.
- DKIM-подпись с селекторами для каждого домена (или несколько DKIM с разными селекторами для одного домена).
- Доступ к серверам по SSH с правами администратора (вход по ключу или по паролю).
- Сертификаты SSL для каждого CNAME или Wildcard-сертификат для домена — см. Как работать с Wildcard-сертификатами.
- Доступ к портам — см. Протоколы и порты.
- Процессоры с поддержкой необходимого набора инструкций — см. CPU.
- Локальная сеть — см. Сеть.
- Отключенный файл подкачки (swap).
- Утилита
tarи утилита для распаковки zip-архивов, например 7zip или unzip. - Active Directory или другая служба каталогов, работающая по протоколу LDAP.
Некоторые компоненты инфраструктуры не входят в состав поставки и обеспечиваются силами заказчика:
- Балансировщик входящего трафика — распределяет входящие соединения между серверами инсталляции. Пример настройки приведен в документе Как распределять нагрузку с помощью HAProxy.
- DNS-сервер — требуемые записи перечислены в разделе DNS-записи.
- Служба каталогов — Active Directory или другая, работающая по протоколу LDAP.
- Сервер синхронизации системного времени (NTP) — см. Требования к синхронизации системного времени.
- Сертификаты SSL для каждого CNAME или Wildcard-сертификат для домена — см. Как работать с Wildcard-сертификатами.
- Корпоративный антивирус, если он используется в инфраструктуре заказчика, — см. Как правильно настроить антивирус.
- Astra Linux SE Орел — версия 1.7.5+, версия ядра — 5.15.
- Astra Linux SE Орел — версия 1.8, версия ядра — 6.1.
- РЕД ОС — версия 7.3.5, версия ядра — 6.1.
- РЕД ОС — версия 7.3с (сертифицированная), версия ядра — 6.1.
- РЕД ОС — версия 8, версия ядра — 6.6 или 6.12.
Архитектура системы — x86_64.
Обновлять операционную систему можно только на поддерживаемую версию и только после консультации с представителем VK. Список поддерживаемых ОС может быть уточнен в рамках работ по индивидуальному проекту.
Версия Docker Engine — 20.10.2023.
Для Astra Linux SE Орел требуется уровень защищенности 0-Базовый и отключенный режим мандатного контроля целостности. Проверить:
sudo set-fs-ilev status -vcat /etc/astra_license
Поддерживаемые версии десктопных операционных систем и веб-браузеров приведены в документе Поддерживаемые версии веб-браузеров и ОС.
Совместимость мобильного приложения Суперапп VK WorkSpace с мобильными операционными системами:
ОС | Версия |
|---|---|
iOS | 18–26 |
Android | 12–16 |
Поддерживаются мобильные почтовые приложения соответствующей ОС, работающие по протоколам IMAP/S и SMTP/S.
- Требования к отказоустойчивости решения приведены в документе Обеспечение отказоустойчивости VK WorkSpace.
- Требования к катастрофоустойчивости решения приведены в документе Обеспечение катастрофоустойчивости VK WorkSpace.
- Используйте процессоры Intel(R) Xeon(R) Gold 6338 2.2GHz и новее. Допускается использовать эквивалентные модели по количеству ядер и производительности.
- CPU должен поддерживать следующие инструкции: 3DNow, ADX, AES, AVX, AVX2, BMI, BMI2, CMOV, MMX, MODE64, NOT64BITMODE, NOVLX, PCLMUL, SHA, SSE1, SSE2, SSE41, SSE42, SSSE3 и XOP.
Проверить набор флагов процессора:
lscpu
В выводе должны присутствовать флаги sse2, avx, avx2, bmi.
Если вы используете системы виртуализации для развертывания серверов VK WorkSpace необходимо учитывать особенности выделения ресурсов:
vCPU
Запрещено допускать переподписку. Суммарные vCPU на хосте не должны превышать количество физических ядер, выделенных всем виртуальным машинам. При этом не рекомендуется считать Hyper-Threading полноценными ядрами.
Запрещено выделять одной виртуальной машине количество ядер больше, чем количество ядер на физическом сокете.
RAM
Запрещено назначать суммарную vRAM выше физической RAM хоста.
Механизмы экономии памяти
Запрещено включать механизмы ballooning и сжатия памяти.
swap
Запрещено использовать swap — как на гипервизоре, так и внутри виртуальных машин.
Резервирования ресурсов виртуальных машин
Устанавливайте всю выделенную память и процессоры в резерв для виртуальных машин системы.
Диски и бэкапы
- Не используйте тонкие диски (диски типа Thin) — диски с отложенным выделением пространства на СХД.
- Виртуальные диски для следующих разделов должны быть разнесены по разным физическим устройствам:
- ОС.
- Файлы.
- Журналы.
- Данные.
- Резервное копирование и снапшоты должны выполняться в периоды минимальной нагрузки.
Поддерживаются 2 варианта размещения хранилищ:
- Внешняя СХД: SAN, FC, iSCSI и подобные.
- Встроенные диски (DAS). Локальные диски сервера, включая JBOD.
Общие требования к размещению:
- Под компоненты Почты необходимо выделить отдельные LUN/разделы/диски.
- По возможности не размещайте другие системы на тех же разделах/пулах СХД. Следует избегать влияния нагрузки сторонних систем на Почту.
- Выделите отдельные LUN/разделы/диски для:
- Файлов ОС.
- Системных журналов.
- Данных сервисов системы.
- Не используйте тонкие диски (thin provisioned disks) — диски с отложенным выделением пространства, как на уровне СХД, так и на уровне виртуализации.
- Для ETCD используйте отдельные LUN на быстрых дисках. Требование по задержке: p99 latency I/O ≤ 10 мс при 10 000 IOPS
- Серверы БД (PostgreSQL, Tarantool) разместите на обычных дисках. При этом каждый экземпляр БД размещайте на отдельном LUN, разделе или диске. Даже табличные пространства баз данных рекомендуется определять на разные разделы.
- Сервисы хранения (zepto, mescalito) разместите на обычных дисках. Допускается размещение на медленных дисках только при кратном увеличении количества сервисов и дисков, чтобы компенсировать низкую производительность. При размещении учитывайте объем данных и интенсивность использования.
- Для файловых хранилищ можно использовать медленные диски.
Тип диска на уровне виртуализации или СХД должен быть fat provisioning, а не thin provisioning: весь выделенный объем должен быть заранее зарезервирован и гарантированно доступен.
Минимальные требования к SSD-дискам:
Операций чтения, IOPS | Операций записи, IOPS | Максимальная задержка операции, мс |
|---|---|---|
10 000 | 5 000 | < 1 |
Точные показатели определяются при анализе запланированного профиля нагрузки. Промышленных решений с показателями 800 000 – 1 000 000 IOPS достаточно.
Тип диска на уровне виртуализации или СХД должен быть fat provisioning, а не thin provisioning.
Минимальные требования к локальным HDD-дискам:
Операций чтения, IOPS | Операций записи, IOPS | Максимальная задержка операции, мс |
|---|---|---|
1000 — 2400 | 500 — 800 | < 20 |
Точные показатели определяются при анализе запланированного профиля нагрузки. Промышленных решений на базе SAS 15 000 rpm с кэшем 128 Мб достаточно.
Локальные HDD-диски можно подключать только к некоторым компонентам Почты. Такие компоненты помечены в веб-интерфейсе установщика.
Проверка совместимости с другими типами СХД осуществляется индивидуально. Обратитесь к представителям VK за консультацией.
Минимальные требования к разделам. Эти значения проверяет InfraKit перед установкой:
Точка монтирования | Минимальный размер | Минимум свободного места |
|---|---|---|
/ | 40 Гб | 10% |
/boot | 400 Мб | — |
/home | 100 Гб | 10% |
/var/log | 40 Гб | 10% |
/var/lib/docker | 150 Гб | 10% |
/opt | 300 Гб | 15%, но не менее 25 Гб |
/tmp | 60 Гб | 10% |
Если планируется установка Почты и Мессенджера, то минимальный размер точки /tmp увеличивается до 90 Гб.
Требования к производительности разделов — не менее 1000 IOPS на чтение и 500 IOPS на запись (замер длительностью 10 секунд). Производительность проверяется для разделов /, /boot, /home, /var/log, /var/lib/docker и /opt.
В зависимости от количества пользователей может быть увеличен объем памяти раздела /opt/mailOnPremise/dockerVolumes.
Если вы планируете монтирование дополнительных дисков, рекомендуется подключить их до начала установки. При кластерной установке диски заранее подключают к машинам, отведенным под хранилища.
Подключенные диски необходимо разбить на разделы, для этого можно использовать любые привычные утилиты, например fdisk.
На разделах дисков необходимо создать файловую систему. Мы рекомендуем ext4, также поддерживается xfs.
Пример команды для создания файловой системы ext4:
mkfs.ext4 <путь к устройству>
-
Локальная сеть: 10 GbE.
-
Требование по задержке: RTT/latency ≤ 10 мс (в пределах локального контура/ЦОД/между ЦОД).
-
Пропускная способность каналов для пользовательского доступа рассчитывается исходя из количества пользователей и профиля активности. Ориентировочное значение: 5 МБ/с на пользователя.
-
Пропускная способность для серверных компонентов кластера — не ниже 10 Гбит/с.
-
Пропускная способность для клиентских подключений определяется экспериментально на уровне протокола IMAP и веб-интерфейса, исходя из приемлемой для пользователя скорости.
- SMTP, ESMTP — протоколы отправки почтовых сообщений (порт 2525/465).
- IMAP — протокол получения почтовых сообщений (порт 143/993).
- POP3 — протокол получения почтовых сообщений (порт 110/995).
- HTTPS для доступа к веб-интерфейсу почты с использованием TLS.
- CalDAV для синхронизации календаря.
- CardDAV для синхронизации и управления контактами.
- WebDAV для работы с Диском.
- Kerberos или NTLM — протокол взаимодействия с Active Directory клиента.
- IP in IP — протокол туннелирования IP.
Чтобы обеспечить безопасность Почты, на ваших серверах должны быть доступны только необходимые порты. Для доступа к веб-интерфейсу: 80 (http), 443 (https). Для отправки и получения почты: 2525 (smtp), 25 (mx), 110 (pop3), 995 (pop3s), 143 (imap), 465 (smtps), 993 (imaps). Вы должны сами определить, с каких IP-адресов будут доступны порты.
- Порты для пользователей: 25, 80, 143, 443, 465, 993, 1025. При кластерной установке дополнительно нужен порт 2525.
- Административные порты: 22, 8888*, 5555. При установке на одну машину дополнительно нужен порт 50051.
Порт 8888 используется сервисом deployer (установщик). Рекомендуется применять следующие наложенные средства защиты:
- Отдельный mTLS прокси-сервер с обязательной проверкой клиентских сертификатов. Управление ключами происходит посредством PKI заказчика.
- Использование (меж)сетевых экранов как на операционной системе сервера установщика, так и на активном сетевом оборудовании.
- Прокси-сервера для аутентификации и авторизации посредством простого пароля, Kerberos или доменного пароля.
Можно использовать несколько из перечисленных методов. Выбор метода осуществляется исходя из технических возможностей инфраструктуры и требований информационной безопасности.
Протокол | Порт | Служба/Контейнер | Описание службы/контейнера | Назначение порта | Кто обращается |
|---|---|---|---|---|---|
TCP | 9091 | calico-node | Демон динамической маршрутизации | Сбор метрик prometheus | victoria-metrics |
TCP | 5000 | registry | Хранилище docker-образов | Подключение к сервису | Все машины инсталляции |
TCP | 2379 | infraetcd | etcd, которое хранит инфраструктурные данные, например настройки сети | Подключение клиентов (потребителей) | Все машины и контейнеры инсталляции |
TCP | 2380 | infraetcd | etcd, которое хранит инфраструктурные данные, например настройки сети | Общение между инстансами etcd | Другие infraetcd |
TCP | 4001 | infraetcd | etcd, которое хранит инфраструктурные данные, например настройки сети | Подключение клиентов (потребителей) | Все машины и контейнеры инсталляции |
TCP | 8080 | cadvisor | Инструмент снятия телеметрии с контейнеров | Сбор метрик prometheus | victoria-metrics |
TCP | 9100 | node-exporter | Инструмент снятия телеметрии с гипервизоров | Сбор метрик prometheus | victoria-metrics |
TCP | 2003 | carbclick | Сервис, который принимает метрики и передает их в clickhouse | Прием метрик | Любые контейнеры |
TCP | 2004 | carbclick | Сервис, который принимает метрики и передает их в clickhouse | Прием метрик | Любые контейнеры |
TCP | 22 | sshd | Демон операционной системы, предоставляющий консоль пользователю | ssh подключения | Установщик (on-premise deployer) |
TCP | 50051 | optimus-agent | Агент отвечающий за автоматизирванную проверку инфраструктуры перед началом установки/обновления. | Проверка ядра и портов | Установщик (on-premise deployer) |
TCP | 179 | Bird | Calico. Работа BGP сессиий | _______ | Между всеми серверами системы |
TCP | 8888 | onpremise-deployer | Приложения для установки и начальной настройки VK WorkSpace | Подключение администраторов | Администраторы |
TCP | 5555 | infrakit | Инструмент проверки состояния серверов, сетевой связности и доступности сервисов до и после установки | HTTP API установщика: агенты InfraKit отправляют на него результаты проверок | Все машины инсталляции |
UDP | 2003 | carbclick | Сервис, который принимает метрики и передает их в clickhouse | Прием метрик | Любые контейнеры |
TCP | 25 | pub-mx | nginx, обслуживающий mx-трафик от внешних почтовых серверов | Прием почты | Внешние почтовые серверы |
TCP | 2525 | pub-smtp | nginx, обслуживающий smtp-трафик | Отправка почты | smtp-клиенты |
TCP | 465 | pub-smtp | nginx, обслуживающий smtps-трафик | Отправка почты | smtp-клиенты |
TCP | 143 | pub-imap | nginx, обслуживающий imap-трафик | Получение почты | imap-клиенты |
TCP | 993 | pub-imap | nginx, обслуживающий imaps-трафик | Получение почты | imap-клиенты |
TCP | 443 | pub | nginx, обслуживающий https-трафик | Доступ к веб-интерфейсу | Веб-клиенты |
TCP | 1025 | pub-mx | relay-трафик от доверенных отправителей | Прием почты | Доверенные отправители |
TCP | 8082 | carbonapi | API для подключения grafana к graphite | Подключение клиентов | Grafana |
TCP | 8123 | graphite | Хранилище метрик clickhouse-server | Обмен данными | Компоненты мониторинга |
TCP | 9000 | graphite | Хранилище метрик clickhouse-server | Обмен данными | Компоненты мониторинга |
TCP | 9009 | graphite | Хранилище метрик clickhouse-server | Обмен данными | Компоненты мониторинга |
TCP | 9090 | graphite-api | API для clickhouse (graphite) | Подключение клиентов | Компоненты мониторинга |
TCP | 8428 | victoria-metrics | Prometheus-подобное хранилище метрик | Сбор и отдача метрик | Компоненты мониторинга |
Для защиты сетевых соединений между серверами, виртуальными машинами и контейнерами почтовой системы используется ПО WireGuard.
Для работы Почты вам нужны:
- MX-запись (рекомендуемый приоритет — 10), которая обязательно ведет на
mxs.<домен для почты> - Набор A- или CNAME-записей.
Выберите поддомен, на котором будут доступны пользовательский и административный интерфейсы VK WorkSpace. Например, если домен вашей организации — onprem.ru, а выбранный поддомен — mail.onprem.ru, то интерфейсы будут доступны по адресам:
https://e.mail.onprem.ru— Почта VK WorkSpace.https://biz.mail.onprem.ru— панель администратора.
Домен для облачных хранилищ должен быть того же уровня, что и основной домен для сервисов. То есть если основной домен третьего уровня, то и домен для хранилищ будет третьего уровня, если основной четвертого — то и домен для хранилищ четвертого, и так далее. В нашем примере это mail-st.onprem.ru.
Все остальные перечисленные ниже домены будут поддоменами этих двух доменов.
Далее в таблицах представлен список A- или CNAME-записей, которые нужно создать перед установкой сервиса Почта. Домены из таблиц должны являться поддоменами для двух основных.
Для почты:
Как создается домен: account (субдомен из таблицы) + mail.onprem.ru (основной домен из примера, который вы замените своим) = account.mail.onprem.ru.
Назначение домена | Имя домена | Пример |
|---|---|---|
Веб-интерфейс авторизации | account | account.mail.onprem.ru |
Домен для проверки доступа | access | access.mail.onprem.ru |
Домен для аккаунт-сервиса | as | as.mail.onprem.ru |
Скачивание вложений Почты | af | af.mail.onprem.ru |
Просмотр вложений Почты | apf | apf.mail.onprem.ru |
Доменная авторизация (внутренних запросов браузера) | auth | auth.mail.onprem.ru |
Домен для панели расширенного просмотра действий пользователей | becca | becca.mail.onprem.ru |
Интерфейс администрирования | biz | biz.mail.onprem.ru |
Blobcloud-аттачи | blobcloud.e | blobcloud.e.mail.onprem.ru |
Домен для BMW gRPC запросов | bmw | bmw.mail.onprem.ru |
Капча | c | c.mail.onprem.ru |
Календарь | calendar | calendar.mail.onprem.ru |
Домен интерфейса календаря для VK Teams | calendarmsg | calendarmsg.mail.onprem.ru |
Домен для gRPC-запросов Календаря | calendargrpc | calendargrpc.mail.onprem.ru |
Мобильный календарь | shared.calendartouch | shared.calendartouch.mail.onprem.ru |
Статические данные календаря | shared.calendarx | shared.calendarx.mail.onprem.ru |
VK WorkDisk | cloud | cloud.mail.onprem.ru |
Загрузка файлов в VK WorkDisk | cld-uploader.cloud | cld-uploader.cloud.mail.onprem.ru |
Скачивание файлов в веб-интерфейсе VK WorkDisk | cloclo.cloud | cloclo.cloud.mail.onprem.ru |
Загрузка файлов в VK WorkDisk | cloclo-upload.cloud | cloclo-upload.cloud.mail.onprem.ru |
Интеграция с API VK WorkDisk | openapi.cloud | openapi.cloud.mail.onprem.ru |
Загрузка файлов в публичные папки в VK WorkDisk | pu.cloud | pu.cloud.mail.onprem.ru |
Портальная авторизация VK WorkDisk | sdc.cloud | sdc.cloud.mail.onprem.ru |
Загрузка больших почтовых вложений в VK WorkDisk | uploader.e | uploader.e.mail.onprem.ru |
Превью файлов в VK WorkDisk | thumb.cloud | thumb.cloud.mail.onprem.ru |
Веб-интерфейс Почты | e | e.mail.onprem.ru |
Сервис аватарок | filin | filin.mail.onprem.ru |
IMAP Почты | imap | imap.mail.onprem.ru |
Неисполняемые статические данные | img | img.mail.onprem.ru |
Исполняемые статические данные | imgs | imgs.mail.onprem.ru |
MX Почты | mxs | mxs.mail.onprem.ru |
OAUTH2-авторизация | o2 | o2.mail.onprem.ru |
Общепортальные сервисы авторизации | portal | portal.mail.onprem.ru |
POP3 Почты | pop | pop.mail.onprem.ru |
SMTP Почты | smtp | smtp.mail.onprem.ru |
Сервер авторизации (межсерверные запросы) | swa | swa.mail.onprem.ru |
Webdav | webdav.cloud | webdav.cloud.mail.onprem.ru |
Доска VK Workspace | board | board.mail.onprem.ru |
Серверное взаимодействие с Диском VK WorkSpace | cloud-serverside-api | cloud-serverside-api.mail.onprem.ru |
Серверное взаимодействие с Почтой VK WorkSpace | serverside-api | serverside-api.mail.onprem.ru |
Сохранение файлов из Мессенджера и ВКС в Диск VK WorkSpace | cloclo-int | cloclo-int.mail.onprem.ru |
Домен для скачивания супераппа VK WorkSpace | dl | dl.mail.onprem.ru |
Адрес клиентского API Мессенджера и ВКС | u | u.mail.onprem.ru |
Для хранилищ:
Как создается домен: tmpatt (субдомен из таблицы) + mail-st.onprem.ru (основной домен из примера, который вы замените своим) = tmpatt.mail-st.onprem.ru.
Назначение домена | Имя домена | Пример |
|---|---|---|
Скачивание исполняемых вложений Почты | af | af.mail-st.onprem.ru |
Проксирование активного контента вложений Почты | ampproxy | ampproxy.mail-st.onprem.ru |
Просмотр исполняемых вложений Почты | apf | apf.mail-st.onprem.ru |
Защита от XSS-атак при скачивании файлов из VK WorkDisk | cloclo | cloclo.mail-st.onprem.ru |
Скачивание больших почтовых вложений из VK WorkDisk | cloclo-stock | cloclo-stock.mail-st.onprem.ru |
Распаковка архивов в интерфейсе VK WorkDisk | cld-unzipper | cld-unzipper.mail-st.onprem.ru |
Интеграция с API Почты | corsapi | corsapi.mail-st.onprem.ru |
Проксирование внешних вложений Почты | proxy | proxy.mail-st.onprem.ru |
Домен для текстового редактора Р7-Офис | docs | docs.mail-st.onprem.ru |
Облако, реализующее S3 API | hb | hb.mail-st.onprem.ru |
Облако временных вложений Почты | tmpatt | tmpatt.mail-st.onprem.ru |
Домен для Grafana | grafana | grafana.mail-st.onprem.ru |
Один wildcard-сертификат охватывает только один уровень поддоменов. Это означает, что wildcard-сертификат выпущенный для domain.ru будет действительным для всех его субдоменов третьего уровня, но не будет работать для четвертого. Соответственно если необходима защита поддоменов четвертого и далее уровней нужно получить отдельный wildcard-сертификат для родительского домена каждого из них. Например, домен для почты mail.onprem.ru, а домен для хранилища mail-st.onprem.ru, тогда в сертификат необходимо добавить шесть доменов:
*.mail.onprem.ru*.e.mail.onprem.ru*.cloud.mail.onprem.ru*.calendartouch.mail.onprem.ru*.calendarx.mail.onprem.ru*.mail-st.onprem.ru
Поддерживаемые операционные системы для установки Почты:
- Astra Linux SE Орел — версия 1.7.5+, версия ядра — 5.15.
- Astra Linux SE Орел — версия 1.8, версия ядра — 6.1.
- РЕД ОС — версия 7.3.5, версия ядра — 6.1.
- РЕД ОС — версия 7.3с (сертифицированная), версия ядра — 6.1.
- РЕД ОС — версия 8, версия ядра — 6.6 или 6.12.
Архитектура системы — x86_64.
Отключите файл подкачки swap.
Отключите службу аудита auditd — включенный аудит может создавать значительную нагрузку на серверы.
Разнесите разделы ниже по разным точкам монтирования:
/boot;/;/home;/var/log;/var/lib/docker;/opt;/tmp.
-
Создайте файл
/etc/sysctl.d/98-vkworkspace.confс настройками sysctl:kernel.pid_max=4194304net.ipv4.tcp_tw_reuse=1net.netfilter.nf_conntrack_tcp_timeout_time_wait=3net.netfilter.nf_conntrack_tcp_timeout_fin_wait=5net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1net.ipv6.conf.lo.disable_ipv6=1net.netfilter.nf_conntrack_max=4194304net.ipv4.tcp_syncookies=1net.ipv4.ip_forward=1 -
Создайте файл
/etc/security/limits.d/98-vkworkspace-limits.confс настройками лимитов:* hard nofile 1048576* soft nofile 131072* hard nproc 257053* soft nproc 131072root hard nofile 1048576root soft nofile 262144root hard nproc 514106root soft nproc 262144 -
Примените изменения:
sysctl -p /etc/sysctl.d/98-vkworkspace.confsysctl --systemИли перезагрузите операционную систему.
На каждом сервере проверьте текущее состояние SELinux:
sestatus
Параметр SELinux status должен иметь значение disabled. Если выводится другое значение:
- Откройте для редактирования файл
/etc/selinux/config. - Измените значение параметра
SELINUXнаdisabled. - Перезагрузите операционную систему.
- Повторно проверьте состояние SELinux с помощью команды
sestatus. - Параметр SELinux status должен иметь значение disabled. SELinux будет отключен.
В файле /etc/ssh/sshd_config разрешите перенаправление по протоколу TCP:
AllowTcpForwarding yes
Опцию можно открыть только для группы пользователей deployer:
AllowTcpForwarding noMatch Group workspace-deployersAllowTcpForwarding local
Чтобы создать группу выполните:
sudo groupadd workspace-deployerssudo usermod -aG workspace-deployers deployer
Параметр MaxSessions по умолчанию равен 10 — уменьшать его нельзя.
На уровне ОС не должно быть запретов на создание IP forward. Проверить можно с помощью команды:
cat /proc/sys/net/ipv4/ip_forward
Если параметр неактивен, задайте параметр ядра net.ipv4.ip_forward=1.
Выполните шаги из инструкции Как настроить ротацию логов в journald.
На всех машинах проверьте антивирусное решение и выполните следующие настройки:
- Добавьте в исключения:
/opt/mailOnPremise— данные приложений, логи, БД, хранилища. Нельзя детализировать файлы и подкаталоги, нужно добавить весь каталог/opt/mailOnPremiseв исключения./home/deployer/— данные для инсталлятора, установка обновлений.- Диски для хранилища.
/var/lib/docker/.
- Отключите проверку контейнеров:
ScanContainers: No, ContainerNameMask: *. - Не настраивайте firewall на следующие сетевые интерфейсы:
- cali*
- docker*
- wireguard*
- tun*
- Добавьте в исключения публичные порты из раздела Протоколы и порты.
- Если вы используете KESL, то на серверах для сервисов контейнеризации отключите задачи по защите от веб-угроз и защите от сетевых угроз.
Все сервера должны быть синхронизированы с одним сервером NTP. Этим обеспечивается отсутствие значимой разницы во времени между серверами в кластере.
InfraKit — это инструмент для автоматической проверки состояния серверов, сетевой связности и доступности сервисов перед установкой программного обеспечения (режим install) и после нее (режим post_install).
Начиная с версии 26.1 используйте InfraKit для проверок серверов, где запущен VK WorkSpace. Файлы InfraKit расположены на гипервизоре monitoring:
- Запускаемый файл —
/home/deployer/configs/infrakit/infrakit-bin - Файл конфигурации —
/home/deployer/configs/infrakit/project-spec.yaml
Логика проверок описывается в YAML-файле (обычно project-specific.yml). Файл содержит описание классов проверок, список хостов и общие настройки выполнения.
- Deploy-нода (установщик) — это узел, с которого запускается InfraKit. Он управляет процессом, подключается к целевым хостам по SSH и собирает результаты.
- Агенты — установщик копирует бинарный файл InfraKit на целевые хосты и запускает его в режиме
--agent. Агенты выполняют проверки локально и отправляют результаты обратно на установщик через HTTP API.
Флаг | Описание |
|---|---|
--project-specific <file.yml> | Обязательный. Путь к файлу спецификации проекта |
-c <config.yml> | Путь к основному файлу конфигурации InfraKit. Пример файла конфигурации |
--infrakit.url <url> | Адрес установщика, например http://10.0.0.1:5555. Сюда обращаются агенты |
--infrakit.bind <addr:port> | Адрес и порт, на которых слушает установщик. По умолчанию 0.0.0.0:5555 |
--infrakit.log syslog | Запись логов в syslog |
--infrakit.ssh.user | Пользователь для SSH-подключения |
--infrakit.ssh.key | Путь к приватному SSH-ключу |
--infrakit.ssh.key_pass | Пароль для расшифровки SSH-ключа |
--mode <install/post_install> | Режим работы: install (перед установкой) или post_install (после установки) |
--agent | Запуск InfraKit в режиме агента на удаленном хосте |
--daemon | Режим демона. Не завершает работу после проверок, обрабатывает HTTP-запросы |
--log-level <debug/info/warn/error> | Уровень логирования: debug, info, warn, error |
--show-details | Показ детального лога выполнения (без прогресс-бара) |
--render-only | Показ итогового плана проверок (с учетом наследований) и выход |
--render-hosts | Показ списка всех хостов и выход |
--render-output <file> | Сохранение результата рендеринга в файл. Если не указано — в лог |
Имя all зарезервировано. Требования из этого класса действуют для всех хостов, указанных в конфигурации. Используйте его для общих настроек операционной системы, ядра или безопасности.
classes:all:os:distribution: "redos"sudo:passwordless: true
Ключевое слово extends строит иерархию требований. Это избавляет от дублирования и показывает специализацию серверов.
Пример явного наследования:
classes:# Базовый набор характеристик для любого сервераbase-node:os:distribution: "centos"min_version: "7.9"cpu:min_cores: 2memory:total: "4Gb"# Специализация: сервер базы данныхdb-server:hosts: ["10.0.0.10", "10.0.0.11"]extends: ["base-node"] # Наследует все из base-nodestorage:- mount_point: "/var/lib/postgresql"min_free: "100Gb"# Специализация: API шлюзapi-gateway:hosts: ["10.0.0.20"]extends: ["base-node"]ports:- protocol: "tcp"ports: [80, 443]
Поле hosts поддерживает два способа описания целевых узлов:
-
Простой формат (список строк) — используется массив IP-адресов или доменных имен. В этом случае для подключения применяются настройки по умолчанию, заданные через флаги командной строки (
--infrakit.ssh.user,--infrakit.ssh.key) или в файле конфигурации.hosts: ["10.0.0.1", "10.0.0.2", "app-server.local"] -
Расширенный формат (список объектов) — позволяет гибко переопределить параметры подключения для конкретных серверов.
hosts:- ip: "10.0.0.5" # IP-адрес или доменное имя хостаssh_user: "deploy" # Имя пользователяssh_key: "/home/infrakit/.ssh/id_rsa" # Путь к приватному SSH-ключуssh_key_pass: "my_secure_pass" # Пароль для расшифровки ключа- ip: "db-node-01"ssh_user: "root"
В YAML-файле проекта можно задать глобальные настройки выполнения проверок, отчетности и логирования. Эти параметры указываются в корневом объекте execution.
execution:performance:max_check_duration: 30s # Максимальное время выполнения одной проверкиparallel_hosts: 10 # Количество хостов, опрашиваемых параллельноretry_count: 3 # Количество повторных попыток при сбоях сетиretry_delay: 5s # Задержка между повторными попыткамиoutput:format: "text" # Формат отчета: text, json, csvlanguage: "eng" # Язык отчета: en/eng или ruoutput_file: "output.txt" # Путь для сохранения финального отчетаcolor_enabled: true # Включить цвета в терминале (для text)detailed_recommendations: true # Выводить советы по исправлению ошибокlogging:level: "info" # Уровень логирования: debug, info, warn, errorfile: "/tmp/infrakit.log" # Файл для записи логов работы
format— определяет вид итогового отчета. Поддерживаютсяtext(для чтения человеком),json(для парсинга системами) иcsv(для таблиц).language— язык, на котором будут написаны сообщения об ошибках и рекомендации. Доступны английский (en,eng) и русский (ru).output_file— если указан путь к файлу, итоговый отчет будет записан в него. Если поле пустое, отчет выводится в стандартный поток вывода после завершения всех проверок.
file— если указан путь к лог-файлу, все сообщения о процессе работы (подключения, запуск агентов, промежуточные статусы) будут писаться в этот файл.
Помимо флагов командной строки, параметры InfraKit можно задать в файле конфигурации. Использование ключа -c позволяет компактно передать все настройки SSH, сетевые адреса и параметры логирования.
easygo:http:stat:response_code: falseresponse_size: falsetime: falsetimings:stat: truelog: falsestat:enable_log: falseenable_graphite: falsegraphite:addr: "127.0.0.1:2004"prefix: "infrakit"network_type: "tcp"infrakit:bind: "0.0.0.0:5555"url: "http://192.168.100.5:5555"log:syslog: falsessh:user: "cloud-user"key: "/home/cloud-user/.ssh/id_rsa"
Хосты могут входить в несколько классов одновременно или наследовать проверки через поле extends.
- Объединение (Merge) — если для одного и того же хоста заданы проверки в разных классах, InfraKit объединит их в один общий список задач для этого узла.
- Уникальность — дубликаты проверок одного типа (например, два требования к объему RAM) фильтруются, чтобы избежать повторного выполнения.
Если вы хотите запустить проверки на узле, с которого ведется установка, укажите его IP-адрес в параметре --infrakit.url при запуске. Добавьте этот IP в список hosts нужного класса в файле спецификации (YAML).
InfraKit автоматически определит, что IP хоста совпадает с его собственным, и выполнит проверки локально, без использования SSH. В интерфейсе такие проверки будут помечены как (deployer).
По умолчанию InfraKit отображает индикаторы выполнения (Progress Bars) для каждого хоста. Это позволяет наглядно отслеживать количество успешно выполненных и проваленных проверок в реальном времени.
Если вы хотите видеть детальный лог выполнения каждой проверки вместо графических индикаторов, используйте флаг --show-details
При этом вывод будет текстовым, что удобно для отладки или запуска в системах CI/CD, где интерактивный терминал недоступен.
- Чтение конфигурации — программа парсит YAML, разрешает зависимости классов и формирует список задач для каждого хоста.
- Проверка уникальности — проверяется, что хосты не указаны одновременно как по IP, так и по Hostname.
- Инъекция (Injection) — установщик подключается по SSH к каждому узлу, проверяет наличие
sudoбез пароля и копирует бинарный файл InfraKit. - Запуск Агентов — на удаленных хостах запускается процесс
infrakit --agent. - Выполнение — агенты выполняют проверки (CPU, Disk, Net и т.д.) и рапортуют о статусе.
- Сбор отчетов — установщик консолидирует данные и формирует финальный отчет в заданном формате (Text, JSON или CSV).
- SSH-права — убедитесь, что пользователю, указанному в
--infrakit.ssh.user, разрешен запускsudoбез ввода пароля (NOPASSWD). Это критическое требование для работы агента. - Сетевые порты — если вы проверяете сетевую связность (
connectivity) или скорость (iperf), InfraKit автоматически поднимает временные «эхо-серверы» на целевых портах. Убедитесь, что эти порты не заняты другими процессами и открыты в Firewall. - IP / Hostname — рекомендуется использовать единообразный способ именования хостов во всем файле. Использование одного и того же сервера по IP в одном месте и по Hostname в другом может привести к конфликтам.
-
Откройте файл
/home/deployer/configs/infrakit/project-spec.yaml. Впишите в него IP-адреса соответствующих гипервизоров. -
Обеспечьте возможность открытия SSH-сессии с гипервизора
monitoringна остальные гипервизоры. Используйте SSH-ключ для пользователяdeployer. -
Запустите InfraKit от имени пользователя
deployerкомандой:/home/deployer/configs/infrakit/infrakit-bin --project-specific /home/deployer/configs/infrakit/project-spec.yaml --infrakit.bind 0.0.0.0:5555 --infrakit.url 100.70.178.76Аргументом для параметра
infrakit.urlдолжен быть внешний адрес гипервизора, на котором происходит запуск--infrakit.url 100.70.178.76 -
Результат проверок будет записан в файл, путь к которому указан в секции
execution.output.output_fileконфигурационного файла:execution:output:output_file: <путь_к_файлу>Пример результата:
{"total_hosts": 3,"total_checks": 80,"hosts": [{"host": "100.70.177.139","checks": [{"check_name": "cpu cores","description": "Количество ядер ЦПУ: Текущее 2 сокетов, 16 ядер (16 потоков) | Ожидается 8 ядер (0 потоков)","status": "Успех"},...