Erweiterte Konfigurationen einrichten
Dieses Dokument enthält Hinweise, die bei der Konfiguration von Cloud Service Mesh hilfreich sein können.
Einzelne Compute Engine-VM für Cloud Service Mesh konfigurieren
Verwenden Sie dieses Verfahren als Beispiel dafür, wie die Sidecar-Proxy-Bereitstellung und der Traffic kann abgefangen werden, um einer VM Zugriff auf Cloud Service Mesh-Dienste.
Dazu muss Docker installiert sein. Folgen Sie der Anleitung von Docker zur Installation der Docker Engine.
Wenn Sie mit diesem Verfahren Cloud Service Mesh auf einem für eine einzelne VM erforderlich sind, benötigen Sie für einige Einrichtungsaufgaben Zugriff auf einen Linux-Host. Der Host kann ein lokaler Computer oder eine VM sein, die in Ihrem Virtual Private Cloud-Netzwerk ausgeführt wird.
Laden Sie zuerst die Konfigurationsdateien und Beispielskripts herunter und bereiten Sie diese vor.
Melden Sie sich bei dem Linux-Host an, den Sie während der Einrichtung verwenden.
Laden Sie das Archiv der erforderlichen Dateien auf den Linux-Host herunter und entpacken Sie das Archiv:
wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
Das Archiv enthält folgende Dateien:
- sidecar.env – Konfigurationsdatei mit Umgebungsvariablen.
- iptables.sh – Skript zum Einrichten von netfilter-Regeln.
- bootstrap_template.yaml – Bootstrap-Vorlagendatei für Envoy.
- run.sh-Skript der obersten Ebene, das die
sidecar.env
-Konfigurationsdatei verwendet, umiptables
zum Abfangen einzurichten und den Envoy-Sidecar-Proxy auszuführen.
Erstellen Sie auf jedem Host, auf dem ein Sidecar-Proxy ausgeführt wird, einen Systemnutzer, der den Envoy-Proxy-Prozess ausführt. Dies ist der Envoy-Proxy-Nutzer. Die Anmeldung ist für den Envoy-Proxy-Nutzer deaktiviert.
sudo adduser --system --disabled-login envoy
Bearbeiten Sie zum Ändern der Konfiguration die Datei
sidecar.env
. Eine ausführliche Beschreibung der einzelnen Variablen finden Sie in den Inline-Kommentaren in der Konfigurationsdatei.- Legen Sie in der Datei
sidecar.env
für die VariableENVOY_USER
den Nutzernamen fest, den Sie als Envoy-Proxy-Nutzer festlegen.
- Legen Sie in der Datei
Führen Sie dann für jeden VM-Host, auf dem Anwendungen mit Cloud Service Mesh ausgeführt werden, die folgenden Schritte aus:
- Kopieren Sie das gesamte
traffic-director-xdsv3
-Verzeichnis mit der geändertensidecar.env
-Datei auf jeden VM-Host, auf dem Anwendungen ausgeführt werden, die Cloud Service Mesh verwenden sollen. - Fügen Sie das Skript
run.sh
dem Startskript Ihres Systems hinzu. Auf diese Weise wird das Skript nach jedem VM-Neustart ausgeführt. Führen Sie auf jedem VM-Host das Skript
run.sh
aus:cd traffic-director-xdsv3 sudo ./run.sh start
Prüfen Sie, ob der Envoy-Proxy ordnungsgemäß gestartet wurde.
sudo ./run.sh status
Es sollte folgende Ausgabe angezeigt werden:
OK: Envoy seems to be running. OK: Traffic interception seems to be enabled.
Sie können die Abfangrichtung des Traffics so prüfen:
sudo iptables -S -t nat | grep ISTIO_REDIRECT
Folgende Ausgabe wird erwartet:
-N ISTIO_REDIRECT -A ISTIO_OUTPUT -j ISTIO_REDIRECT -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
Routingregelzuordnungen
Es gibt zwei Möglichkeiten, das Routing in einer Routingregelzuordnung zu konfigurieren.
Sie können das Routing auf Grundlage der tatsächlichen Ziel-VIP und des tatsächlichen Ports des Dienstes aktivieren. Wenn Sie eine VIP Ihres Dienstes als IPAddress
-Parameter der Weiterleitungsregel konfigurieren, wird nur der an diese Adresse gerichtete Traffic und der zugehörige Port anhand der Host- und Pfadparameter zugeordnet und weitergeleitet, die in der URL-Zuordnung angegeben sind.
Alternativ können Sie die Adresse Ihrer Weiterleitungsregel auf 0.0.0.0
festlegen.
Dadurch werden Proxys so konfiguriert, dass Traffic nur anhand des Zielports zugeordnet wird, unabhängig von der Ziel-IP-Adresse der Anfrage. Der Traffic wird dann anhand der Host- und Pfadparameter weitergeleitet, die in der URL-Zuordnung angegeben sind.
Bei diesen beiden Ansätzen dürfen die Hostnamen gemäß der Konfiguration in den Hostregeln, verknüpft mit einem Ziel-VIP/Port-Paar oder einem Zielport (falls VIP 0.0.0.0
ist), in Ihrer Service Mesh-Konfiguration nur einmal vorkommen.
Das heißt, Sie können nicht zwei verschiedene Dienste mit unterschiedlichen Gruppen von
Back-Ends, die beide denselben Hostnamen verwenden.
Unabhängig von der ausgewählten Methode muss der Traffic an die VIP, zu der Ihr Diensthostname/FQDN auflöst, und an den Port, der von Ihrem Dienst überwacht wird, abgefangen und an den Sidecar-Proxy weitergeleitet werden. Ausführliche Informationen zur Hostkonfiguration finden Sie unter Einzelne Compute Engine-VM für Cloud Service Mesh konfigurieren.
Alle Weiterleitungsregeln in einem VPC-Netzwerk müssen eine eindeutige Kombination aus IP-Adresse und Port pro VPC-Netzwerk haben, einschließlich der 0.0.0.0
-Adresse. Wenn Sie mehrere Weiterleitungsregeln mit derselben IP-Adresse und demselben Port in einem bestimmten VPC-Netzwerk erstellen, ist nur die erste Weiterleitungsregel gültig. Die anderen werden ignoriert.
Folgen Sie zur Vermeidung von Trafficverlust dem Abschnitt Erweiterte Konfiguration zum Abfangen von Traffic weiter unten.
Erweiterte Konfiguration zum Abfangen von Traffic
Wenn Ihre VMs Anwendungen ausführen, die Zugriff auf von Cloud Service Mesh konfigurierte Dienste benötigen, müssen Sie einen Sidecar-Proxy installieren und das Abfangen von Traffic auf den VMs konfigurieren, damit der Sidecar-Proxy das Traffic-Routing zu den Back-Ends dieser Dienste verwalten kann.
Wenn das Abfangen des gesamten ausgehenden VM-Traffics für Ihre Bereitstellung nicht akzeptabel ist, können Sie bestimmten Traffic an den Sidecar-Proxy weiterleiten, während der Rest des Traffics der regulären Route folgt, die in Ihrer Hostnetzwerkkonfiguration definiert ist.
Ändern Sie dazu die Einrichtung des Compute Engine-VM-Hosts in Cloud Service Mesh-Einrichtung mit VMs und manueller Envoy-Bereitstellung wie folgt vorgehen:
Bereich der IP-Adressen festlegen, die von Cloud Service Mesh gesteuert werden auf die Dienste aufgelöst werden sollen. An diese IP-Adressen gerichteter Traffic wird abgefangen und an den Sidecar-Proxy weitergeleitet. Der Bereich ist für Ihre Bereitstellung spezifisch.
Legen Sie in der Datei
sidecar.env
den Wert vonSERVICE_CIDR
auf diesen Bereich fest. Traffic an diese IP-Adressen wird von netfilter an einen Sidecar-Proxy weitergeleitet und Load-Balancing gemäß der Konfiguration, Cloud Service Mesh.Der Sidecar-Proxy muss nicht unbedingt als dedizierter Nutzer ausgeführt werden, der vom Abfangen von Traffic ausgeschlossen ist. Dies wird jedoch weiterhin empfohlen.
Nachdem Sie das Skript
run.sh
wie in der Hauptprozedur beschrieben ausgeführt haben, istiptables
so konfiguriert, dass nur Traffic in diesem spezifischen Bereich abgefangen und weitergeleitet wird.Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Netfilter richtig konfiguriert ist. Ersetzen Sie ${SERVICE_CIDR} durch den Wert, den Sie als abgefangenen IP-Adressbereich konfiguriert haben.
sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"