Развертывание в нескольких ЦОД с перекрестным подключением с помощью стандартной виртуальной машины Ubuntu Server 24.04 LTS
Скопировано

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 должен быть расположен в одной из подсетей.

  1. Установите HAProxy:

    sudo apt update

    sudo apt install haproxy

  2. Измените конфигурационный файл 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 1

    server proxmox2 <IP-адрес второго шлюза>:80 check inter 5s # ingress_ip number 2

    server proxmox3 <IP-адрес третьего шлюза>:80 check inter 5s # ingress_ip number 3

    frontend 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 1

    server proxmox2 <IP-адрес второго шлюза>:443 check inter 5s # ingress_ip number 2

    server proxmox3 <IP-адрес третьего шлюза>:443 check inter 5s # ingress_ip number 3

    frontend 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 1

    server proxmox2 <IP-адрес второго шлюза>:9443 check inter 5s # ingress_ip number 2

    server proxmox3 <IP-адрес третьего шлюза>:9443 check inter 5s # ingress_ip number 3

    frontend 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 1

    server proxmox2 <IP-адрес второго шлюза>:4443 check inter 5s # ingress_ip number 2

    server proxmox3 <IP-адрес третьего шлюза>:4443 check inter 5s # ingress_ip number 3

    frontend 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 1

    server proxmox2 <IP-адрес второго шлюза>:13000 check inter 5s # ingress_ip number 2

    server proxmox3 <IP-адрес третьего шлюза>:13000 check inter 5s # ingress_ip number 3

  3. Сохраните (Ctrl+S) и закройте файл (Ctrl+X).
  4. Перезапустите службу HAProxy:

    sudo systemctl restart haproxy

2.2 Настройка управляющего и рабочего узлов

2.2.1 Настройка учетной записи пользователя для развертывания Kaspersky EDR Expert

  1. Откройте /etc/sudoers:

    sudo visudo

  2. Добавьте в конец файла следующую строку:

    {user} ALL=(ALL) NOPASSWD: ALL

    где {user} – учетная запись, используемая для развертывания.

  3. Сохраните (Ctrl+S) и закройте файл (Ctrl+X).

2.2.2 Проверка свободного места в директориях /var, /opt и /tmp

  1. На управляющем узле выполните следующие команды:

    df -h /var

    Требуется не менее 200 ГБ свободного места.

    df -h /opt

    Требуется не менее 200 ГБ свободного места.

    df -h /tmp

    Требуется не менее 50 ГБ свободного места.

  2. На узлах 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-сервером

  1. Выполните следующие команды:

    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

  2. Чтобы проверить синхронизацию, выполните команду:

    date

    В выводе будет текущая дата и время.

Настройка устройства СУБД

Устройство СУБД – это устройство с установленным экземпляром СУБД.

Требования к устройству, на котором установлен экземпляр СУБД:

  • 10 vCPU
  • 20 ГБ оперативной памяти
  • 1.6 ТБ SSD или любое устройство с 8000 IOPS (операций ввода-вывода в секунду) при произвольном доступе

Поддерживаемые версии PostgreSQL см. в статье Аппаратные и программные требования.

3.1 Установка и настройка PostgreSQL

  1. Установите PostgreSQL:

    sudo apt install -y postgresql-<версия>

    где <версия> – поддерживаемые версии PostgreSQL.

    Если требуемая версия PostgreSQL отсутствует в подключенном репозитории, необходимо добавить репозиторий postgresql. Подробнее см. на сайте PostgreSQL.

  2. Создайте отдельного суперпользователя PostgreSQL:

    sudo -u postgres createuser --superuser xdr

  3. Укажите пароль пользователя:

    sudo -u postgres psql -c "ALTER USER xdr WITH PASSWORD 'ваш пароль';"

  4. Создайте для пользователя базу данных с таким же именем:

    sudo -u postgres psql -c "CREATE DATABASE xdr OWNER xdr;"

  5. Разрешите доступ к PostgreSQL с любого IP-адреса:

    echo "host all all 0.0.0.0/0 scram-sha-256" | sudo tee -a /etc/postgresql/<версия>/main/pg_hba.conf

    где <версия> – поддерживаемые версии PostgreSQL.

  6. Укажите следующие параметры в конфигурационном файле 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

  7. Перезапустите PostgreSQL

    sudo systemctl restart postgresql

3.2 Настройка системного времени для синхронизации с NTP-сервером:

  1. Выполните следующие команды:

    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

  2. Чтобы проверить синхронизацию, выполните команду:

    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 ИЛИ Установка с использованием официальной инструкции:

  1. Установите необходимые пакеты:

    sudo apt update && sudo apt install ca-certificates curl

  2. Загрузите 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

  3. Добавьте 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

  4. Обновите кеш репозитория и установите пакеты Docker:

    sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.3 Настройка Docker

  1. Добавьте текущего пользователя в группу docker:

    sudo usermod -aG docker $USER

  2. Активируйте членство пользователя в группе docker в текущем сеансе:

    newgrp docker

4.4 Настройка системного времени для синхронизации с NTP-сервером:

  1. Выполните следующие команды:

    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

  2. Чтобы проверить синхронизацию, выполните команду:

    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-соединения между устройством администратора и основными и рабочими узлами

  1. Создайте SSH-ключ:

    ssh-keygen -t rsa -b 4096 -N ""

  2. Скопируйте ключ на каждый целевой хост по очереди:

    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-адрес первого шлюза кластера Kubernetes
  • 10.10.20.100 – IP-адрес второго шлюза кластера Kubernetes
  • 10.65.20.100 – IP-адрес третьего шлюза кластера Kubernetes
  • 10.0.0.111 – IP-адрес устройства HAProxy
  • user – учетная запись пользователя для развертывания (<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 этой процедуры.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!