Podstawowy pomysł: Wydajne Przekierowywanie
Envoy jest wydajnym serwerem proxy napisanym w języku C++ rozwijanym przez Lyft, zaprojektowanym specjalnie do obsługi wszystkich przepływów przychodzących i wychodzących dla usług w sieci usługi.
Funkcjonuje jako proxy L7 i system komunikacyjny dla dużych współczesnych architektur opartych na usługach. Envoy działa razem z aplikacjami, abstrahując sieć i dostarczając funkcje, które byłyby trudne do zaimplementowania w każdej indywidualnej usłudze.
Sprawdzanie stanu zdrowia: Aktywne i pasywnie monitorowane
Envoy oferuje zaawansowane możliwości równonagrzewania wykorzystując różne algorytmy.
Interfejs API xDS pozwala na dynamiczne konfiguracje, umożliwiając szybkie dostosowania routingu usług w oparciu o real-time sprawdzanie stanu zdrowia.
CDS (Usługa Znajdowania Klastera): Konfiguracja Klastera
EDS (Usługa Znajdowania Węzłów) utrzymuje listę węzłów w ramach klastera.
LDS (Usługa Odkrywania Słuchaczy) konfiguruje słuchacze, określając, jak Envoy powinien odbierać i przekierowywać ruch.
Często zadawane pytania
Czy Envoy może być używany jako brama API?
Tak, Envoy jest idealnie nadzwyczajny do funkcjonowania jako brama API. Możesz skonfigurować go utworzeniem nasłuchiwacza na portach 80 lub 443, ustawieniem wirtualnych hostów dla różnych domen i ścieżek, routowaniem ruchu przy użyciu ścieżek do usług backendowych, dodaniem filtrów autoryzacyjnych, takich jak JWT lub OAuth, zaimplementowaniu ograniczeń na szybkość, włączeniem filtrów CORS i zarządzaniu końcem SSL/TLS. Na przykład jeden nasłuchiwanie mogło odbierać wszystkie żądania, routując je na podstawie ścieżki (/api/users, /api/orders), z każdą ścieżką wskazującą na inny klastrowany serwis.
Czy Envoy obsługuje terminację i pochodzenie TLS?
Tak, bez zarzutu. Envoy obsługuje zarówno terminację TLS, jak i pochodzenie TLS. Terminacja TLS polega na odbiorze połączeń z szyfrowaniem i przekazywaniu danych w nieszyfrowanym formacie do usług backendowych. Pochodzenie TLS polega na odbiorze danych w nieszyfrowanym formacie i przekazywaniu zaszyfrowanych połączeń do usług backendowych. To konfiguruje się dodając transportowe gniazdo TLS z kontekstem TLS do nasłuchiwanego gniazda, wykorzystując certyfikaty otrzymane poprzez SDS lub statycznie, wsparcie SNI (Server Name Indication) oraz automatyczną rotację certyfikatów za pomocą SDS.
Czy Envoy oferuje kompleksową obserwacjum?
Tak, Envoy dostarcza ogromne funkcje obserwacyjne. Ofere on metryki poprzez punkt końcowy /stats (i eksport do Prometheus), dzienniki dostępu w różnych formatach (JSON, tekstowy), śledzenie rozproszone za pomocą OpenTracing/OpenTelemetry oraz interfejs administracyjny na porcie 9901. Metryki obejmują liczby żądań, trwania, błędy, liczebności połączeń i stanów blokady drzwi. Dzienniki dostępu zawierają szczegółowe informacje o każdym żądaniu. Śledzenie wykorzystuje automatyczną wtyczkę nagłówków do śledzenia, integrując się z narzędziami takimi jak Zipkin i Jaeger.
Czy Envoy obsługuje ograniczanie szybkości poprzez Redis?
Tak, Envoy może implementować ograniczanie szybkości przy użyciu usługi limitu prędkości opartej na Redis. Dodajesz filtr limitu prędkości do łańcucha filtrowego HTTP, skonfigurujesz punkt końcowy usługi limitu prędkości i definiujesz opisowe elementy dla zasad ograniczania prędkości na podstawie czynników takich jak adres IP, nagłówki (identyfikator użytkownika, klucz API) lub ich kombinacje. Możesz użyć osobnej usługi limitu prędkości (z implementacją odwołującą się do Envoy) lub wykorzystać istniejące rozwiązania.
▶ Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Hash Function Avalanche Visualizer i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.