Envoy — high-performance L7 proxy, originally от Lyft (2016), CNCF graduated. Основа most popular service mesh implementations (Istio, AWS App Mesh, Consul Connect). C++ rewrite всех best ideas из nginx/HAProxy. Features: HTTP/2, gRPC, WebSocket, advanced routing, circuit breakers, observability. Configuration через YAML + xDS API для dynamic config.
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
# Envoy listener config
listeners:
- address:
socket_address: { address: 0.0.0.0, port_value: 80 }
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: service_backend }Envoy — это высокопроизводительный прокси-сервер, который также функционирует как плоскость данных для сервисной сетки. Он обеспечивает управление трафиком, мониторинг и безопасность между микросервисами, что делает его идеальным решением для современных распределенных приложений. Основная задача Envoy заключается в обработке сетевого трафика, что позволяет снизить сложность взаимодействия между сервисами и улучшить их производительность.
Envoy предлагает множество функций, которые делают его мощным инструментом для управления трафиком и взаимодействия между сервисами. Вот некоторые из них:
Эти функции делают Envoy идеальным выбором для реализации сервисной сетки, особенно в архитектурах с высокой нагрузкой.
Для того чтобы начать использовать Envoy в вашем проекте, необходимо его правильно настроить. Рассмотрим пример конфигурации, которая может быть использована для настройки Envoy в качестве прокси для микросервисов.
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
config:
codec_type: AUTO
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains:
- '*'
routes:
- match:
prefix: /
route:
cluster: service_a
http_filters:
- name: envoy.filters.http.router
clusters:
- name: service_a
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: service_a
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: service_a_address
port_value: service_a_port
В этом примере мы настраиваем слушатель на порту 10000, который будет принимать запросы и перенаправлять их на кластер service_a. Обратите внимание, что мы используем алгоритм ROUND_ROBIN для балансировки нагрузки и указываем connect_timeout в 250 миллисекунд, что позволяет минимизировать задержки при взаимодействии с сервисами.
Эта конфигурация является основой, которую можно расширять в зависимости от потребностей вашего проекта, добавляя дополнительные фильтры, маршруты и кластеры.
nginx: battle-tested, simple config, strong static file serving. Envoy: better для microservices (gRPC, dynamic config, mesh-ready).
Front proxy / API gateway (replaces nginx + HAProxy). Или edge proxy для Kubernetes ingress.
Да. Envoy YAML verbose. В service mesh deploys — конфиг генерируется control plane'ом автоматически.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.