16 октября 2026
ID 331513
Развертывание в нескольких ЦОД с перекрестным подключением с помощью стандартной виртуальной машины Ubuntu Server 24.04 LTS
В этом разделе содержатся инструкции по развертыванию Kaspersky EDR Expert в нескольких ЦОД с перекрестным подключением в нескольких центрах обработки данных на стандартной виртуальной машине Ubuntu Server 24.04 LTS.
Типовая конфигурация из трех основных узлов, девяти рабочих узлов и HAProxy
В этом развертывании используется три центра обработки данных, по одному основному узлу и тремя рабочими узлами в каждом. Всего для этого развертывания требуется три основных узла, девять рабочих узлов и один узел HAProxy. Требования к узлам:
- Управляющий узел: 4 vCPU, 8 ГБ оперативной памяти, SSD* объемом 500 ГБ
- Рабочий узел: 10 vCPU, 20 ГБ оперативной памяти, SSD* объемом 1 ТБ
- Узел HAProxy: 4 vCPU, 8 ГБ оперативной памяти, SSD* объемом 100 ГБ
* Или любое устройство с 8000 IOPS (операций ввода-вывода в секунду) при произвольном доступе
Требования к оборудованию должны быть рассчитаны в соответствии с руководством по масштабированию.
Настройка HAProxy и управляющего и рабочего узлов
2.1 Настройка устройства HAProxy
Для реализации решения с использованием нескольких ЦОД хосты должны быть распределены по разным подсетям с использованием трех шлюзов кластера Kubernetes из них, а узел HAProxy должен быть расположен в одной из подсетей.
- Установите HAProxy:
sudo apt update
sudo apt install haproxy
- Измените конфигурационный файл HAProxy:
sudo nano /etc/haproxy/haproxy.cfg
Пример конфигурационного файла:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
listen stats
mode http
bind *:8080
stats enable
stats uri /stats
stats refresh 10s
# stats admin if LOCALHOST
frontend http
mode tcp
bind :80
default_backend http_servers
backend http_servers
mode tcp
balance first
option tcp-check
timeout queue 2s
timeout connect 2s
timeout check 1s
server proxmox1 <
IP-адрес первого шлюза>:80 check inter 5s # ingress_ip number 1server proxmox2 <
IP-адрес второго шлюза>:80 check inter 5s # ingress_ip number 2server proxmox3 <
IP-адрес третьего шлюза>:80 check inter 5s # ingress_ip number 3frontend https
mode tcp
bind :443
default_backend https_servers
backend https_servers
mode tcp
balance first
option tcp-check
timeout queue 2s
timeout connect 2s
timeout check 1s
server proxmox1 <
IP-адрес первого шлюза>:443 check inter 5s # ingress_ip number 1server proxmox2 <
IP-адрес второго шлюза>:443 check inter 5s # ingress_ip number 2server proxmox3 <
IP-адрес третьего шлюза>:443 check inter 5s # ingress_ip number 3frontend https9
mode tcp
bind :9443
default_backend https9_servers
backend https9_servers
mode tcp
balance first
option tcp-check
timeout queue 2s
timeout connect 2s
timeout check 1s
server proxmox1 <
IP-адрес первого шлюза>:9443 check inter 5s # ingress_ip number 1server proxmox2 <
IP-адрес второго шлюза>:9443 check inter 5s # ingress_ip number 2server proxmox3 <
IP-адрес третьего шлюза>:9443 check inter 5s # ingress_ip number 3frontend https4
mode tcp
bind :4443
default_backend https4_servers
backend https4_servers
mode tcp
balance first
option tcp-check
timeout queue 2s
timeout connect 2s
timeout check 1s
server proxmox1 <
IP-адрес первого шлюза>:4443 check inter 5s # ingress_ip number 1server proxmox2 <
IP-адрес второго шлюза>:4443 check inter 5s # ingress_ip number 2server proxmox3 <
IP-адрес третьего шлюза>:4443 check inter 5s # ingress_ip number 3frontend ksc13000
mode tcp
bind :13000
default_backend ksc13000
backend ksc13000
mode tcp
balance first
option tcp-check
timeout queue 2s
timeout connect 2s
timeout check 1s
server proxmox1 <
IP-адрес первого шлюза>:13000 check inter 5s # ingress_ip number 1server proxmox2 <
IP-адрес второго шлюза>:13000 check inter 5s # ingress_ip number 2server proxmox3 <
IP-адрес третьего шлюза>:13000 check inter 5s # ingress_ip number 3 - Сохраните (Ctrl+S) и закройте файл (Ctrl+X).
- Перезапустите службу HAProxy:
sudo systemctl restart haproxy
2.2 Настройка управляющего и рабочего узлов
2.2.1 Настройка учетной записи пользователя для развертывания Kaspersky EDR Expert
- Откройте /etc/sudoers:
sudo visudo
- Добавьте в конец файла следующую строку:
{user} ALL=(ALL) NOPASSWD: ALL
где
{user}– учетная запись, используемая для развертывания. - Сохраните (Ctrl+S) и закройте файл (Ctrl+X).
2.2.2 Проверка свободного места в директориях /var, /opt и /tmp
- На управляющем узле выполните следующие команды:
df -h /var
Требуется не менее 200 ГБ свободного места.
df -h /opt
Требуется не менее 200 ГБ свободного места.
df -h /tmp
Требуется не менее 50 ГБ свободного места.
- На узлах worker1–worker3 выполните следующие команды:
df -h /var
Требуется не менее 200 ГБ свободного места.
df -h /opt
Требуется не менее 700 ГБ свободного места.
df -h /tmp
Требуется не менее 50 ГБ свободного места.
2.2.3 Обеспечение отсутствия ошибок при синхронизации репозиториев
Выполните следующую команду:
sudo apt update
Команда не должна возвращать ошибки.
2.2.3 Установка python3-apt и curl
Выполните следующую команду:
sudo apt install python3-apt curl -y
2.2.4 Настройка системного времени для синхронизации с NTP-сервером
- Выполните следующие команды:
sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status
В выводе будет строка:
System clock synchronized: yes
- Чтобы проверить синхронизацию, выполните команду:
date
В выводе будет текущая дата и время.
Настройка устройства СУБД
Устройство СУБД – это устройство с установленным экземпляром СУБД.
Требования к устройству, на котором установлен экземпляр СУБД:
- 10 vCPU
- 20 ГБ оперативной памяти
- 1.6 ТБ SSD или любое устройство с 8000 IOPS (операций ввода-вывода в секунду) при произвольном доступе
Поддерживаемые версии PostgreSQL см. в статье Аппаратные и программные требования.
3.1 Установка и настройка PostgreSQL
- Установите PostgreSQL:
sudo apt install -y postgresql-<
версия>где <
версия> – поддерживаемые версии PostgreSQL.Если требуемая версия PostgreSQL отсутствует в подключенном репозитории, необходимо добавить репозиторий
postgresql. Подробнее см. на сайте PostgreSQL. - Создайте отдельного суперпользователя PostgreSQL:
sudo -u postgres createuser --superuser xdr
- Укажите пароль пользователя:
sudo -u postgres psql -c "ALTER USER xdr WITH PASSWORD '
ваш пароль';" - Создайте для пользователя базу данных с таким же именем:
sudo -u postgres psql -c "CREATE DATABASE xdr OWNER xdr;"
- Разрешите доступ к PostgreSQL с любого IP-адреса:
echo "host all all 0.0.0.0/0 scram-sha-256" | sudo tee -a /etc/postgresql/<
версия>/main/pg_hba.confгде <
версия> – поддерживаемые версии PostgreSQL. - Укажите следующие параметры в конфигурационном файле PostgreSQL (/etc/postgresql/<
версия>/main/postgresql.conf), где <версия> – версия PostgreSQL. Например, для PostgreSQL 16: /etc/postgresql/16/main/postgresql.conf.Прокомментированные (
#) строки необходимо раскомментировать.listen_addresses = '*'
shared_buffers = 8192MB
max_stack_depth = 7MB
temp_buffers = 24MB
work_mem = 16MB
max_connections = 512
max_parallel_workers_per_gather = 0
maintenance_work_mem = 128MB
standard_conforming_strings = on
- Перезапустите PostgreSQL
sudo systemctl restart postgresql
3.2 Настройка системного времени для синхронизации с NTP-сервером:
- Выполните следующие команды:
sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status
В выводе будет строка:
System clock synchronized: yes
- Чтобы проверить синхронизацию, выполните команду:
date
В выводе будет текущая дата и время.
Настройка устройства администратора
Устройство администратора – это устройство, с которого запускается утилита KDT. Файлы из дистрибутива, включая архив с утилитой KDT, должны находиться на хосте администратора. Это устройство может быть частью кластера Kubernetes, созданного утилитой KDT во время развертывания, или может оставаться за пределами кластера. Если устройство администратора не включено в кластер, оно будет использоваться только для развертывания и управления кластером Kubernetes и OSMP. Если устройство администратора включено в кластер, оно также будет действовать как целевое устройство, которое используется для работы компонентов OSMP.
4.1 Распаковка утилиты KDT
Выполните следующую команду, чтобы создать директорию и распаковать утилиту KDT:
mkdir ./kdt && tar -xvf bin.tar.gz -C ./kdt
4.2 Установка Docker
Поддерживаются версии Docker 25 и выше.
4.2.1 Установка в Ubuntu 24:
sudo apt update && sudo apt install docker.io
4.2.2 ИЛИ Установка с использованием официальной инструкции:
- Установите необходимые пакеты:
sudo apt update && sudo apt install ca-certificates curl
- Загрузите keyring Docker:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && sudo chmod 0755 /etc/apt/keyrings/docker.asc
- Добавьте apt-репозиторий Docker:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
- Обновите кеш репозитория и установите пакеты Docker:
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4.3 Настройка Docker
- Добавьте текущего пользователя в группу
docker:sudo usermod -aG docker $USER
- Активируйте членство пользователя в группе
dockerв текущем сеансе:newgrp docker
4.4 Настройка системного времени для синхронизации с NTP-сервером:
- Выполните следующие команды:
sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status
В выводе будет строка:
System clock synchronized: yes
- Чтобы проверить синхронизацию, выполните команду:
date
В выводе будет текущая дата и время.
4.5 Проверка свободного места в директории /tmp
Выполните следующую команду:
df -h /tmp
Требуется не менее 50 ГБ свободного места.
Если у вас недостаточно свободного места в директории /tmp, укажите путь к другой директории:
export TMPDIR=<новая_директория>/tmp
Или добавьте место в необходимом объеме:
echo 'tmpfs /tmp tmpfs defaults,size=50G 0 0' | sudo tee -a /etc/fstab
Выделив необходимое место, перезагрузите хост или повторно смонтируйте раздел.
4.6 Настройка SSH-соединения между устройством администратора и основными и рабочими узлами
- Создайте SSH-ключ:
ssh-keygen -t rsa -b 4096 -N ""
- Скопируйте ключ на каждый целевой хост по очереди:
ssh-copy-id {user}@{primary_ip}
ssh-copy-id {user}@{worker_ip} # копирование ключа для каждого рабочего узла в подсети
Где
{user}– учетная запись пользователя для развертывания Kaspersky EDR Expert, созданная во время настройки целевого устройства.
4.7 Настройка DNS
На вашем DNS-сервере зарегистрируйте FQDN служб для подключения к службам OSMP (<smp_domain>).
Чтобы быстро начать работу, добавьте на свой DNS-сервер запись подстановки A, указывающую на IP-адрес HAProxy. HAProxy балансирует трафик между тремя шлюзами кластера Kubernetes (<ingress_ip>), которые затем направляют трафик в соответствующие службы.
По умолчанию службы OSMP доступны по следующим адресам:
<haproxy_host_ip> – admsrv.<smp_domain>
<haproxy_host_ip> – api.<smp_domain>
<haproxy_host_ip> – console.<smp_domain>
<haproxy_host_ip> – kuma.<smp_domain>
<haproxy_host_ip> – *.kuma.<smp_domain>
<haproxy_host_ip> – monitoring.<smp_domain>
<haproxy_host_ip> – agentserver.<smp_domain>
<haproxy_host_ip> – updater.<smp_domain>
4.8 Создание конфигурации для запуска установки
Легенда
10.0.0.100– IP-адрес первого основного узла первой подсети (<primary1_ip>)10.10.20.18– IP-адрес второго основного узла второй подсети (<primary2_ip>)10.65.20.10– IP-адрес третьего основного узла третьей подсети (<primary3_ip>)10.0.0.101– IP-адрес первого рабочего узла первой подсети (<worker1_ip>)10.0.0.102– IP-адрес второго рабочего узла первой подсети (<worker2_ip>)10.0.0.103– IP-адрес третьего рабочего узла первой подсети (<worker3_ip>)10.10.20.20– IP-адрес первого рабочего узла второй подсети (<worker4_ip>)10.10.20.21– IP-адрес второго рабочего узла второй подсети (<worker5_ip>)10.10.20.22– IP-адрес третьего рабочего узла второй подсети (<worker6ip>)10.65.20.11– IP-адрес первого рабочего узла третьей подсети (<worker7_ip>)10.65.20.12– IP-адрес второго рабочего узла третьей подсети (<worker8_ip>)10.65.20.13– IP-адрес третьего рабочего узла третьей подсети (<worker9_ip>)10.0.0.150– IP-адрес устройства СУБД (<DB_ip>)10.0.0.200– IP-адрес первого шлюза кластера Kubernetes10.10.20.100– IP-адрес второго шлюза кластера Kubernetes10.65.20.100– IP-адрес третьего шлюза кластера Kubernetes10.0.0.111– IP-адрес устройства HAProxyuser– учетная запись пользователя для развертывания (<user_name>)/home/user/.ssh/id_rsa– путь к SSH-ключу, созданному при настройке SSH-соединения на устройстве администратора (<ssh_key_path>)xdr.mydomain.com– домен для входящего трафика (<smp_domain>)
4.8.1 Указание параметров установки с помощью конфигурационного файла
Шаблон конфигурационного файла (multinode.smp_param.yaml.template) находится в дистрибутиве в архиве с утилитой KDT.
Значение параметра psql_dsn должно соответствовать URI-формату. Если URI-подключение включает специальные символы в любой из его частей, символы должны быть экранированы с помощью процентной кодировки.
Символы, которые требуется заменить в значении параметра psql_dsn:
- Пробел →
%20 - ! →
%21 #→%23%→%25&→%26/→%2F:→%3A=→%3D?→%3F@→%40[→%5B]→%5D
Дополнительную информацию см. в статье Строка подключения PostgreSQL.
schemaType: ParameterSet
schemaVersion: 1.0.1
namespace: ""
name: bootstrap
project: xdr
regions:
prox1:
description: Proxmox1
prox2:
description: Proxmox2
prox3:
description: Proxmox3
zones:
proxmox1:
region: prox1
ingress_ip: 10.0.0.200
proxmox2:
region: prox2
ingress_ip: 10.10.20.100
proxmox3:
region: prox3
ingress_ip: 10.65.20.100
nodes:
- desc: cdt-primary1
type: primary
zone: proxmox1
host: 10.0.0.100
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-primary2
type: primary
zone: proxmox2
host: 10.10.20.18
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-primary3
type: primary
zone: proxmox3
host: 10.65.20.100
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w1
type: worker
zone: proxmox1
host: 10.0.0.101
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w2
type: worker
zone: proxmox1
host: 10.0.0.102
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w3
type: worker
zone: proxmox1
host: 10.0.0.103
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w4
type: worker
zone: proxmox2
host: 10.10.20.20
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w5
type: worker
zone: proxmox2
host: 10.10.20.21
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w6
type: worker
zone: proxmox2
host: 10.10.20.22
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w7
type: worker
zone: proxmox3
host: 10.65.20.11
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w8
type: worker
zone: proxmox3
host: 10.65.20.12
access:
ssh:
user: <user_name>
key: <ssh_key_path>
- desc: cdt-w9
type: worker
zone: proxmox3
host: 10.65.20.13
access:
ssh:
user: <user_name>
key: <ssh_key_path>
parameters:
- name: psql_dsn
source:
value: postgres://xdr:<ваш_пароль>@<DB_ip>:5432
- name: ssh_pk
source:
path: <ssh_key_path>
- name: admin_password
source:
value: "your_password"
- name: inventory
source:
value: /dev/null
- name: license
source:
value: /dev/null
- name: smp_domain
source:
value: "<домен_smp>"
- name: pki_host_list
source:
value: "admsrv api console kuma monitoring updater"
- name: grafana_admin_user
source:
value: xdr
- name: grafana_admin_password
source:
value: "your_password"
Установка Kaspersky EDR Expert
Выполните следующую команду:
./kdt/bin/kdt apply --accept-eula -k xdr-<версия_приложения>.tar -i params.yaml
Если установка завершится успешно, в терминале будет отображена следующая информация:
INFO[0038] apply inventory ./conf.yaml
INFO[0039] preparing bootstrap_<версия>.tgz
INFO[0092] installing: bootstrap
INFO[0404] time: prepare 53.113895029s install 5m12.442326155s
INFO[0404] current installation is valid
INFO[0404] bundles will be published: 40
INFO[0536] bundles published 40
INFO[0536] bundles will be applied: 39
INFO[2450] apply done: 31m53.851140069s
INFO[2450] apply command completed successfully
INFO[2450] time: publish 2m11.679771805s install 31m53.930470045s
Чтобы проверить установку, требуется перейти на страницу авторизации. Для этого введите в строке поиска браузера:
console.<smp_domain>
Где <smp_domain> – FQDN, указанное на шаге 4.7 этой процедуры.