Установка Мессенджера версии 26.2
Назначение документа
В инструкции описана установка Мессенджера на одну виртуальную машину (standalone) и установка распределенной инсталляции. Процесс установки двух видов инсталляций практически идентичен и имеет незначительные отличия, которые выделены по тексту инструкции.
В документе описана процедура установки Мессенджера в минимальной рабочей конфигурации. Дополнительные настройки и интеграции настраиваются после установки.
Документ предназначен для использования администраторами организации.
Дополнительная документация
Инструкция по интеграции с контроллером домена по протоколу LDAP — в документе описано управление параметрами синхронизации LDAP.
Управление пользователями без контроллера домена — в документе описано управление пользователями без контроллера домена.
Инструкция по установке обновлений — в документе прописано обновление Мессенджера до новой версии.
Архитектура и описание системы — в документе описана архитектура инсталляции на одну виртуальную машину, кластерной инсталляции, возможные интеграции со сторонними сервисами, а также технические данные и требования. Не является частью публичной документации, обратитесь к представителю VK Tech, чтобы ознакомиться с документом.
Компоненты инфраструктуры Мессенджера
Все компоненты должны быть реализованы посредством корпоративной инфраструктуры Заказчика. Доступы к данным ресурсам должны быть открыты.
Обязательные компоненты
-
Виртуальные машины.
Для standalone-инсталляции вам понадобится 2 виртуальные машины под:
-
Мессенджер.
-
Регистри и установщик VK WorkSpace.
Минимальный размер распределенной инсталляции — 2 шарда (4 вычислительных узла. ноды), максимальный не ограничен. Для инсталляции из 4 нод вам понадобится 5 виртуальных машин:
- 4 машины под ноды Мессенджера.
- 1 машина регистри и установщик VK WorkSpace.
Примечание
Всегда выделяйте отдельную виртуальную машину под регистри/установщик.
-
-
HTTP LoadBalancer. Для распределенной инсталляции — L7-балансировщик.
-
МСЭ — межсетевой экран.
-
Сервер NTP — используется для синхронизации времени. Может быть использован как публичный (если нет сложностей с прохождением сетевых фильтров), так и ваш собственный сервер.
- Сервер SMTP — авторизация пользователей в Мессенджере выполняется с помощью одноразовых кодов (OTP via email). Для доставки писем с одноразовыми кодами необходим SMTP-сервер, на котором разрешена отправка почтовых сообщений для данной виртуальной машины — без авторизации и блокировки антиспам-системой. Может быть использован как публичный, так и ваш собственный сервер.
- Сервер DNS — используется для преобразования имен в IP-адреса и обратно, предоставляется заказчиком. Может быть использован как публичный, так и ваш собственный сервер.
- Push-сервисы — внешние сервисы Apple и Google для отправки push-сообщений на мобильные платформы. Расположены во внешнем периметре. Серверу Мессенджера требуются исходящие соединения к этим сервисам и не требуются входящие соединения.
- Суперапп VK WorkSpace — пользовательское приложение, установленное на одной из допустимых платформ. Сервер Мессенджера должен иметь возможность принимать входящие сообщения от этого приложения, а также отправлять ответы. Основное взаимодействие осуществляется через протокол HTTPS (443/TCP). Для работы видео- и аудиозвонков необходимы протоколы STUN и TURN: входящие соединения на порты 3478/TCP и 3478/UDP, а также входящий и исходящий трафик UDP по портам 1024+ (RTP-трафик).
Опциональные компоненты
-
WAF — осуществляет фильтрацию входящего HTTP-трафика, а также акселерацию SSL-трафика.
-
DLP — смстема для предотвращения утечки данных.
-
Антивирус — используется для проверки файлов на вирусы.
-
LDAP-сервер — используется для получения списка пользователей в системе. Мессенджер может обслуживать как пользователей, заведенных в LDAP заказчика, так и внутренних пользователей. Интеграция с LDAP не является обязательным условием, но очень удобна для тех, кто имеет внутренний LDAP, например MS Active Directory.
Мессенджер может работать как обособленно, так и в связке с корпоративным LDAP-сервером.
Вы можете указать настройки для соединения с LDAP-сервером (при его наличии) во время инсталляции или после ее завершения.
Информация по управлению параметрами синхронизации LDAP после установки Мессенджера представлена в документе Инструкция по интеграции с контроллером домена по протоколу LDAP.
Если настройки для соединения с LDAP-сервером производятся в момент инсталляции, Вам необходимы:
- Доступ к LDAP-серверу.
- Настройки для соединения с LDAP-сервером: bind_dn, user_dn, url, password, CA-сертификат.
- Название группы пользователей, которым будет доступно окружение администратора. Название группы будет использовано при настройке доступа к окружению администратора.
Возможна работа без LDAP, с добавлением пользователей вручную (подробнее см. Управление пользователями без контроллера домена).
Технические требования
Требования к вычислительным ресурсам
В случае распределенной инсталляции требования к вычислительным ресурсам (виртуальным машинам) для продуктивной среды рассчитываются индивидуально для Заказчика. Свяжитесь с представителями VK для помощи с расчетом сайзинга.
Требования к standalone-инсталляции представлены ниже.
Для виртуальной машины под регистри и установщик VK WorkSpace
Минимальный рекомендуемый объем памяти SSD — 300 ГБ.
vCPU — 4.
RAM — 4 ГБ.
Для виртуальной машины под Мессенджер
Минимальные требования к серверу в зависимости от количества пользователей:
| Количество пользователей | vCPU | RAM, ГБ | SSD, ГБ | S3, ГБ / год |
|---|---|---|---|---|
| Тестовая установка | ||||
| 1 000 | 22 | 56 | 400: root 150 ГБ data 250 ГБ |
- |
| Продуктивная установка | ||||
| От 1 до 1 500 | 22 | 56 | 400: root 150 ГБ data 250 ГБ |
500 |
Минимальные требования к SSD-дискам:
| Операций чтения, IOPS | Операций записи, IOPS | Максимальная задержка операции, мс |
|---|---|---|
| 10 000 | 5 000 | < 1 |
Если планируется настройка Федерации, добавьте на серверы каждой инсталляции дополнительные вычислительные ресурсы:
- 10% от имеющихся мощностей vCPU
- 1 ГБ SSD
- 2 ГБ RAM на каждую тысячу федеративных пользователей. Ожидаемый прирост RAM — около 1 ГБ в год в зависимости от количества сообщений федерации
Как использовать системы виртуализации
vCPU
Обязательная поддержка Time Stamp Counter (TSC). Проверить наличие можно поиском флага constant_tsc в /proc/cpuinfo. Любой современный процессор поддерживает эту технологию, однако иногда этого регистра нет внутри виртуальной машины. В этом случае необходимо правильно настроить систему виртуализации.
Не допускайте переподписку. Суммарные vCPU на хосте не должны превышать количество физических ядер, выделенных всем виртуальным машинам. При этом не рекомендуется считать Hyper-Threading полноценными ядрами.
Не выделяйте одной виртуальной машине количество ядер больше, чем количество ядер на физическом сокете.
RAM
Не назначайте суммарную vRAM выше физической RAM хоста.
Механизмы экономии памяти
Не включайте механизмы ballooning и сжатия памяти.
swap
Не используйте swap — как на гипервизоре, так и внутри виртуальных машин.
Резервирования ресурсов виртуальных машин
Устанавливайте всю выделенную память и процессоры в резерв для виртуальных машин системы.
Хранилище
Не используйте тонкие диски (диски типа Thin) — диски с отложенным выделением пространства на СХД.
Входящий трафик
TCP — 10 Гбит/с; UDP — 10 Гбит/с.
Поддерживаемые операционные системы
На виртуальных машинах под Мессенджер должна быть установлена РЕД ОС — версия 7.3с (сертифицированная), версия ядра — 6.1.
Требований к операционной системе для виртуальной машины под регистри/установщик не предъявляется.
Совместимость
- ПО VMware версий 6.х — 7.х.
- Любые системы виртуализации, основанные на KVM, например OpenStack.
- VK Cloud Solutions.
Требования к L7-балансировщику
Раздел актуален только для распределенной инсталляции.
Для публикации Мессенджера во внешней сети вы можете настроить промежуточный балансировщик нагрузки.
При использовании L7-балансировки необходимо ограничивать на уровне сети доступ к виртуальным машинам Мессенджера напрямую.
Входящий трафик в Мессенджера обеспечивается при помощи Istio Ingress, который доступен на портах 80 и 443 на нодах Kubernetes-кластера с метками im/ingress: "true" (далее ingress-ноды).
В случае кластера все ingress-ноды равноправны — каждая нода может обработать любой запрос, и трафик необходимо равномерно респределить по нодам.
Балансировщик должен проставлять следующие заголовки при проксировании запросов в Мессенджера:
- Host
- X-Real-IP — в этот заголовок должен записываться IP-адрес, откуда пришел запрос.
- X-CUSTOM-SSL-OFFLOAD и X-SSL-OFFLOAD — в эти заголовки должно записываться значение «1». Эти заголовки сигнализируют о том, что балансировщик терминирует SSL.
Также балансировщик должен обеспечивать таймауты на чтение с сервера не менее 60 секунд.
В случае терминации SSL-трафика на балансировщике сгенеририруйте и настройте сертификаты на балансировщике.
Пример конфигурации Nginx:
# Адреса ingress-нод Мессенджер и ВКС
upstream im-cluster {
server 192.168.0.1:80;
server 192.168.0.2:80;
server 192.168.0.3:80;
server 192.168.0.4:80;
}
# Конфигурация защищенного протокола работы
server {
# Домен, на котором вы публикуете Мессенджер и ВКС
server_name domain.company.ru *.domain.company.ru;
listen 443 http2 ssl;
access_log /var/log/nginx/domain.company.ru-access.log;
error_log /var/log/nginx/domain.company.ru-error.log;
# Путь до сертификатов SSL/TLS в формате x509, соответствующих указанным доменным именам
ssl_certificate /etc/nginx/ssl/domain.company.ru.crt;
ssl_certificate_key /etc/nginx/ssl/domain.company.ru.key;
# Настройка проксирования трафика
location / {
# Адреса нод VKTeams
proxy_pass http://im-cluster;
# Проброс заголовков
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-CUSTOM-SSL-OFFLOAD 1;
proxy_set_header X-SSL-OFFLOAD 1;
proxy_http_version 1.1;
proxy_set_header Connection "";
# Увеличение таймаутов на чтение
proxy_read_timeout 120s;
}
}
# Конфигурация редиректа на защищенный протокол
server {
server_name domain.company.ru *.domain.company.ru;
listen 80;
access_log /var/log/nginx/domain.company.ru-access.log;
error_log /var/log/nginx/domain.company.ru-error.log;
location / {
return 301 https://domain.company.ru$request_uri;
}
}
Предварительные действия перед установкой
Шаг 1. Настройте DNS-зону
Заведите в DNS-зоне:
-
Записи в DNS:
- Указывающую на кластер — *.vkt.domain.tld
- Указывающую на виртуальную машину в регистри — *.vkt.domain.tld
-
Имена хостов, которые будут смотреть на внешний IPv4 адрес. Список имен (CNAME либо A-записи на ваше усмотрение):
-
admin — адрес API управления Мессенджер и ВКС (административного веб интерфейса) и сервис Grafana.
-
akesadmin
-
api — API бота.
-
call — URL для формирования ссылок на звонки.
-
di — поддомен сервиса Keycloak для версий до 25.2.
-
dl — портал загрузки дистрибутивов (система автоматического обновления клиентских приложений).
-
files-n — оргструктура организаций.
-
kc — поддомен сервиса Keycloak для версии 25.2 и выше.
-
notp
-
outlook-plugin — плагин MS Outlook для создания конференций.
-
rapi
-
s — обмен стикерпаками.
-
stentor — адрес API Мессенджер и ВКС для добавления/удаления пользователей.
-
u — адрес клиентского API Мессенджер и ВКС.
-
ub — файловое API.
-
webim — веб-версия Мессенджер и ВКС.
-
Как создается домен: u (субдомен) + vkteams.example.com (основной домен, который вы замените своим) = u.vkteams.example.com.
Вариант 1.
Если есть возможность создания записи Wildcard CNAME в DNS, то можно создать A-запись, указывающую на адрес сервера Мессенджера, и запись Wildcard CNAME, указывающую на A-запись сервера Мессенджера.
$ host -t axfr example.com | grep vkteams
vkteams.example.com. 3600 IN A 172.27.59.10
*.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
Вариант 2.
Если нет возможности создания записи Wildcard CNAME в DNS, то можно создать A-запись, указывающую на адрес сервера Мессенджера, и отдельные записи CNAME, которые будут разрешаться на созданную A-запись. Записи CNAME должны соответствовать перечню имен, представленному выше.
$ host -t axfr example.com | grep vkteams
vkteams.example.com. 3600 IN A 172.27.59.10
admin.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
akesadmin.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
api.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
call.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
di.vkteams.example.com. 3600 IN CNAME vkteams.example.com. # только для версий до 25.2
dl.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
files-n.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
kc.vkteams.example.com. 3600 IN CNAME vkteams.example.com. # только для версии 25.2 и выше
notp.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
outlook-plugin.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
rapi.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
s.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
stentor.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
u.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
ub.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
webim.vkteams.example.com. 3600 IN CNAME vkteams.example.com.
Внимание
Не вносите изменения в etc/resolv.conf. Если изменения всё же необходимо внести, то первым должен быть указан хост 127.0.0.1.
Шаг 2. Выпустите SSL-сертификат
В целях безопасности используется SSL-шифрование, для работы Мессенджера необходимо выпустить SSL-сертификат.
Если вы используете сертификаты собственного центра сертификации, выпустите сертификат, который далее понадобится при установке Мессенджера. Используйте Wildcard-сертификат, например *.vkteams.<ваш домен>.com, или сертификат с указанием всех необходимых имен (см. раздел Настройки DNS-зоны).
Для SSL-сертификатов также можно использовать протокол ACME (поддерживается только провайдер Let`s Encrypt). В этом случае получение и продление сертификатов — автоматическое.
Как работать с Wildcard-сертификатами
Wildcard-сертификат защищает только один уровень поддоменов. Это значит, что wildcard-сертификат, выпущенный для domain.ru, будет действительным для всех его субдоменов третьего уровня, но не будет работать для четвертого. Соответственно, если необходима защита поддоменов четвертого уровня и далее, нужно получить отдельный wildcard-сертификат для родительского домена каждого из них.
То есть если сервер Мессенджера будет опубликован на vkteams.example.com, сертификат должен содержать либо *.vkteams.example.com, либо список всех CNAME, которые указаны для Мессенджера в DNS.
Шаг 3. Откройте доступы до внутренних ресурсов
Выполните данные настройки на всех виртуальных машинах, кроме машины под регистри/установщик.
Входящие соединения на стороне сервера Мессенджера
Открыть порты: 80/TCP, 443/TCP, 3478/TCP + UDP, UDP-порты выше 1024.
Исходящие соединения на стороне сервера Мессенджера
-
Откройте доступ для серверов отправки уведомлений. Необходимо обеспечить доступ к серверам Google и Apple для отправки и корректной работы push-уведомлений на мобильных платформах Android и iOS.
Сервер Apple
TCP 5223; 443; 2197
IP 17.0.0.0/8
Статья на сайте apple.comСервер Google
TCP 5228; 5229; 5230; 443
Информация на ipinfo.io
Статья на сайте google.comЕсли в вашей организации используются механизмы ограничения доступа сетевого трафика, убедитесь, что открыт доступ к следующим доменам (по HTTPS, порт 443):
fcm.googleapis.com
www.googleapis.com
oauth2.googleapis.com
accounts.google.com -
Откройте доступ до всех внутренних ресурсов: LDAP, NTP, SMTP, DNS и т.д.
Перед установкой обеспечьте роутинг исходящих соединений. Он необходим для отправки push-сообщений (через сервисы Apple, Google) и для работы голосовых и видео-звонков.
Шаг 4. IP-адрес
Перед началом установки необходимо определить, будет ли доступен сервис в интернете.
Если сервис не будет доступен в интернете, то необходимо использовать внутренний IP-адрес разворачиваемых виртуальных машин.
Если сервис будет доступен в интернете, необходимо использовать внешний IPv4 адрес разворачиваемых виртуальных машин. Внешний IPv4 адрес необходим на всех виртуальных машинах инсталляции, в том числе на машине под регистри/установщик. Адрес может быть поднят как внутри виртуальных машин, так и проброшен через NAT. Преобразование сетевых адресов (NAT) должно быть вида 1-в-1 (сеть в сеть), то есть с сохранением номера порта. Иначе видео и голосовые звонки могут не работать.
Предварительные условия для установки
Представители VK предоставили вам следующие данные:
-
Ссылку на скачивание дистрибутива Мессенджера, чартов и образов.
-
Пароль от архива с дистрибутивом.
-
Лицензионный ключ.
-
Комплект документации.
Также вам понадобится:
-
Доступ к портам: 22, 80, 443.
-
Утилита для распаковки zip-архивов, например 7-Zip или Unzip.
Установка Мессенджера
Весь процесс установки можно разделить на два этапа:
- Настройка виртуальных машин — производится в командной строке.
- Установка Мессенджера — производится в специальном веб-интерфейсе.
Настройте виртуальную машину под регистри и установщик VK WorkSpace
Шаг 1. Настройте виртуальную машину
Все команды выполняются под пользователем root.
-
Установите Wget и cURL:
-
Установите систему управления конфигурациями Ansible-core 2.11 и модуль OpenShift:
или
-
Выключите SELinux:
-
Установите rsync (опционально):
-
Выключите firewalld:
-
Перезагрузите виртуальную машину:
Шаг 2. Создайте пользователя deployer
В командной строке выполните последовательность команд:
useradd -G wheel -U -m -s /bin/bash deployer
DEPLOYER_PASSWORD=<ЗАДАТЬ ПАРОЛЬ ДЛЯ ПОЛЬЗОВАТЕЛЯ>
echo deployer:"$DEPLOYER_PASSWORD" | chpasswd
usermod -aG redos deployer
usermod -aG adm deployer
echo "deployer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-cloud-init-users
Внимание
Вся дальнейшая установка будет производиться под созданным пользователем deployer. Если вы планируете устанавливать под другим пользователем, это необходимо учитывать при дальнейшей установке. Учитывайте, что пользователь должен иметь права администратора.
Перелогиньтесь под пользователя deployer.
Шаг 3. Сгенерируйте SSH-ключ
Сгенерируйте SSH-ключ для доступа установщика к серверу Мессенджера:
su - deployer
ssh-keygen -t rsa -f "$HOME/.ssh/id_rsa"
cat .ssh/id_rsa.pub > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Приватная часть ключа будет использоваться при запуске установщика. Имя пользователя может быть другое, но пользователь должен иметь доступ к виртуальным машинам инсталляции.
Для корректной работы установщика в настройках SSH должен быть разрешен TCP Forwarding. Чтобы изменить настройку TCP Forwarding, нужно в файле /etc/ssh/sshd_config установить следующее значение:
Шаг 4. Распакуйте дистрибутив Мессенджера
Скачайте архив с установщиком в домашний каталог пользователя deployer и распакуйте его:
Внимание
После распаковки не удаляйте никакие файлы. По завершении установки допускается только удаление архива, из которого был распакован дистрибутив.
Шаг 5. Скачайте архивы с чартами и образами
Скачайте архивы с чартами и образами в каталог source в домашнем каталоге пользователя deployer:
Не распаковывайте.
Шаг 6. Проверьте наличие конфигурационных файлов Ansible
Проверить в домашнем каталоге пользователя deployer файлы ansible.cfg и .vault_password. Вывод не должен быть пустым:
ls -la | grep -E "*.*ansible.cfg|.vault"
-rw-r--r--. 1 deployer deployer 65 июн 11 14:08 ansible.cfg
-rw-r--r--. 1 deployer deployer 31 июн 11 14:08 .vault_password
Настройте виртуальную машину под Мессенджер
В случае распределенной инсталляции выполните данные настройки на всех нодах Мессенджера.
Шаг 1. Настройте операционную систему
Установите РЕД ОС — версия 7.3с (сертифицированная), версия ядра — 6.1. Пример настройки параметров ОС описан ниже.
Внимание
Установка данных параметров возможна только после консультации с вашими системными администраторами.
-
Создайте файл /etc/sysctl.d/98-vkworkspace.conf с настройками Sysctl:
-
Создайте файл /etc/security/limits.d/98-vkworkspace-limits.conf с настройками лимитов:
-
Внесите изменение в конфигурации /etc/systemd/system.conf:
-
Установите следующие пакеты из репозитория РЕД ОС 7.3, поставляемого с операционной системой:
- docker-ce-cli-20.10.24-1.el7.x86_64
- docker-ce-rootless-extras-20.10.24-1.el7.x86_64
- docker-ce-20.10.24-1.el7.x86_64
- docker-ce-20.10.24-1.el7.i686
- docker-compose-2.29.2-1.el7.x86_64
- docker-compose-switch-1.0.5-1.el7.x86_64
Установить пакеты можно с помощью команды:
-
Примените изменения:
Или перезагрузите операционную систему.
Шаг 2. Настройте виртуальную машину
-
Установите интерпретатор Python версии 3.
-
Выключите SELinux:
-
Установите rsync (опционально):
-
Выключите firewalld:
Шаг 3. Создайте пользователя deployer
-
В командной строке выполните последовательность команд:
useradd -G wheel -U -m -s /bin/bash deployer DEPLOYER_PASSWORD=<ЗАДАТЬ ПАРОЛЬ ДЛЯ ПОЛЬЗОВАТЕЛЯ> echo deployer:"$DEPLOYER_PASSWORD" | chpasswd usermod -aG redos deployer usermod -aG adm deployer echo "deployer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/90-cloud-init-usersВнимание
Вся дальнейшая установка будет производиться под созданным пользователем deployer. Если вы планируете устанавливать под другим пользователем, это необходимо учитывать при дальнейшей установке. Учитывайте, что пользователь должен иметь права администратора.
-
Выполните следующие команды под пользователем deployer в домашнем каталоге:
-
В файл .ssh/authorized_keys скопируйте публичную часть ключа — из файла id_rsa.pub на машине с установщиком/регистри у пользователя deployer.
-
Перезагрузите виртуальную машину:
Запустите установщик VK WorkSpace
Шаг 1. Запустите установщик как сервис
Установщик рекомендуется запускать как сервис. При таком запуске не придется прибегать к дополнительным мерам (screen, tmux, nohup), позволяющим установщику продолжить работу в случае потери соединения по SSH.
Важно
Для подключение администратора к веб-интерфейсу установщика используется порт 8888. Рекомендуется настроить защиту порта через firewall либо наложенными средствами (TLS-proxy). Не рекомендуется оставлять установщик включенным, если вы не проводите работы по установке и настройке системы. Запустили установщик → Провели установку → Выключили установщик. Если нужна донастройка системы, то снова включите установщик.
Чтобы запустить установщик как сервис, на виртуальной машине под установщик/регистри выполните команду:
sudo ./onpremise-deployer_linux -concurInstallLimit 5 \
-serviceEnable -serviceMake -serviceUser deployer
По умолчанию выставлен лимит в 5 потоков, при необходимости вы можете увеличить количество потоков до 10, однако это увеличит и нагрузку на систему. Использование более чем 10 потоков не рекомендуется.
Ответ в случае успешного запуска установщика выглядит следующим образом:
deployer.service was added/updates
see status: <systemctl status deployer.service>
can`t restart rsyslog services: [exit status 5]
OUT: Failed to restart rsyslog.service: Unit rsyslog.service not found.
deployer.service was enable and started
see status: <systemctl status deployer.service>
Примечание
Невозможность включения службы rsyslog не повлияет на корректность работы сервиса.
Далее выполните команды:
sudo ./onpremise-deployer_linux -serviceMake -serviceUser deployer
sudo systemctl daemon-reload
sudo systemctl enable deployer.service
sudo systemctl start deployer.service
Шаг 2. Перейдите в установщик
Перейдите в веб-интерфейс установщика — в адресной строке браузера укажите адрес http://server-ip-address:8888. Если перейти по этому адресу не удается, убедитесь, что firewall был отключен.
На стартовой странице нажмите на кнопку Установить.
Примечание
Если веб-интерфейс не открывается, проверьте журналы:
И убедитесь, что порт 8888 слушают:Шаг 3. Добавьте лицензионный ключ
Введите лицензионный ключ или выберите файл:
Нажмите Сохранить и Далее.
Шаг 4. Выберите продукт
-
В правом верхнем углу нажмите на значок i → Продукты.
-
В разделе VK WorkSpace включите флаг Мессенджер VK WorkSpace:
Нажмите на кнопку Далее.
-
В разделе Мессенджер включите флаг Внутренний репозиторий. Нажмите на кнопку Далее.
Шаг 5. Укажите сетевые настройки
Установщик автоматически вычисляет некоторые сетевые параметры. Эти параметры необходимо проверить и дополнить, если не все из них были определены.
-
Перейдите в раздел Настройки в верхнем меню, на вкладку Сети. Нажмите на иконку редактирования.
-
Укажите Подсеть, используемая VK WorkSpace на серверах. Убедитесь, что она имеет доступ на 80-й или 443-й порт.
-
Укажите Подсеть, используемая внутри контейнеров — 10.32.0.0/16.
-
В поле Список DNS-серверов... укажите DNS-сервер.
-
Нажмите на кнопку Сохранить и перейдите к следующему шагу.
Шаг 6. Укажите доменные имена
Подробную информацию о создании доменных имен вы найдете в разделе про настройку DNS-зоны.
Перейдите на вкладку Доменные имена.
Нажмите на иконку редактирования и заполните поля:
- Название вашей компании.
- Сайт вашей компании.
- Основной домен для сервисов.
- Домен для облачных хранилищ — укажите основной домен для сервисов.
- Использовать отдельный домен для Мессенджера — галку не ставьте.
Нажмите на кнопку Сохранить для перехода к следующему шагу.
После сохранения доменных имен появятся ошибки. Они пропадут после добавления SSL-сертификатов на следующем шаге.
Шаг 7. Добавьте SSL-сертификаты
-
На вкладке Доменные имена нажмите на кнопку Добавить сертификат под заголовком SSL-сертификаты.
-
В открывшейся форме введите сертификат и ключ. Их необходимо указать полностью, включая:
-----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----и-----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----. -
Нажмите на кнопку Сохранить.
Есть второй вариант:
- Нажмите на кнопку Выбрать файл.
- Укажите путь к файлу с сертификатом .crt.
- Укажите путь к файлу с ключом .key.
- Кликните по кнопке Сохранить.
Примечание
Приватный ключ должен быть добавлен в открытом виде, без секретной фразы. Закодированный ключ отличается от открытого наличием слова ENCRYPTED: BEGIN ENCRYPTED PRIVATE KEY.
Если всё верно, в интерфейсе не будет отображаться ошибок и красной подсветки. Нажмите на зеленую кнопку Далее.
Шаг 8. Добавьте сервер регистри/установщика
Добавьте в установщик виртуальную машину под установщик/регистри:
-
В левом верхнем углу нажмите на логотип VK WorkSpace.
-
Выберите Ручная настройка.
-
Далее нажмите Добавить → Сервер:
Откроется форма добавления сервера. Заполните поля:
-
IP-адрес — адрес виртуальной машины под установщик/регистри.
-
Имя сервера — укажите имя сервера или оставьте поле пустым.
-
Имя пользователя — укажите имя того пользователя, под которым запущен установщик. В рассматриваемом примере это пользователь deployer.
-
Добавьте SSH-ключ, сгенерированный на машине с установщиком — в поле Приватный ключ выберите Добавить новый ключ.
-
В поле Имя ключа введите название ключа для его дальнейшей идентификации, например: deployerRSA.
-
Перейдите в консоль, выполните команду
cat ~/.ssh/id_rsaи скопируйте ключ. -
Затем вставьте его в поле Приватный ключ. Его нужно указать полностью, включая:
-----BEGIN RSA PRIVATE KEY-----и-----END RSA PRIVATE KEY------
Поле Пароль ключа оставьте пустым.
-
Кликните по кнопке Добавить. Новый ключ должен отобразится в панели справа.
-
-
При необходимости настройте дополнительные поля:
- Пароль — необходимо ввести пароль пользователя, под которым запущен установщик, если он был задан при создании. Появляется, если в поле Приватный ключ выбрана опция Использовать авторизацию по паролю. Поле не заполняется при использовании приватного ключа.
- Пропустить проверку некритичных требований — если отметить чекбокс, будет пропущена проверка версии ядра и флагов процессора (sse2, avx). В большинстве случаев выбор чекбокса не требуется.
- Сервер во внешней (dmz) зоне — Оставьте чекбокс пустым.
-
Поле IP-адрес для голосового трафика оставьте пустым.
-
В поле Метки добавьте:
- server = ansible
- project = vkteams
-
Нажмите на кнопку Добавить сервер — сервер отобразится в веб-интерфейсе установщика. Если после добавления сервера под ним отображается уведомление «Не найден интерфейс для межсерверного взаимодействия», нажмите на иконку шестеренки напротив имени этого сервера и выберите интерфейс. Нажмите Обновить.
Шаг 9. Добавьте сервер Мессенджера
Добавьте в установщик виртуальную машину под Мессенджер. В случае распределенной инсталляции добавьте поочередно все виртуальные машины.
Инсталляция на одну виртуальную машину
Нажмите Добавить → Сервер. Откроется форма добавления сервера. Заполните поля:
-
IP-адрес — адрес виртуальной машины для Мессенджера.
-
В поле IP-адрес для голосового трафика укажите внешний IPv4 адрес, если сервис будет доступен в интернете.
-
В поле Метки добавьте:
- server = ansible
- project = vkteams
- group = raft
-
Остальные поля заполните по аналогии с добавлением сервера под установщик/регистри.
-
Нажмите на кнопку Добавить сервер — сервер отобразится в веб-интерфейсе установщика. Если после добавления сервера под ним отображается уведомление «Не найден интерфейс для межсерверного взаимодействия», нажмите на иконку шестеренки напротив имени этого сервера и выберите интерфейс. Нажмите Обновить.
Распределенная инсталляция
Топология распределенной инсталляции Мессенджера состоит из пар хостов. Внутри каждой пары происходит резервирование сервисов. В каждой паре есть сторона a и сторона b. Например, для первого хоста в паре сторона будет a, а для второго — b. И так для каждой пары. У каждой пары хостов есть номер. Например, для первых двух хостов это будет 1, для второй пары — 2, и т.д.
Пример топологии кластера из 4 хостов (2 шарда):
Пример топологии кластера из 6 хостов (3 шарда):
Пример топологии кластера из 10 хостов (5 шардов):
Если в распределенной инсталляции 4 ноды, вам необходимо добавить 4 сервера под ноды Мессенджера и 1 сервер под L7-балансировщик.
Нажмите Добавить → Сервер. Откроется форма добавления сервера. Заполните поля:
-
IP-адрес — адрес виртуальной машины для Мессенджера.
-
В поле IP-адрес для голосового трафика укажите внешний IPv4 адрес, если сервис будет доступен в интернете.
-
Для всех нод распределенной инсталляции добавьте метки:
- server = ansible
- project = vkteams
- group = raft
Для raft-нод добавьте метку group = raft.
Для каждой ноды укажите side (сторону) и pair (номер пары).
Пример меток для распределенной инсталляции из четырех нод:
Нода Метки vkteams-srv-1 server = ansible
project = vkteams
group = raft
side = a
pair = 01vkteams-srv-2 server = ansible
project = vkteams
group = raft
side = b
pair = 01vkteams-srv-3 server = ansible
project = vkteams
group = raft
side = a
pair = 02vkteams-srv-4 server = ansible
project = vkteams
side = b
pair = 02 -
Остальные поля заполните по аналогии с добавлением сервера под установщик/регистри.
- Нажмите на кнопку Добавить сервер — сервер отобразится в веб-интерфейсе установщика. Если после добавления сервера под ним отображается уведомление «Не найден интерфейс для межсерверного взаимодействия», нажмите на иконку шестеренки напротив имени этого сервера и выберите интерфейс. Нажмите Обновить.
Добавьте поочередно все виртуальные машины под ноды Мессенджера.
Шаг 10. Добавьте Ansible playbook
-
Нажмите Добавить → Несколько Ansible Playbook:
-
Выберите роль «ansible-vkteams-registry». Выберите гипервизор под регистри/установщик. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить:
Добавленная роль отобразится в разделе VK WorkSpace. Нажмите на запуск всех шагов (синяя стрелка):
-
Нажмите Добавить → Несколько Ansible Playbook. Выберите роль «ansible-vkteams-cluster».
Для standalone-установки выберите гипервизор под Мессенджер. Режим генерации — На одном из серверов. Нажмите на кнопку Добавить:
Для распределенной инсталляции выберите все гипервизоры, на которых будет развернут Мессенджер. Режим генерации — На каждом сервере. Нажмите на кнопку Добавить.
Добавленная роль отобразится в разделе VK WorkSpace. Нажмите на запуск всех шагов (синяя стрелка).
-
Аналогично добавьте роль «ansible-vkteams-puppet_modules».
Шаг 11. Укажите настройки LDAP
Если установка производится без связи с корпоративным LDAP-сервером или LDAP-сервер отсутствует, пропустите данный шаг. Описание процесса настройки интеграции с LDAP после установки представлено в документе Инструкция по интеграции с контроллером домена по протоколу LDAP.
Если вы хотите настроить LDAP-соединение, выполните шаги ниже.
Рекомендуется предварительно проверить корректность заданных конфигурационных параметров LDAP с помощью утилиты ldapsearch:
//установка клиента для подключения к AD
yum install openldap-clients -y
// проверка, что параметры подключения к AD валидны
ldapsearch -H <ldap_url> -w <ldap_password> -x -D
<ldap_bind_dn> -b <ldap_users_dn> mail=ldap-user-email@EXAMPLE.com
, где mail=ldap-user-email@EXAMPLE.com — почтовый ящик пользователя
Далее перейдите Проекты → vkteams → ldap:
Заполните все поля на форме:
Включите опцию Включить интеграцию с LDAP.
Имя LDAP-сервера уникально, может быть заведен только один сервер с определенным именем.
Фильтр для получения пользователей позволяет получать не всех пользователей из указанного дерева. По умолчанию выборка пользователей не ограничена.
Частота полной синхронизации с LDAP-сервером — как часто осуществлять полную синхронизацию с LDAP-сервером, в секундах.
Частота синхронизации с LDAP-сервером, в секундах — как часто осуществлять частичную синхронизацию с LDAP-сервером, в секундах.
Максимальное количество пользователей, обновляемых одной транзакцией — изменяйте в случае, если ваш LDAP-сервер отказывается отдавать пользователей с ошибкой о превышении размера транзакции.
Нажмите на кнопку Сохранить настройки.
Как получить Distinguished Name для bindDN и usersDN в Active Directory
-
В оснастке Active Directory Users and Computers выберите пользователя, под которым будет происходить подключение и поиск пользователей.
-
Выберите свойства и перейдите на вкладку Attribute Editor (если вкладки нет, выберите в меню View, затем Advanced Features).
На вкладке будет отображено значение distinguishedName. Повторите операцию, чтобы получить distinguishedName для каталога, в котором будет выполняться поиск пользователей.
Шаг 12. Укажите настройки SMTP
Перейдите Проекты → vkteams → nomail.
Заполните поля:
-
Адрес почтового релея для отправки ОТР.
-
Email для отправки ОТР — обратный адрес для сообщений с OTP-кодами (поле «From» в письме). Рекомендуется использовать реально существующий адрес.
-
Порт почтового релея для отправки ОТР — 25 (как правило, не требует редактирования).
Шаг 13. Настройте доступ в окружение администратора
В окружении администратора находится сервис Grafana.
В разделе Проекты → vkteams → nomail укажите группы пользователей, которым будет доступно окружение администратора, в полях:
- Права доступа к myteam admin (myteam_admin)
- Права на скачивание myteam client (myteam_client)
Шаг 14. Настройте сервис приема обращений
По умолчанию все обращения пользователей поступают на адрес myteamsupport@USER-DOMAIN, через локальный SMTP-релей. Например, в случае домена example.com обращение поступит на адрес myteamsupport@example.com.
Перейдите Проекты → vkteams → krtek.
Заполните поля:
- from — обратный адрес для письма, формируемого системой в адрес технической поддержки.
- host — адрес SMTP-сервера.
- password — пароль для авторизации на SMTP-сервере.
- port — порт SMTP-сервера, по умолчанию — 25.
- rcpt_to — адрес получателей,получателей может быть несколько.
- subject — тема отправляемого письма.
- use_tls — использование TLS для SMTP-сервера.
- username — имя пользователя для авторизации на SMTP-сервере.
Шаг 15. Установите разрешения для пользователей
Перейдите Проекты → vkteams → MessengerRemoteConfigs и включите необходимые опции.
Шаг 16. Запустите установку
-
Нажмите на логотип в левом верхнем углу веб-интерфейса, чтобы перейти к общей строке состояния.
-
Запустите автоматическую установку — нажмите на кнопку Play (треугольник) рядом с общей строкой состояния в верхней части экрана:
-
Подтвердите запуск автоматической установки, нажав на кнопку Запустить. Перед запуском автоматической установки оставьте включенными все проверки.
В зависимости от этапа установки будет меняться цвет индикатора:
- Серый — в ожидании начала генерации;
- Синий — в процессе генерации;
- Желтый — шаг будет повторен (автоматически);
- Красный — ошибка.
Ожидайте завершения установки. Пока процесс идет, рядом со строкой состояния будет отображаться красная кнопка Stop. Дождитесь завершения установки Мессенджера.
Если в процессе установки и настройки системы происходят изменения конфигурации, некоторые задачи могут потребовать повторного выполнения. Для повторного запуска необходимо нажать на кнопку Play в общей строке состояния в верхней части экрана или рядом с названием конкретного контейнера.
Если после запуска автоустановки напротив контейнера ansible-vkteams-registry1 отображается красный индикатор незавершенной задачи или общая строка состояния имеет красную секцию
1. Нажмите на шестеренку напротив контейнера ansible-vkteams-registry1.2. Нажмите на иконку корзины.
3. В окне подтверждения укажите «ansible-vkteams-registry1» и нажмите на кнопку Удалить:

4. Запустите автоматическую установку.
Если после запуска автоустановки отображаются ошибки


1. Остановите установщик командой: 2. Пропишите в /etc/systemd/system/deployer.service флаг -devel:
3. Выполните команду: 4. Запустите установщик: 5. Нажмите на кнопку Play рядом c общей строкой состояния в верхней части экрана. Снимите все чекбоксы и нажмите на кнопку Запустить.
Когда установка будет завершена, соответствующий статус отобразится в строке состояния.
Установка считается завершенной.
Проверки после установки
По прошествии 15 минут после рестарта машины подключитесь к ней по SSH и выполните следующие проверки инсталляции:
-
Правильность версии релиза:
-
Состояние служб:
Если в выводе есть статус «degradate», то список служб, которые завершились с ошибкой, можно посмотреть при помощи команды:
-
Готовность сервисов Мессенджер и ВКС:
Все сервисы должны находиться в состоянии alive.
-
Состояние подов Kubernetes:
Все сервисы должны быть состоянии Running.
-
Понаблюдайте за нагрузкой CPU и памяти при помощи утилиты K9s.
Также выполните проверки функциональностей Мессенджерf и ВКС. Рекомендуется проводить тест при помощи разных типов клиентов, например веб и десктоп.
-
Базовые функциональности:
- Возможность залогиниться в учетной записи.
- Отправить/получить текстовое сообщение с одного клиента на другой и обратно. Убедиться, что сообщения пришли.
- Удалить отправленные сообщения у себя и у всех. Убедиться, что сообщения успешно удаляются.
- Отправить/получить фото/видео/gif с одного клиента на другой и обратно. Проверить, что есть превью.
- Отправить/получить голосовое сообщение с одного клиента на другой и обратно. Убедиться, что запись полноценная и хорошего качества.
- Открыть витрину стикеров, открыть стикерпак. Убедиться, что все отображается корректно.
- Отправить/получить стикер с одного клиента на другой и обратно. Убедиться, что у стикера есть превью.
- Открыть собственный профиль и профиль другого пользователя.
-
Группы:
- Создать группу/канал.
- Добавить пользователя в канал
- Отправить/получить несколько сообщений, которые содержат стикеры и файлы. Убедиться, что сообщения доходят до всех участников.
- Заблокировать/разблокировать участника.
- Закрепить сообщение.
- Удалить пользователя.
- Удалить группу/канал.
-
Звонки:
- Позвонить пользователю. Добавить еще одного пользователя в звонок.
- Создать ссылку на звонок, перейти в звонок по ссылке.
- Проверить работу длительных звонков (около 5 минут).
-
Статусы:
- Поставить/удалить статусы.
Повторный запуск установщика
Установщик можно запускать повторно в случае возникновения ошибок во время инсталляции или при обновлении дистрибутива.
Внесение изменений в настройки инсталляции
Если необходимо внести изменения в конфигурацию:
-
Перейдите в веб-интерфейс установщика — в адресной строке браузера укажите адрес http://server-ip-address:8888. Если перейти по этому адресу не удается, убедитесь, что firewall был отключен.
-
Внесите необходимые изменения в настройки.
-
Запустите установку.

















