Cloud Service Mesh mit proxylosen gRPC-Diensten – Übersicht
Dieser Leitfaden bietet eine Übersicht über die Architektur von Cloud Service Mesh mit proxylosen gRPC-Diensten, einschließlich Anwendungsfällen und Architekturmustern.
Die verwaltete Steuerungsebene von Cloud Service Mesh ermöglicht globales Routing, Load Balancing und regionales Failover für Service Mesh- und Load Balancing-Anwendungsfälle. Dazu gehören auch Bereitstellungen, die Sidecar- und Gateway-Proxys enthalten. Da Cloud Service Mesh proxylose gRPC-Anwendungen unterstützt, steht Ihnen ein zusätzliches Bereitstellungsmodell zur Verfügung. Hierbei können gRPC-Anwendungen Teil eines Service Mesh sein, ohne dass ein Sidecar-Proxy erforderlich ist.
In einem typischen Beispiel stellt ein gRPC-Client eine Verbindung mit einem gRPC-Server her, der Ihre Back-End-Logik hostet. Cloud Service Mesh informiert gRPC-Clients darüber, welche Server kontaktiert werden sollen, wie das Load Balancing von Anfragen an mehrere Instanzen eines Servers erfolgt und was mit Anfragen geschehen soll, wenn ein Server nicht ausgeführt wird.
Eine vollständige Übersicht über die Funktionsweise von Cloud Service Mesh finden Sie unter Cloud Service Mesh – Übersicht.
Funktionsweise von Cloud Service Mesh mit gRPC-Anwendungen
Cloud Service Mesh konfiguriert gRPC-Clients mit einer unterstützten gRPC-Version. Dies ähnelt der Konfiguration von Sidecar-Proxys wie Envoy. Proxylose gRPC-Anwendungen, die direkt mit Cloud Service Mesh verbunden sind, benötigen jedoch keine Sidecar-Proxys. Stattdessen verwendet Cloud Service Mesh Open Source xDS APIs, um gRPC-Anwendungen direkt zu konfigurieren. Diese gRPC-Anwendungen dienen als xDS-Clients, die eine Verbindung zur globalen Steuerungsebene von Cloud Service Mesh herstellen. Nachdem sie verbunden wurden, erhalten gRPC-Anwendungen eine dynamische Konfiguration von der Steuerungsebene, wodurch die Endpunkterkennung, das Load-Balancing, regionales Failover und Systemdiagnosen möglich sind. Mithilfe dieses Ansatzes können Sie zusätzliche Cloud Service Mesh-Bereitstellungsmuster nutzen.
In der ersten Abbildung wird ein Service Mesh durch die Verwendung eines Sidecar-Proxys aktiviert.
Zur Konfiguration eines Sidecar-Proxys verwendet Cloud Service Mesh xDS APIs. Clients kommunizieren über den Sidecar-Proxy mit dem Server.
In der zweiten Abbildung wird ein Service Mesh ohne einen Sidecar-Proxy aktiviert. Dazu wird ein proxyloser gRPC-Client verwendet.
Wenn Sie nur gRPC-Dienste bereitstellen, die von Cloud Service Mesh konfiguriert werden, können Sie ein Service Mesh erstellen, ohne überhaupt Proxys bereitzustellen. Dies erleichtert die Nutzung von Service Mesh-Funktionen in Ihren gRPC-Anwendungen.
Namensauflösung
Die Namensauflösung funktioniert bei proxylosen Bereitstellungen auf folgende Weise:
- Sie legen
xds
als Namensauflösungsschema im gRPC-Clientkanal fest, wenn eine Verbindung zu einem Dienst hergestellt wird. Der Ziel-URI hat das Formatxds:///hostname:port
. Wenn der Port nicht angegeben wird, ist der Standardwert 80, z. B. im Ziel-URIxds:///example.hostname
. - Der gRPC-Client löst den
hostname:port
im Ziel-URI auf. Dazu wird eine LDS-Anfrage (Listener Discovery Service) an Cloud Service Mesh gesendet. - Cloud Service Mesh sucht die konfigurierten Weiterleitungsregeln mit einem übereinstimmenden Port. Anschließend wird die entsprechende URL-Zuordnung für eine Hostregel gesucht, die mit
hostname:port
übereinstimmt. Sie gibt die zugehörige Routingkonfiguration an den gRPC-Client zurück.
Die Hostregeln, die Sie in Cloud Service Mesh konfigurieren, müssen in allen URL-Zuordnungen eindeutig sein. Beispielsweise sind example.hostname
, example.hostname:80
und example.hostname:8080
unterschiedliche Regeln.
Namensauflösung mit unterschiedlichen Bereitstellungstypen
Das Namensauflösungsschema ist für proxylose Bereitstellungen und Bereitstellungen, die Envoy-Proxys verwenden, unterschiedlich.
Der gRPC-Client verwendet das Namensauflösungsschema xds
, um eine Verbindung zu einem Dienst herzustellen. Dadurch kann der Client die Dienstkonfiguration von Cloud Service Mesh empfangen. Der gRPC-Client kommuniziert dann direkt mit dem gRPC-Server.
Sie können proxylose Bereitstellungen und Bereitstellungen mit Sidecar-Proxys kombinieren, um mehr Flexibilität zu erhalten. Eine Kombination der Bereitstellungsmuster ist besonders hilfreich, wenn Ihre Organisation und Ihr Netzwerk mehrere Teams mit unterschiedlichen Feature- und Betriebsanforderungen sowie gRPC-Versionen unterstützen.
In der folgenden Abbildung kommunizieren sowohl gRPC-Clients mit einem Sidecar-Proxy als auch proxylose gRPC-Clients mit einem gRPC-Server. Die gRPC-Clients mit Sidecar-Proxys verwenden das Namensauflösungsschema dns
.
Anwendungsfälle
Anhand der folgenden Anwendungsfälle können Sie besser nachvollziehen, wann Sie Cloud Service Mesh mit proxylosen gRPC-Anwendungen verwenden sollten. Ihre Bereitstellung kann proxylose gRPC-Anwendungen, gRPC-Anwendungen mit Sidecar-Proxys oder eine Kombination aus beidem umfassen.
Ressourceneffizienz in einem umfangreichen Service Mesh
Wenn Ihr Service Mesh Hunderte oder Tausende von Clients und Back-Ends umfasst, werden Sie unter Umständen feststellen, dass der Gesamtressourcenverbrauch für ausgeführte Sidecar-Proxys stetig anwächst. Wenn Sie proxylose gRPC-Anwendungen verwenden, müssen Sie keine Sidecar-Proxys in Ihre Bereitstellung aufnehmen. Ein proxyloser Ansatz kann zu Effizienzsteigerungen führen.
Leistungsstarke gRPC-Anwendungen
Für einige Anwendungsfälle ist jede Millisekunde der Anfrage- und Antwortlatenz von Bedeutung. In einem solchen Fall kann die Latenz geringer ausfallen, wenn Sie eine proxylose gRPC-Anwendung verwenden, statt alle Anfragen über einen clientseitigen Sidecar-Proxy und gegebenenfalls einen serverseitigen Sidecar-Proxy zu übertragen.
Service Mesh für Umgebungen, in denen keine Sidecar-Proxys bereitgestellt werden können
In einigen Umgebungen ist es eventuell nicht möglich, einen Sidecar-Proxy als zusätzlichen Prozess neben Ihrer Client- oder Serveranwendung auszuführen. Es kann auch sein, dass Sie den Netzwerk-Stack einer Maschine nicht zum Abfangen und Weiterleiten von Anfragen, z. B. mit iptables
, konfigurieren können.
In diesem Fall können Sie Cloud Service Mesh mit proxylosen gRPC-Anwendungen verwenden, um Service Mesh-Funktionen für Ihre gRPC-Anwendungen einzusetzen.
Heterogenes Service Mesh
Da sowohl proxylose gRPC-Anwendungen als auch Envoy mit Cloud Service Mesh kommunizieren, kann Ihr Service Mesh beide Bereitstellungsmodelle enthalten. Bei Verwendung beider Modelle können Sie die unterschiedlichen Betriebs-, Leistungs- und Featureanforderungen der verschiedenen Anwendungen und unterschiedlichen Entwicklungsteams erfüllen.
Von einem Service Mesh mit Proxys zu einem Mesh ohne Proxys migrieren
Wenn Sie bereits eine gRPC-Anwendung mit einem Sidecar-Proxy haben, der Cloud Service Mesh konfiguriert hat, können Sie auf eine proxylose gRPC-Anwendung umstellen.
Wenn ein gRPC-Client mit einem Sidecar-Proxy bereitgestellt wird, wird anhand von DNS der Hostname aufgelöst, mit dem eine Verbindung hergestellt wird. Der Sidecar-Proxy fängt Traffic ab, um Service Mesh-Funktionen bereitzustellen.
Sie können festlegen, ob ein gRPC-Client die proxylose Route oder die Sidecar-Proxy-Route verwendet, um mit einem gRPC-Server zu kommunizieren. Dazu müssen Sie das verwendete Namensauflösungsschema ändern. Proxylose Clients verwenden das Namensauflösungsschema xds
und Sidecar-Proxys das Namensauflösungsschema dns
. Einige gRPC-Clients verwenden bei der Kommunikation mit einem gRPC-Server möglicherweise sogar die proxylose Route, während sie bei der Kommunikation mit einem anderen gRPC-Server die Sidecar-Proxy-Route nutzen. Auf diese Weise können Sie schrittweise zu einer proxylosen Bereitstellung migrieren.
Erstellen Sie einen neuen Cloud Service Mesh-Dienst, der von Ihrem proxylosen gRPC-Client verwendet wird, um von einem Service Mesh mit Proxys zu einem proxylosen Mesh zu migrieren. Mit den gleichen APIs können Sie Cloud Service Mesh für die bestehenden und neuen Versionen konfigurieren.
Architektur und Ressourcen
Das Konfigurationsdatenmodell für proxylose gRPC-Dienste erweitert das Konfigurationsmodell von Cloud Service Mesh mit einigen Ergänzungen und Einschränkungen, die in diesem Leitfaden beschrieben werden. Einige dieser Einschränkungen gelten nur vorübergehend, da proxylose gRPC-Anwendungen noch nicht alle Features von Envoy unterstützen. Andere wiederum sind mit der Verwendung von RPCs verbunden. Beispielsweise werden HTTP-Weiterleitungen, die gRPC verwenden, nicht unterstützt. Damit Sie das Konfigurationsmodell in dieser Anleitung besser verstehen, sollten Sie sich mit den Konzepten und der Konfiguration von Cloud Service Mesh vertraut machen.
Das folgende Diagramm zeigt die Ressourcen, die Sie für proxylose gRPC-Anwendungen konfigurieren müssen.
Systemdiagnosen
Eine gRPC-Systemdiagnose kann den Status eines gRPC-Dienstes prüfen, der auf einer Backend-VM-Instanz oder in einer Netzwerk-Endpunktgruppe (NEG) ausgeführt wird.
Wenn eine gRPC-Systemdiagnose nicht verwendet werden kann, weil Ihr gRPC-Server das gRPC-Systemdiagnoseprotokoll nicht implementiert, sollten Sie stattdessen eine TCP-Systemdiagnose verwenden. Verwenden Sie keine HTTP-, HTTPS- oder HTTP/2-Systemdiagnose.
Weitere Informationen finden Sie im Abschnitt zur gRPC-Systemdiagnose und unter Zusätzliches Flag für gRPC-Systemdiagnosen.
Backend-Dienst
Der Back-End-Dienst definiert, wie ein gRPC-Client mit einem gRPC-Server kommuniziert.
Legen Sie beim Erstellen eines Back-End-Dienstes für gRPC das Protokollfeld auf GRPC
fest.
gRPC-Anwendungen können einen Back-End-Dienst, bei dem für das Protokoll
GRPC
festgelegt ist, auch über einen Sidecar-Proxy aufrufen. In diesem Fall darf der gRPC-Client nicht das Namensauflösungsschemaxds
verwenden.In allen Cloud Service Mesh-Bereitstellungen muss das Load-Balancing-Schema für den Back-End-Dienst
INTERNAL_SELF_MANAGED
sein.
Back-Ends
Back-Ends hosten Ihre gRPC-Serverinstanzen. Sie können verwaltete oder nicht verwaltete Instanzgruppen in Compute Engine und zonale NEGs in Google Kubernetes Engine als Back-Ends zum Hosten Ihrer gRPC-Serverinstanzen verwenden.
Nächste Schritte
- Weitere Informationen zu den Dienstrouting-APIs und zu ihrer Funktionsweise finden Sie in der Übersicht.
- Informationen zum Konfigurieren von Cloud Service Mesh mit proxylosen gRPC-Anwendungen finden Sie unter Einrichtung mit Envoy und proxylosen Arbeitslasten vorbereiten.
- Weitere Informationen zu Einschränkungen für proxylose gRPC-Bereitstellungen finden Sie unter Limits und Einschränkungen mit proxylosen gRPC-Anwendungen.