Перейти к основному содержимому

Чтобы получить чистое Markdown-содержимое этой страницы, добавьте .md к этому URL. Полный индекс документации см. на https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. на https://docs.nvidia.com/dynamo/llms-full.txt.

Плоскость обнаружения

Слой обнаружения сервисов Dynamo позволяет компонентам находить друг друга во время выполнения. Воркеры регистрируют свои конечные точки при запуске, а frontend-компоненты обнаруживают их автоматически. Механизм обнаружения адаптируется к среде развертывания.

Архитектура плоскости обнаружения с механизмами Kubernetes и etcd

Механизмы обнаружения​

РазвертываниеМеханизм обнаруженияКонфигурация
Kubernetes (с оператором Dynamo)Нативный K8s (CRDs, EndpointSlices)Оператор задает DYN_DISCOVERY_BACKEND=kubernetes
Bare metal / локально (по умолчанию)etcdETCD_ENDPOINTS (по умолчанию http://localhost:2379)

Примечание: Среда выполнения всегда по умолчанию использует etcd. Обнаружение через Kubernetes нужно включить явно; оператор Dynamo делает это автоматически.

Обнаружение в Kubernetes​

При работе в Kubernetes с оператором Dynamo обнаружение сервисов использует нативные ресурсы Kubernetes вместо etcd.

Как это работает​

  1. Воркеры регистрируют свои конечные точки, создавая пользовательские ресурсы DynamoWorkerMetadata.
  2. EndpointSlices сообщают системе о готовности pod.
  3. Компоненты отслеживают изменения CRD, чтобы обнаруживать доступные воркеры.

Преимущества​

  • Не требуется внешний кластер etcd.
  • Нативная интеграция с жизненным циклом pod в Kubernetes.
  • Автоматическая очистка при завершении pods.
  • Работает со стандартным RBAC Kubernetes.

Переменные окружения (внедряются оператором)​

ПеременнаяОписание
DYN_DISCOVERY_BACKENDЗадается как kubernetes
POD_NAMEИмя текущего pod
POD_NAMESPACEТекущее пространство имен
POD_UIDУникальный идентификатор pod

Обнаружение через etcd (по умолчанию)​

Если DYN_DISCOVERY_BACKEND не задана (или задана как etcd), для обнаружения сервисов используется etcd.

Конфигурация подключения​

ПеременнаяОписаниеЗначение по умолчанию
ETCD_ENDPOINTSURL etcd, разделенные запятымиhttp://localhost:2379
ETCD_AUTH_USERNAMEИмя пользователя для basic authНет
ETCD_AUTH_PASSWORDПароль для basic authНет
ETCD_AUTH_CAПуть к сертификату CA (TLS)Нет
ETCD_AUTH_CLIENT_CERTПуть к клиентскому сертификатуНет
ETCD_AUTH_CLIENT_KEYПуть к клиентскому ключуНет

Пример:

export ETCD_ENDPOINTS=http://etcd-0:2379,http://etcd-1:2379,http://etcd-2:2379

Регистрация сервисов​

Воркеры регистрируют свои конечные точки в etcd с такой иерархией ключей:

/services/{namespace}/{component}/{endpoint}/{instance_id}

Например:

/services/vllm-agg/backend/generate/694d98147d54be25

Frontend-компоненты и маршрутизаторы обнаруживают доступные воркеры, отслеживая соответствующий префикс и получая обновления в реальном времени, когда воркеры присоединяются или уходят.

Очистка на основе lease​

Каждая среда выполнения поддерживает lease в etcd (TTL по умолчанию: 10 секунд). Если воркер аварийно завершает работу или теряет соединение:

Жизненный цикл lease: keep-alive heartbeat от DistributedRuntime к etcd

  1. Keep-alive heartbeats прекращаются.
  2. Lease истекает после TTL.
  3. Все зарегистрированные конечные точки автоматически удаляются.
  4. Клиенты получают события удаления и перенаправляют трафик на здоровые воркеры.

Это гарантирует очистку устаревших конечных точек без ручного вмешательства.

KV Store​

Dynamo предоставляет абстракцию KV store для хранения метаданных (экземпляров конечных точек, карточек развертывания моделей, каналов событий). Поддерживается несколько механизмов хранения:

BackendСценарий использования
etcdProduction-развертывания
MemoryТестирование и разработка
NATSРазвертывания только с NATS
FileЛокальное постоянное хранение

Операционные рекомендации​

Используйте обнаружение Kubernetes в K8s​

Оператор Dynamo автоматически задает DYN_DISCOVERY_BACKEND=kubernetes для pods. Дополнительная настройка не требуется.

Разверните кластер etcd для bare metal​

Для production-развертываний на bare metal разверните кластер etcd из 3 узлов для высокой доступности.

Настраивайте TTL для lease​

Найдите баланс между скоростью обнаружения сбоев и накладными расходами:

  • Короткий TTL (5s) — более быстрое обнаружение сбоев, больше keep-alive-трафика.
  • Длинный TTL (30s) — меньше накладных расходов, более медленное обнаружение.

Значение по умолчанию (10s) — разумная отправная точка для большинства развертываний.

Связанная документация​