Гид по технологиям

Балансировщики нагрузки DigitalOcean — полное руководство

• 7 min read • Инфраструктура • Обновлено 27 Nov 2025
Балансировщики нагрузки DigitalOcean — руководство
Балансировщики нагрузки DigitalOcean — руководство

Быстрые ссылки

  • Ограничения балансировщиков DigitalOcean
  • Создание балансировщика нагрузки
  • Проверка состояния бэкендов
  • Практические рекомендации и чек-листы
  • Заключение

Как показал опыт многих системных администраторов, обеспечение высокой доступности — ключ к стабильной работе в продакшене. Управление балансировщиком нагрузки может быть сложной задачей. DigitalOcean предлагает сервис балансировщика нагрузки за $10/месяц, который упрощает эту задачу и покрывает типичные сценарии распределения трафика.

Что умеет балансировщик DigitalOcean? Ниже — список основных возможностей, которые влияют на поведение и производительность сервиса:

  • Резервирование и автоматическое переключение при отказе
  • Добавление ресурсов по имени или тегу
  • Поддерживаемые протоколы: HTTP(S), HTTP/2, TCP
  • Сертификаты Let’s Encrypt (при использовании DNS DigitalOcean)
  • Поддержка PROXY Protocol
  • «Sticky» сессии через cookie
  • Конфигурируемые проверки здоровья бэкендов
  • Алгоритмы: Round Robin или Least Connections
  • Перенаправление HTTP → HTTPS
  • Backend keepalive для производительности

Ограничения балансировщиков DigitalOcean

При работе с балансировщиками важно понимать их ограничения, чтобы корректно спроектировать архитектуру:

  • Входящие TLS-соединения поддерживают только TLS 1.2, при этом соединения от балансировщика к Droplet могут использовать TLS 1.1 и TLS 1.2.
  • Нет поддержки IPv6.
  • SSL passthrough не пропускает HTTP заголовки, такие как:
X-Forwarded-Proto

и

X-Forwarded-For

— такие заголовки доступны только при использовании HTTP/HTTPS с терминейшн сертификатом.

  • Sticky сессии видимы только на границе балансировщика — куки создаются и удаляются на уровне балансировщика и не передаются дальше.
  • При включенном keep-alive существует предел в 60 секунд на удержание соединения.
  • Балансировщики поддерживают 10 000 одновременных подключений, распределённых между всеми ресурсами (например, 5000 к двум разным Droplet).
  • Пробы состояния отсылаются как HTTP/1.0.
  • К балансировщикам нельзя прикрепить плавающий IP (Floating IP).
  • Порты 50053 до 50055 зарезервированы для внутреннего использования балансировщика.
  • Let’s Encrypt поддерживается только при использовании DNS DigitalOcean.
  • Let’s Encrypt на балансировщиках не поддерживает wildcard-сертификаты.

Ключевой вывод: сервис рассчитан на простые и средние нагрузки. Для сложных требований (IPv6, продвинутая маршрутизация, миллионы подключений) стоит рассмотреть дополнительные решения.

Создание балансировщика нагрузки

При создании нового балансировщика необходимо выбрать регион, в котором он будет создан и находиться рядом с Droplet, которые будут балансироваться. Балансировка не работает между разными регионами, поэтому все Droplet должны быть в одном регионе.

Выберите регион, в котором будет создан балансировщик и где находятся Droplet

Далее нужно определить ресурсы, которые будут добавлены в пул. Рекомендуется использовать теги: любой новый Droplet с этим тегом автоматически попадёт в пул. Ограничение: можно добавить не более 10 Droplet вручную, поэтому теги позволяют обойти это ограничение и масштабировать пул.

Определите ресурсы, которые нужно добавить в балансировщик

После добавления ресурсов создайте правила пересылки трафика (forwarding rules). В простом случае для веб-сервера достаточно правила, которое перенаправляет HTTP на порт 80.

Создайте правила пересылки трафика

Существуют расширенные параметры, которые можно настроить сразу или позже: алгоритм распределения, sticky-сессии, проверки здоровья, перенаправление на HTTPS, поддержка PROXY Protocol, активация backend keepalive.

Расширенные параметры балансировщика

Наконец, выберите имя балансировщика и нажмите Create Load Balancer.

Выберите имя балансировщика и нажмите Create Load Balancer

После создания можно перейти в интерфейс и посмотреть статус назначенных ресурсов. Если на Droplet действуют правила брандмауэра, убедитесь, что открыты входящие порты для проверок здоровья.

Просмотр назначенных ресурсов и их статусов

Чтобы увидеть работу балансировщика, откройте IP каждого Droplet. В примере на Droplet установлен Nginx, и в файле

index.html

в директории

/var/www/html

размещён текст, идентифицирующий сервер.

Переход по IP-адресам отдельных Droplet

Идентифицирующий текст на каждом Droplet

Каждый сервер показывает ожидаемый текст. Теперь откройте IP адрес самого балансировщика. После нескольких перезагрузок вы увидите страницы с разными идентификаторами на одном IP — трафик маршрутизируется между связанными Droplet.

Доступ по IP балансировщика: страницы с разных Droplet отображаются через один IP

Тестирование распределения запросов на IP балансировщика

Проверка состояния бэкендов

Проверки состояния выполняются регулярно в соответствии с настроенным интервалом. Как только Droplet определяется как недоступный, балансировщик перестаёт направлять на него трафик.

В примере ниже после выключения lc-test-02 балансировщик перестал направлять на него запросы. При обновлении страницы отображается только содержимое тестового сервера 1.

После выключения lc-test-02 балансировщик прекратил отправлять на него запросы

