Envoy — современный прокси для микросервисов | Глоссарий FREEHOSTING

Envoy

Envoy Proxy
Envoy — Envoy — это современный открытый прокси-сервер на уровне приложений, предназначенный для управления, наблюдения и повышения безопасности сетевого трафика в распределённых системах и микросервисах.

Определение простыми словами

Envoy — это высокопроизводительный прокси-сервер, который действует как посредник между клиентом и сервером. Он анализирует, фильтрует и маршрутизирует сетевой трафик, обеспечивая балансировку нагрузки, безопасность и наблюдение. Широко используется для построения сервис-мешей и оптимизации взаимодействия микросервисов.

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

Сравнение

Параметр Envoy Proxy HAProxy Nginx
Тип Layer 7 Proxy Layer 4/7 Proxy Layer 7 Proxy/Веб-сервер
Основное применение Сервис-меш, микросервисы Балансировка нагрузки, прокси Веб-сервер, обратный прокси
Поддержка протоколов HTTP/2, gRPC, TCP HTTP, TCP HTTP/1.1, HTTP/2
Расширяемость Плагины, фильтры (extensible) Модификация конфигурации Обширные модули
Наблюдаемость Подробные метрики, трассировка Ограниченные метрики Метрики, логи

Кейсы использования

  • Реализация сервис-меша для управления сетевыми запросами между микросервисами.
  • Балансировка нагрузки и маршрутизация в облачных и контейнерных средах.
  • Обеспечение безопасности трафика с поддержкой TLS и авторизации.
  • Сбор детализированной телеметрии и трассировка запросов для мониторинга.
  • Организация межкластерной связи и управление политиками доступа.

Негативный пример: Использование Envoy для простого статического веб-хостинга избыточно и усложняет архитектуру без практической выгоды.

Технические детали

Envoy написан на C++ и оптимизирован для высокой производительности. Он поддерживает следующие возможности:

  • Динамическая конфигурация через xDS API.
  • Поддержка HTTP/2, gRPC, TCP, и UDP (экспериментально).
  • Интеграция с системами аутентификации и авторизации (например, JWT).
  • Механизмы повторных попыток, таймаутов, лимитирования и кэширования.

Пример базовой конфигурации Envoy (YAML):

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match: { prefix: "/" }
                route: { cluster: some_service }
          http_filters:
          - name: envoy.filters.http.router
  clusters:
  - name: some_service
    connect_timeout: 0.25s
    type: STATIC
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: some_service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 8080

Дополнительная информация доступна в статье о сервис-мешах, микросервисах и прокси.

Частые вопросы

Что такое Envoy?

Это современный прокси-сервер для управления трафиком в распределённых приложениях и микросервисах.

В чем отличие Envoy от традиционных прокси?

Envoy предоставляет сервис-меш функции, включая динамическую конфигурацию, расширяемость и глубокий мониторинг.

Можно ли использовать Envoy вместо Nginx?

Envoy лучше подходит для микросервисов и сервис-меша, Nginx — для статического контента и классического обратного прокси.