Der WSO2 API Manager verfügt über die Möglichkeit, sowohl mit Failover-Endpunkten als auch mit Endpunkten mit Lastausgleich zu arbeiten. In unserem Blog werden wir eine API mit einem Lastausgleichsendpunkt aus dem API Manager heraus erstellen. Wir verwenden den WSO2 API Manager 3.2.0, die neueste Version des WSO2 API Managers zum Zeitpunkt der Erstellung dieses Artikels.
Installation von WSO2 API Manager
In einem anderen Artikel findest du Informationen über die Installation des WSO2 API Managers. Dieser Artikel führt dich durch die wichtigsten Schritte, die bei der Installation des Produkts zu beachten sind. Falls du ein anderes Produkt oder eine andere Versionsnummer des Produkts verwendest, sind die im Artikel beschriebenen Schritte trotzdem relevant für dich. Du kannst sie sicher durchführen.
Kurz gesagt: Es ist notwendig, dass Du zuerst Java installierst, falls Du das nicht schon hast. Unterstützt wird u.a. Java 8 / 121, oder auch das offene JDK 11. Nachdem du JAVA_HOME gesetzt hast, kannst du die Zip-Datei mit dem API Manager herunterladen und entpacken. Dies funktioniert sowohl unter Windows als auch unter Linux / Mac OS. Es gibt eigentlich mehrere Möglichkeiten, WSO2 Produkte zu installieren, darunter auch Installer, aber diese fallen unter die Softwarelizenz. Die Open Source Version kann als Zip-Datei von Github heruntergeladen werden
WireMock um die APIs zu simulieren
Um die APIs, die wir für den Failover benötigen, zu simulieren, verwende ich WireMock. Es stellt die Mock-APIs standardmäßig auf Port 8080 bereit. Bei Deinem Setup kannst Du es lokal oder auf einem Server laufen lassen. Du findest eine Anleitung zur Ausführung von WireMock in diesem Artikel von meinem Kollegen Dusan Devic. Er erklärt auch den Mechanismus von WireMock und wo du die json-Dateien ablegen musst.
Dies ist die API1 (api1.json) Definition für WireMock, die mit einer einfachen Nachricht antwortet:
{ "request": { "method": "GET", "url": "/api_1" }, "response": { "status": 200, "body": "This is API 1", "fixedDelayMilliseconds": 0, "headers": { "Content-Type": "application/json" } } }
Kopiere diese API-Definition in api2.json und api3.json und ändere den Body so, dass er „This is API 2“ bzw. „This is API 3“ anzeigt. Vergiss nicht, auch die Url (/api_1) in /api_2 und /api_3 zu ändern.
API im API Publisher erstellen
Wir werden eine API mit dem Load Balancer Endpunkt aus der API Publisher UI heraus erstellen. Du startest den API Manager Publisher wie du es normalerweise tun würdest (ich gehe davon aus, dass es sich um eine „out of the box“ Installation handelt) mit https://localhost:9443/publisher. Melde dich mit der Benutzerkennung admin und dem Passwort admin an.
Lass uns damit beginnen, eine neue API namens „Loadbalanced“ zu erstellen. Wähle die Option „Design New REST API“ aus dem Menü im API Publisher.
Gib die Details wie in diesem Screenshot gezeigt in Bezug auf die API Definition ein:
Klicke auf „Create“, um die API zu erstellen. Nach der Erstellung wird dir dieser Übersichtsbildschirm angezeigt.
Es gibt einige weitere Details, die wir angeben müssen. Lass uns die „Design configurations“ öffnen und auch diese Details ausfüllen.
Ich selbst habe ein Logo erstellt und es auf die API auf dieser Seite hochgeladen. Du kannst das Standardlogo (ein einfacher Hintergrund und ein Symbol) verwenden, das der API Manager vorschlägt oder dein eigenes erstellen. Die anderen Felder füllst du wie im Bild unten gezeigt aus. Selbstverständlich kannst du sie ändern, aber Änderungen an der Sichtbarkeit und der Zugriffskontrolle haben Auswirkungen auf die API.
Klicke auf SAVE, um die Änderungen zu speichern.
Gehe zu „Ressourcen“ und entferne alle Wildcard-Ressourcen, die voreingestellt erstellt wurden, bis auf die Ressource mit dem GET HTTP Verb und dem URI-Muster „/*“.
Klicke auf SAVE, um die Änderungen zu speichern.
Klicke auf dem Übersichtsbildschirm auf die Endpunkte und nimm die folgenden Änderungen vor:
Füge zwei Load Balance Endpunkte hinzu, indem du den ursprünglichen Endpunkt kopierst und das Suffix ‚1‘ (api_1) in die Nummern 2 und 3 änderst, wie im Screenshot gezeigt.
Speichere erneut, um die Änderungen zu übernehmen.
Veröffentliche die API in der Lebenszyklusdefinition und gehe zum Devportal, um die API zu sehen. Im API Publisher wird es einen Link geben.
Abonniere die API mit der Standardanwendung.
Wähle PROD KEYS und generiere Keys.
Kopiere den Token mit dem Symbol rechts (das Papier-Symbol). Dieser befindet sich nun im Speicher. Schließe das Fenster.
Wir werden SoapUI verwenden, um die API auszuprobieren.
Starte SoapUI und erstelle ein neues Restprojekt. Verwende die http://localhost:8280/load/1.0 URI.
Wenn das Projekt erstellt ist, klicke auf die Schaltfläche Auth.
Wähle Oauth 2.0 aus der Dropdown-Liste als Autorisierung aus.
Kopiere den Token in das Feld Access Token.
Klicke auf den grünen Pfeil.
Widerhole dies einige Male. Achte darauf, dass der Load Balanced Endpunkt die Anrufe umleitet.
Schlussfolgerung
Falls du ein Load Balanced Setup haben möchtest, dann kannst du das in der API Definition selbst machen. Der Algorithmus ist ein einfaches Round-Robin-Setup, das die Endpunkte durchlaufen wird.