fb
API Management 4 Minuten

Eine API mit Endpunkten mit Lastverteilung erstellen

Rob Blaauboer
Rob Blaauboer
Integration Consultant & WSO2 Trainer
Blog API load balance
Scrollen

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.

Loadbalanced 1

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.

Loadbalanced 2

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. 

Loadbalanced 3

Gib die Details wie in diesem Screenshot gezeigt in Bezug auf die API Definition ein: 

Loadbalanced 4

Klicke auf „Create“, um die API zu erstellen. Nach der Erstellung wird dir dieser Übersichtsbildschirm angezeigt.  

Loadbalanced 5

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. 

Loadbalanced 6

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 „/*“.

Loadbalanced 7

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. 

Loadbalanced 8

Speichere erneut, um die Änderungen zu übernehmen. 

Loadbalanced 9

Veröffentliche die API in der Lebenszyklusdefinition und gehe zum Devportal, um die API zu sehen. Im API Publisher wird es einen Link geben.  

Loadbalanced 10

Abonniere die API mit der Standardanwendung.  

Loadbalanced 11
Loadbalanced 12
Loadbalanced 13

Wähle PROD KEYS und generiere Keys.

Loadbalanced 14
Loadbalanced 15
Loadbalanced 16
Loadbalanced 17

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.

Loadbalanced 18

Wenn das Projekt erstellt ist, klicke auf die Schaltfläche Auth.

Loadbalanced 19

Wähle Oauth 2.0 aus der Dropdown-Liste als Autorisierung aus.

Loadbalanced 20

Kopiere den Token in das Feld Access Token.

Loadbalanced 21

Klicke auf den grünen Pfeil.

Loadbalanced 22

Widerhole dies einige Male. Achte darauf, dass der Load Balanced Endpunkt die Anrufe umleitet.

Loadbalanced 23
Loadbalanced 24
Loadbalanced 25

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.