Разработка высоконагруженного приложения на сервере Bare Metal
Серверы Bare Metal подходят для разработки высоконагруженных приложений. В отличие от виртуальных сред или локальных машин, Bare Metal обеспечивает:
-
Предельную производительность — прямой доступ к CPU, RAM, дискам сервера без расходов на гипервизор, что критично для задач с интенсивными вычислениями, например при обработке 100 000+ RPS.
-
Детерминированное поведение — идентичность версий приложения для разработки, тестирования и реализации. Это исключает «эффект соседа» в облачной среде и гарантирует воспроизводимость результатов.
-
Экономическую эффективность — централизация ресурсов сервера позволяет заменить все локальные машины разработчиков одним мощным сервером.
-
Ускорение CI/CD — сборки и тесты выполняются быстрее благодаря отсутствию ограничений виртуализации. Актуально для компиляции приложений на C++ или запуска ML-моделей.
В сценарии разберем разработку приложения командой из 10 разработчиков на сервере, у которого:
-
настроена среда разработки VSCode Server;
-
установлены программы для проектирования инженерных систем Ansys и HFSS;
-
установлена утилита X2Go для запуска Ansys и HFSS;
-
в качестве графической среды используется XFCE.
Все действия в сценарии выполняются для создания пользователя dev1. Чтобы добавить пользователей для остальных разработчиков, повторите действия.
Перед началом работы
-
Арендуйте сервер Bare Metal с публичным IP-адресом.
Настройте VSCode Server и системные лимиты
-
Создайте изолированное окружение для каждого разработчика:
sudo useradd -m -s /bin/bash dev1 # Создание пользователяsudo passwd dev1 # Установка пароляsudo usermod -aG docker dev1 # Добавление в группу docker -
Настройте системные лимиты:
-
Откройте конфигурационный файл на запись:
sudo nano /etc/security/limits.conf -
Добавьте в конец файла код:
dev1 soft nproc 50000dev1 hard nproc 100000dev1 soft nofile 50000dev1 hard nofile 100000* soft core unlimitedДополнительная настройка для GUI-приложений -
Нажмите сочетание клавиш Ctrl + O.
-
Подключите локальный VSCode к VSCode Server
Чтобы обеспечить безопасность работы с приложением,
-
На устройстве разработчика создайте пару SSH-ключей:
ssh-keygen -t ed25519 -
Скопируйте публичный ключ на сервер:
ssh-copy-id dev1@<server_ip_address> -
Установите расширение «Remote SSH» для VSCode.
-
Добавьте сервер в файл .ssh/config:
Host dev-server-dev1HostName <server_ip_address>User dev1IdentityFile ~/.ssh/id_ed25519 -
Подключитесь к серверу из VSCode:
-
Нажмите сочетание клавиш Ctrl + Shift + P.
-
В строке поиска введите Remote-SSH: Connect to Host.
-
В списке выберите dev-server-dev1.
-
Настройте UFW для доступа к сервисам только по SSH
При разработке сервисов важно обеспечить их недоступность извне. Для этого необходимо закрыть все сервисные порты с помощью UFW. В этом случае приложения будут доступны только по SSH.
-
Создайте новые правила UFW:
# Сброс всех правилsudo ufw --force reset# Запретить все входящие соединения по умолчаниюsudo ufw default deny incoming# Разрешить все исходящиеsudo ufw default allow outgoing# Разрешить SSH (порт 22)sudo ufw allow 22/tcp# Включить UFWsudo ufw enable -
Проверьте статус UFW:
sudo ufw status verboseРезультат
Status: activeLogging: on (low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skipTo Action From-- ------ ----22/tcp ALLOW IN Anywhere
Настройте X2Go Server для удаленного рабочего стола на Linux
Для работы с графическими приложениями (CAD/CAM/CAE) терминала недостаточно. X2Go позволяет:
-
запускать графические приложения через SSH;
-
работать с 3D-рендерингом и тяжелыми GUI;
-
использовать несколько параллельных сессий на одном сервере;
-
экономить трафик.
-
Установите X2Go Server и XFCE на сервер:
sudo apt updatesudo apt install -y x2goserver x2goserver-xsessionsudo apt install -y xfce4 xfce4-goodies -
Настройте пользователей:
sudo useradd -m -s /bin/bash engineer1sudo passwd engineer1 -
Создайте конфигурационный файл x2goagent.options в каталоге /etc/x2go/ и добавьте в него код:
# Разрешить аппаратное ускорениеUSE_XVFB = noENABLE_3D = yes# Оптимизация для CAD-приложенийNX_COMPRESSION = 9NX_IMAGE_CACHE = 50NX_SHM_DISABLE = no -
Настройте лимиты для ресурсоемких задач:
-
Откройте конфигурационный файл на запись:
sudo nano /etc/security/limits.conf -
Добавьте в конец файла код:
engineer1 hard memlock unlimitedengineer1 soft memlock unlimitedengineer1 hard nofile 100000engineer1 soft nofile 50000engineer1 hard rtprio 99 # Для реального времени
-
-
Установите графические драйверы:
sudo apt install -y nvidia-driver-535-server nvidia-utils-535-server nvidia-fabricmanager-535sudo apt install linux-headers-5.15.0-94-genericsudo rebootsudo systemctl enable nvidia-fabricmanagersudo systemctl start nvidia-fabricmanagernvidia-sminvidia-smi nvlink -s
Настройте X2Go на устройстве разработчика
-
Установите клиент:
-
Создайте подключение:
-
Host — публичный IP-адрес сервера.
-
Login — engineer1.
-
Session Type — XFCE.
-
Port — 22 (SSH).
-
-
Укажите дополнительные настройки:
[Connection]# Аппаратное ускорениеuse_gfx=yesglx_cooler=yes # Для OpenGL[Media]# Для 3D-приложенийsound=bothprinting=no
Сервер готов к работе над приложением.
- Перед началом работы
- Настройте VSCode Server и системные лимиты
- Подключите локальный VSCode к VSCode Server
- Настройте UFW для доступа к сервисам только по SSH
- Настройте X2Go Server для удаленного рабочего стола на Linux
- Настройте X2Go на устройстве разработчика