Подготовка хост-системы
Установку серверного решения IVA One должен выполнять технический специалист, обладающий соответствующими знаниями и навыками.
Требования к техническому специалисту
-
общее понимание о работе IPMI, iLO, DRAC или аналогичных технологий для удаленного управления сервером
-
общие навыки создания и управления виртуальными машинами, настройки CPU, памяти, подключения к LAN
-
общие навыки загрузки с виртуального CD-ROM (ISO-образа)
-
общие навыки создания загрузочного диска / флеш-накопителя
-
знание параметров сетевых настроек: IP-адрес, маска сети, шлюз
-
удаленный доступ к консоли управления с помощью SSH
-
общее понимание принципов IP-маршрутизации
|
Предварительная настройка и последующая установка IVA One выполняется из командной строки (консоли). В системе используется консоль Linux с оболочкой bash Перед настройкой хост-системы необходимо добавить пользователя ОС в группу sudo |
Настройка синхронизации времени с NTP-сервером
| Обязательно для выполнения на всех серверах с IVA One и IVA ID |
Корректное системное время критично для работы компонентов, использующих TLS, JWT или кластерные механизмы.
Настройка синхронизации времени исключает ошибки из-за рассинхронизации часов между узлами.
Для настройки синхронизации времени с NTP-серверов необходимо:
-
установить systemd-timesyncd, выполнив команду:
sudo apt install systemd-timesyncd -y -
запустить службу синхронизации времени с помощью команды:
sudo systemctl enable systemd-timesyncd --now -
проверить, что синхронизация включена, с помощью команды:
timedatectl statusПример вывода команды:
System clock synchronized: yes NTP service: active RTC in local TZ: no -
настроить собственный NTP-сервер, отредактировав файл /etc/systemd/timesyncd.conf:
-
открыть файл /etc/systemd/timesyncd.conf, выполнив команду:
sudo nano /etc/systemd/timesyncd.conf -
внести следующие изменения:
[Time] NTP=<NTP_SERVER> FallbackNTP=ntp.ubuntu.comгде <NTP_SERVER> — имя доступного NTP-сервера (допускается указать публичный NTP-сервер:
0.ru.pool.ntp.org,1.ru.pool.ntp.orgи др.) -
сохранить изменения и закрыть файл
-
-
применить изменения, выполнив команду:
sudo systemctl restart systemd-timesyncd
Настройка Transparent Huge Pages (THP)
| Обязательно для: PostgreSQL, OpenSearch, серверов с IVA ID |
По умолчанию в операционных системах Linux-семейства включена функция Transparent Huge Pages (THP), которая позволяет ядру объединять маленькие страницы памяти в более крупные для повышения производительности.
Для баз данных, работающих в оперативной памяти, это может приводить к непредсказуемым паузам при фоновой дефрагментации памяти. Данный процесс критичен в системах чувствительных к задержкам.
Рекомендуется установить режим madvise, отключающий использование THP по умолчанию, но сохраняющий возможность включить использование THP для приложений, которые запрашивают данную функцию.
Для настройки THP необходимо:
-
создать файл systemd юнита, выполнив команду:
sudo tee /etc/systemd/system/disable-thp.service > /dev/null <<EOF [Unit] Description=Set Transparent Huge Pages to madvise After=network.target [Service] Type=oneshot ExecStart=/bin/sh -c "echo madvise > /sys/kernel/mm/transparent_hugepage/enabled" ExecStart=/bin/sh -c "echo madvise > /sys/kernel/mm/transparent_hugepage/defrag" RemainAfterExit=true [Install] WantedBy=multi-user.target EOF -
применить изменения, выполнив следующие команды:
sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl enable --now disable-thp
Увеличение лимита на количество mmap-областей
| Обязательно при использовании OpenSearch |
OpenSearch интенсивно использует технологию mmap для отображения файлов индекса в память, что является критически важным для производительности.
| По умолчанию в большинстве дистрибутивов Linux данное значение является слишком низким |
Для увеличения лимита, необходимо выполнить следующие действия:
-
настроить значения ядра операционной системы, выполнив команды:
# cоздание файла изменения параметра ядра sudo tee -a /etc/sysctl.conf > /dev/null <<EOF vm.max_map_count=262144 EOF -
применить изменения с помощью команды:
sudo sysctl -p -
выполнить проверку:
sudo cat /proc/sys/vm/max_map_countПример вывода:
262144
Увеличение лимита открытых файлов
|
Обязательно при использовании OpenSearch Рекомендуется при использовании PostgreSQL, MinIO |
Лимит ulimit -n определяет максимальное количество открытых файловых дескрипторов, включая файлы, сетевые соединения и сокеты, которые может использовать процесс.
Увеличение этого значения до 65536 необходимо для стабильной работы высоконагруженных сервисов, чтобы избежать ошибок типа too many open files при большом числе одновременных соединений или операций с файлами.
Для увеличения лимита необходимо выполнить следующие действия:
-
настроить значения ядра операционной системы:
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF fs.file-max = 65536 EOF -
применить изменения, выполнив команду:
sudo sysctl -p -
проверить лимит с помощью команды:
sudo cat /proc/sys/fs/file-max
Отключение Swapping
|
Обязательно для PostgreSQL, OpenSearch, серверов с IVA ID, DiskStorage Рекомендуется для MinIO |
Valkey — это высокопроизводительная СУБД типа key-value, хранящая данные в оперативной памяти, что обеспечивает очень высокую скорость доступа и обработки.
Сброс данных СУБД на дисковый swap-раздел существенно снижает производительность и вызывает высокие задержки доступа к данным.
Для исключения снижения производительности необходимо отключить swap-раздел, либо минимизировать его использование.
Порядок выполняемых действия:
-
проверить используемые swap-разделы с помощью команды:
sudo cat /proc/swapsПример вывода:
Filename Type Size Used Priority /swap.img file 1971196 0 -2Название тома в конкретном случае может отличаться -
отключить использование swap-разделов, выполнив команду:
sudo swapoff -a -
для постоянного отключения swap-разделов необходимо отредактировать файл /etc/fstab, закомментировав соответствующие строки:
sudo nano /etc/fstabПример fstab:
#/swap.img none swap sw 0 0Название тома в конкретном случае может отличаться -
если отключение swap-разделов невозможно, то необходимо настроить их минимальное использование, задав параметру ядра swappiness значение 1:
sudo tee sysctl -w vm.swappiness=1 -
для сохранения заданного значения после перезагрузки ОС необходимо отредактировать файл /etc/sysctl.d/iva.conf:
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF vm.swappiness=1 EOF -
применить изменения с помощью команды:
sudo sysctl -p -
выполнить проверку лимита с помощью команды:
sudo cat /proc/sys/vm/swappiness
| Для стабильной работы системы рекомендуется отключать swap-раздел |
Размер очереди TCP-соединений (TCP Backlog)
| Обязательно для выполнения на всех серверах с IVA One и IVA ID |
Если к Valkey одновременно пытается подключиться большое количество клиентов, стандартный лимит ядра на очередь входящих соединений (backlog) может быть превышен.
Это приведет к тому, что новые клиенты будут получать ошибки Connection refused.
Для увеличения максимального размера очереди необходимо увеличить значение net.core.somaxconn.
| Рекомендованное значение 65535 |
Порядок выполняемых действия:
-
настроить значения ядра операционной системы:
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF net.core.somaxconn = 65536 EOF -
применить изменения с помощью команды:
sudo sysctl -p -
выполнить проверка лимита с помощью команды:
sudo cat /proc/sys/net/core/somaxconnНеобходимо убедиться, что в конфигурационном файле Valkey параметр tcp-backlog установлен в высокое значение, но не превышающее значение net.core.somaxconn, установленное на хосте
В сетях с высокой задержкой (более 50 мс) для повышения производительности системы рекомендуется увеличить размеры TCP-буферов.
Для этого необходимо:
-
настроить значения ядра операционной системы:
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 EOF -
применить изменения, выполнив команду:
sudo sysctl -pВо время эксплуатации может потребоваться подстройка под конкретный профиль нагрузки
Управление выделением памяти (Memory Overcommit)
| Обязательно при использовании Valkey |
Valkey использует системные вызовы fork() для создания фоновых процессов, которые сохраняют данные на диск (команды BGSAVE и BGREWRITEAOF).
При вызове fork() ядро ОС должно убедиться, что в системе достаточно памяти для дочернего процесса. По умолчанию, ядро может отказать в выделении памяти (совокупный объем памяти, выделенный родительскому и дочернему процессам, превышает доступный объем RAM), даже если реально используется меньшее количество памяти благодаря механизму Copy-on-Write, что приведет к сбою сохранения данных.
Для исключения такой ситуации требуется разрешить ядру ОС позволять контролировать выделение памяти, задав параметру vm.overcommit_memory значение 1.
Порядок выполняемых действий:
-
настроить значения ядра операционной системы:
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF vm.overcommit_memory = 1 EOF -
применить изменения, выполнив команду:
sudo sysctl -p -
выполнить проверку с помощью команды:
sudo cat /proc/sys/vm/overcommit_memory
Конфигурация разделяемой памяти (Shared Memory)
| Обязательно для PostgreSQL, Valkey, OpenSearch, серверов с IVA ID, DiskStorage |
|
СУБД PostgreSQL использует большой сегмент разделяемой памяти (shared memory) для кэширования данных (shared_buffers), межпроцессорного взаимодействия и других внутренних задач. Если в ОС лимиты ядра на размер или количество сегментов разделяемой памяти слишком низкие, то СУБД PostgreSQL не сможет запуститься, выдав ошибку о невозможности выделить память |
Для эффективной работы СУБД PostgreSQL необходимо увеличить лимиты ядра для разделяемой памяти shmmax (максимальный размер одного сегмента) и shmall (общий размер всех сегментов в страницах):
-
kernel.shmmax — значение (в байтах) должно быть больше, чем значение настройки shared_buffers в СУБД PostgreSQL
Рекомендуется устанавливать значение, равное половине объема RAM хоста -
kernel.shmall — значение должно быть достаточно большим
Рекомендованное значение shmmax / PAGE_SIZE
Пример расчета:
sudo free -b
total used free shared buff/cache available
Mem: 16768593920 506261504 16267616256 671744 267583488 16262332416
16768593920/2 = 8384296960
sudo getconf PAGE_SIZE
4096
8384296960/4096 = 2046947
Настройка значений ядра ОС:
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF
kernel.shmmax = 8384296960
kernel.shmall = 2046947
EOF
Применение изменений:
sudo sysctl -p
Выполнение проверки:
sudo ipcs -lmb