Серверы 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 на устройстве разработчика