Практические рекомендации

  • Используйте теги для автоматического включения новых Droplet в пул. Это упрощает автошкалирование.
  • Настройте health checks таким образом, чтобы они проверяли реальную работу приложения (например, простой HTTP GET на /health с кодом 200), а не только открытый порт.
  • Для SSL: если нужен доступ к HTTP заголовкам, используйте SSL termination на балансировщике; если требуется end-to-end шифрование и заголовки не важны, можно применять SSL passthrough.
  • Sticky-сессии через куки удобны для сессий, которые нельзя хранить в общем сторе, но помните, что куки удаляются балансировщиком и не видны бэкендам.
  • Проверьте соответствие брандмауэра: балансировщик должен иметь возможность обращаться к портам, указанным в health check.
  • Для высокого числа соединений распределяйте трафик на большее количество Droplet, чтобы не исчерпать глобальный лимит 10 000 подключений.
  • Понимайте ограничение keep-alive в 60 секунд — для долгоживущих соединений (например, WebSocket) потребуются альтернативные решения.

Когда балансировщик DigitalOcean не подходит

  • Нужна поддержка IPv6 — DigitalOcean LB не поддерживает IPv6.
  • Требуется wildcard Let’s Encrypt на LB — не поддерживается.
  • Нужна глубокая обработка L7 (сложные правила маршрутизации, WAF, модификация заголовков) — стоит рассмотреть Nginx/HAProxy на своих виртуальных машинах или коммерческие облачные LB с расширенными возможностями.
  • Очень высокая пропускная способность и миллионы параллельных соединений — может потребоваться специализированное решение или CDN.

Альтернативные подходы

  • Самостоятельный балансировщик на базе HAProxy или Nginx: даёт полный контроль, поддержку IPv6 и расширенную конфигурацию, но требует сопровождения и резервирования.
  • Облачные балансировщики других провайдеров: часто имеют расширенные функции (WAF, IPv6, глобальная балансировка), но дороже.
  • Комбинация CDN + LB: CDN отдает статику, LB — динамику, снижая нагрузку на Droplet.

Чек-листы ролей

DevOps:

  • Настроить теги и авто-добавление Droplet
  • Настроить проверки здоровья с проверкой бизнес-логики
  • Протестировать поведение при отказе Droplet

Системный администратор:

  • Проверить правила брандмауэра для health checks
  • Обеспечить мониторинг входящих соединений и метрик нагрузки
  • Настроить логирование и оповещения

Разработчик:

  • Обеспечить endpoint для health check (например, /health с кодом 200)
  • Сделать приложение корректным при повторных запросах (idempotent)
  • Поддерживать сессии в общей базе, если не хотите использовать sticky-сессии

Инженер безопасности:

  • Настроить SSL termination и контролировать сертификаты
  • Включить PROXY Protocol, если нужно передать адрес клиента в безопасном виде
  • Проверить соответствие требованиям конфиденциальности

Критерии приёмки

  1. Балансировщик отвечает на запросы и возвращает правильный контент при нескольких обновлениях страницы.
  2. Health check правильно выводит недоступные Droplet из пула.
  3. SSL работает корректно при выбранной конфигурации (терминейшн или passthrough).
  4. При отключении одного Droplet трафик перераспределяется, а общая доступность сохраняется.
  5. Логи и мониторинг фиксируют метрики соединений и ошибок.

Мини-методология развертывания

  1. Определите требования: протоколы, SSL, масштаб, регион.
  2. Создайте Droplet в одном регионе и пометьте тегом.
  3. Создайте Load Balancer в том же регионе и добавьте тег.
  4. Настройте правила пересылки и health checks.
  5. Протестируйте: откатите Droplet, проверьте sticky-сессии, SSL.
  6. Настройте мониторинг и оповещения.

Матрица сравнения (упрощённая)

КритерийDigitalOcean LBСамостоятельный HAProxyОблачный провайдер — премиум
Простота настройкиВысокаяСредняяСредняя—Высокая
СтоимостьНизкаяПеременнаяВысокая
Поддержка IPv6НетДаДа
Let’s EncryptДа (без wildcard)Зависит от реализацииДа
Гибкость правилОграниченнаяПолнаяЧасто полная

Безопасность и конфиденциальность

  • Храните приватные ключи и доступ к аккаунту DigitalOcean в защищённом хранилище секретов.
  • Используйте HTTPS и отключайте старые версии TLS на уровне приложения, если это возможно.
  • Если вы собираете персональные данные, проверьте соответствие требованиям местного законодательства по защите данных.

Ключевые числа

  • Стоимость: $10/месяц за балансировщик.
  • Ограничение одновременных подключений: 10 000.
  • Keep-alive для backend: максимум 60 секунд.
  • Резервируемые порты: 50053–50055.

Сценарии тестирования

  • Отключение одного Droplet — проверка, что трафик не идёт на него.
  • Массовые подключения — убедиться, что не превышен лимит 10 000.
  • Провал health check — убедиться, что LB выводит узел из пула.
  • SSL: проверка режима termination vs passthrough и доступности заголовков.

Заключение

Балансировщики нагрузки DigitalOcean — недорогое и удобное решение для большинства типичных веб-приложений. Они обеспечивают базовую отказоустойчивость, поддержку HTTP/2, SSL termination и автоматическое добавление ресурсов по тегам. Однако важно учитывать ограничения: отсутствие IPv6, лимит одновременных подключений и особенности работы с SSL. Для сложных или очень нагруженных систем стоит рассмотреть гибридные подходы: CDN, собственные балансировщики или премиальные облачные сервисы.

Важно: перед переходом в продакшен выполните тесты отказоустойчивости и убедитесь, что health checks отражают реальное состояние приложений.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро