Требования к инфраструктуре Доски 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.
Некоторые компоненты инфраструктуры не входят в состав поставки и обеспечиваются силами заказчика:
- Балансировщик входящего трафика — распределяет входящие соединения между серверами инсталляции.
- 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 |
- Требования к отказоустойчивости решения приведены в документе Обеспечение отказоустойчивости 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% |
Требования к производительности разделов — не менее 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 Гбит/с.
-
Пропускная способность для клиентских подключений определяется экспериментально на уровне веб-интерфейса, исходя из приемлемой для пользователя скорости.
- HTTPS для доступа к веб-интерфейсу Доски с использованием TLS.
- Kerberos или NTLM — протокол взаимодействия с Active Directory клиента.
- IP in IP — протокол туннелирования IP.
Чтобы обеспечить безопасность Доски, на ваших серверах должны быть доступны только необходимые порты. Для доступа к веб-интерфейсу: 80 (http), 443 (https). Вы должны сами определить, с каких IP-адресов будут доступны порты.
- Порты для пользователей: 25, 80, 143, 443, 465, 993, 1025. При кластерной установке дополнительно нужен порт 2525.
- Административные порты: 22, 8888*, 5555.
Порт 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 подключения | Onpremise-deployer |
TCP | 179 | Bird | Calico. Работа BGP сессиий | _______ | Между всеми серверами системы |
TCP | 8888 | onpremise-deployer | Приложения для установки и начальной настройки VK WorkSpace | Подключение администраторов | Администраторы |
TCP | 5555 | infrakit | Инструмент проверки состояния серверов, сетевой связности и доступности сервисов до и после установки | HTTP API установщика: агенты InfraKit отправляют на него результаты проверок | Все машины инсталляции |
UDP | 2003 | carbclick | Сервис, который принимает метрики и передает их в clickhouse | Прием метрик | Любые контейнеры |
TCP | 443 | pub | nginx, обслуживающий https-трафик | Доступ к веб-интерфейсу | Веб-клиенты |
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.
Для работы Доски нужен набор A- или CNAME-записей.
Выберите домен, на котором будут доступны пользовательский и административный интерфейсы VK WorkSpace. Например, если выбран домен onprem.ru, то интерфейсы будут доступны по адресам:
https://board.onprem.ru— Доска VK WorkSpace.https://biz.onprem.ru— панель администратора.
Также нужен домен для облачных хранилищ — установщик запрашивает его на шаге «Доменные имена». Домен для облачных хранилищ должен быть того же уровня, что и основной домен для сервисов. То есть если основной домен второго уровня, то и домен для хранилищ будет второго уровня, если основной третьего — то и домен для хранилищ третьего, и так далее. В нашем примере это onprem-st.ru.
Все остальные перечисленные ниже домены будут поддоменами этих двух доменов.
Далее в таблицах представлен список A- или CNAME-записей, которые нужно создать перед установкой Доски. Домены из таблиц должны являться поддоменами для двух основных.
Для Доски:
Как создается домен: account (субдомен из таблицы) + onprem.ru (основной домен из примера, который вы замените своим) = account.onprem.ru.
Назначение домена | Имя домена | Пример |
|---|---|---|
Домен для проверки доступа | access | access.onprem.ru |
Веб-интерфейс авторизации | account | account.onprem.ru |
Доменная авторизация (внутренние запросы браузера) | auth | auth.onprem.ru |
Интерфейс администрирования | biz | biz.onprem.ru |
Капча | c | c.onprem.ru |
Скачивание супераппа VK WorkSpace | dl | dl.onprem.ru |
Сервис аватарок | filin | filin.onprem.ru |
Исполняемые статические данные | imgs | imgs.onprem.ru |
OAUTH2-авторизация | o2 | o2.onprem.ru |
Общепортальные сервисы авторизации | portal | portal.onprem.ru |
Домен для server side взаимодействия с Почтой VK WorkSpace | serverside-api | serverside-api.onprem.ru |
Сервер авторизации (межсерверные запросы) | swa | swa.onprem.ru |
Адрес клиентского API Мессенджера и ВКС | u | u.onprem.ru |
Основной домен Доски | board | board.onprem.ru |
Для хранилищ:
Как создается домен: hb (субдомен из таблицы) + onprem-st.ru (домен для хранилищ из примера, который вы замените своим) = hb.onprem-st.ru.
Назначение домена | Имя домена | Пример |
|---|---|---|
Интеграция с API Почты VK WorkSpace | corsapi | corsapi.onprem-st.ru |
Домен для облака, реализующего API S3 | hb | hb.onprem-st.ru |
Один wildcard-сертификат охватывает только один уровень поддоменов. Это означает, что wildcard-сертификат выпущенный для domain.ru будет действительным для всех его субдоменов третьего уровня, но не будет работать для четвертого. Соответственно если необходима защита поддоменов четвертого и далее уровней нужно получить отдельный wildcard-сертификат для родительского домена каждого из них. Например, основной домен для Доски onprem.ru, а домен для хранилищ onprem-st.ru, тогда в сертификат необходимо добавить два домена:
*.onprem.ru*.onprem-st.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. Этим обеспечивается отсутствие значимой разницы во времени между серверами в кластере.
Настройте NTP на серверах в соответствии с рекомендациями к используемой ОС: РЕД ОС или Astra Linux.
Для проверки инфраструктуры используйте InfraKit — инструмент для автоматической проверки состояния серверов, сетевой связности и доступности сервисов перед установкой программного обеспечения (режим install) и после нее (режим post_install).
Файлы InfraKit расположены на гипервизоре monitoring:
- Запускаемый файл —
/home/deployer/configs/infrakit/infrakit-bin - Файл конфигурации —
/home/deployer/configs/infrakit/project-spec.yaml
Флаги командной строки, особенности настройки YAML-спецификации и пример запуска InfraKit описаны в разделе Как проверить инфраструктуру документа «Требования к инфраструктуре Почты VK WorkSpace».