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

Чтобы получить чистое 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) — разумная отправная точка для большинства развертываний.

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