menu
arrow_back

Verteilte Lasttests mit Kubernetes

Verteilte Lasttests mit Kubernetes

Hours 5 Credits

GSP182

Google Cloud-Labs zum selbstbestimmten Lernen

Überblick

In diesem Lab lernen Sie, wie Sie mit Kubernetes Engine ein Framework für verteilte Lasttests bereitstellen können. Das Framework verwendet mehrere Container, um Traffic für Lasttests für eine einfache REST-basierte API zu erzeugen. Zwar wird in dieser Lösung nur eine einfache Webanwendung getestet, doch lassen sich nach dem gleichen Prinzip auch komplexere Lasttestszenarien wie Spiele oder IoT-Anwendungen erstellen. Dabei wird die allgemeine Architektur eines containerbasierten Frameworks für Lasttests erläutert.

Zu testendes System

Das im Lab zu testende System ist eine kleine Webanwendung, die in Google App Engine bereitgestellt wird. Die Anwendung stellt grundlegende REST-artige Endpunkte dar, um eingehende HTTP-POST-Anfragen zu erfassen, wobei eingehende Daten nicht beibehalten werden.

Beispiel-Arbeitslasten

Die Anwendung, die Sie bereitstellen, ist nach dem Vorbild der Back-End-Dienstkomponente konzipiert, die in vielen IoT-Deployments zu finden ist. Geräte werden zuerst bei dem Dienst registriert und melden dann Mess- oder Sensorwerte. Gleichzeitig werden die Geräte regelmäßig neu beim Dienst registriert.

Eine typische Interaktion der Back-End-Dienstkomponente sieht so aus: 542dlt85f86jjd1f.png

Um diese Interaktion zu modellieren, nutzen Sie Locust, ein verteiltes, Python-basiertes Tool für Lasttests, mit dem sich Anfragen an mehrere Zielpfade verteilen lassen. Locust kann zum Beispiel Anfragen an die Zielpfade /login und /metrics senden.

Die Arbeitslast basiert auf der oben beschriebenen Interaktion und wird in Locust als Reihe von Aufgaben modelliert. Um konkrete Clients anzugleichen, wird jede Locust-Aufgabe gewichtet. Eine Registrierung erfolgt zum Beispiel bei tausend Client-Anfragen einmal.

Container-basiertes Computing

  • Das Locust-Container-Image ist ein Docker-Image, das die Locust-Software enthält.

  • Ein Container-Cluster besteht aus mindestens einem Cluster-Master und mehreren Worker-Maschinen, die Knoten genannt werden. Auf diesen Master- und Knotenmaschinen wird das Cluster-Orchestrierungssystem Kubernetes ausgeführt. Weitere Informationen zu Clustern finden Sie in der Kubernetes Engine-Dokumentation.

  • Ein Pod besteht aus einem oder mehreren Containern, die zusammen auf einem Host bereitgestellt werden. Er bildet die kleinste Recheneinheit, die sich definieren, bereitstellen und verwalten lässt. Einige Pods enthalten nur einen einzigen Container. In diesem Lab wird beispielsweise jeder Locust-Container in einem eigenen Pod ausgeführt.

  • Ein Deployment-Controller liefert deklarative Updates für Pods und Replikatsets. In diesem Lab gibt es zwei Deployments: eines für locust-master und das andere für locust-worker.

  • Dienste

    Ein bestimmter Pod kann aus verschiedenen Gründen verschwinden. Dazu zählen Knotenfehler oder absichtliche Knotenunterbrechungen aufgrund von Updates oder Wartung. Das bedeutet, dass die IP-Adresse eines Pods keine zuverlässige Schnittstelle für diesen Pod ist. Zuverlässiger wäre eine abstrakte Darstellung dieser Schnittstelle, die unverändert bleibt, selbst wenn der zugrunde liegende Pod verschwindet und durch einen neuen Pod mit einer anderen IP-Adresse ersetzt wird. Ein Kubernetes Engine-Dienst bietet eine solche abstrakte Schnittstelle durch das Definieren einer logischen Reihe von Pods und einer Richtlinie für den Zugriff auf diese Pods.

    In diesem Lab gibt es mehrere Dienste, die Pods oder Pod-Reihen darstellen. Es gibt zum Beispiel einen Dienst für den DNS-Server-Pod, einen weiteren Dienst für den Locust-Master-Pod und einen Dienst, der alle zehn Locust-Worker-Pods darstellt.

    Im folgenden Diagramm sehen Sie den Inhalt der Master- und Worker-Knoten:

4er1cd4e32459737.png

Aufgaben

  • Ein Testsystem erstellen, d. h. eine kleine Webanwendung, die in Google App Engine bereitgestellt wird
  • Mit Kubernetes Engine ein Framework für verteilte Lasttests bereitstellen
  • Lasttest-Traffic für eine einfache REST-basierte API erstellen

Voraussetzungen

  • Erfahrung mit App Engine- und Kubernetes Engine GCP-Diensten
  • Erfahrung mit standardmäßigen Linux-Texteditoren wie Vim, Emacs oder Nano

Join Qwiklabs to read the rest of this lab...and more!

  • Get temporary access to the Google Cloud Console.
  • Over 200 labs from beginner to advanced levels.
  • Bite-sized so you can learn at your own pace.
Join to Start This Lab