Im letzten Tutorial haben wir bereits WordPress installiert und können es nun erfolgreich aufrufen. Die bisherige Art der Installation gleicht jedoch eher einer herkömmlichen Installation bei einem Shard-Hosting-Anbieter und nutzt die Möglichkeiten der OpenStack Cloud noch nicht vollständig aus. In diesem Tutorial werden wir nun mit Hilfe des Snapshot-Features eine Kopie des vorhandenen Webservers erstellen und einen Load Balancer einrichten. Der Load Balancer wird anstatt des bisherigen Webservers die Anfragen verarbeiten und per ROUND ROBIN Verfahren an die Webserver verteilen. Somit kann die Last der Anfragen auf mehrere Webserversysteme verteilt werden.

Load Balancer für Webserver in OpenStack einrichten

Loggen Sie sich mit Ihrem Browser in das teutoStack Dashboard ein. Klicken Sie nun im Hauptmenü des Dashboards  unter Manage Network auf den Menüpunkt Load Balancer. Sie sehen nun die noch leere Pool-Liste Ihrer Load Balancer.

Einen Pool für Webserverinstanzen anlegen

Vergeben Sie unter Name mit “webpool” einen Namen für den neuen Pool. Optional können Sie bei Description eine Beschreibung angeben.  Als Provider steht aktuell nur haproxy bereit, dort können Sie somit keine andere Auswahl treffen. Wählen Sie bei Subnet Ihr Subnet aus der Liste. Als Protocol verwenden wir HTTP und die Load Balancing Method ROUND_ROBIN. Die Checkbox Admin State können Sie aktiviert lassen.

Add Pool Dialog in OpenStack

Add Pool Dialog in OpenStack

Klicken Sie nun auf den Button Add Pool um einen neuen Pool für Ihren Load Balancer hinzuzufügen.Klicken Sie nun auf Add um den neuen Pool anzulegen. Der neue Pool erscheint nun in der Liste.

Instanzen dem Pool hinzufügen

Fügen Sie nun dem Pool über den Button Add Member im Reiter Members die vorhandene Instanz zu. Im Dialog wählen Sie den angelegten Pool und setzen die Checkbox bei der web1 Instanz. Als Port geben Sie den Port 80 an. Bestätigen Sie das Anlegen über den Add Button.

Überwachung von Instanzen mit einem Health Monitor

Um die Instanzen im Pool überwachen und ggf. einzelne abgeschaltete Instanzen im Pool deaktivieren zu können verwendet man den integrierten Health Monitor. Klicken Sie auf Monitors und anschließend auf Add Monitor um den Dialog zum Anlegen eines neuen Health Monitors zu öffnen.

Anlegen eines Health Monitors in OpenStack

Anlegen eines Health Monitors in OpenStack

Da der Health Monitor einen Webserver überwachen soll, wählen Sie bei Type den Wert HTTP aus. Bei Delay, Timeout und Max Retries können Sie z.B. 3 für die Anzahl der Sekunden bzw. Versuche angeben. Die anderen Werte wie die HTTP-Method, die URL oder Expected HTTP Status Code müssen nicht verändert werden, da diese bereits passen. Klicken Sie nun wieder auf Add um den Monitor hinzuzufügen.

Wechseln Sie nun wieder in den Reiter Pool und wählen Sie in der Zeile Ihres Pools über den Button more den Punkt add Health Monitor. Im nun geöffneten Dialog wählen Sie den eben angelegten Monitor aus und bestätigen Sie die Auswahl mit dem Button add.

VIP für Pool vergeben

Anschließend muss dem Pool noch eine interne IP zugeordnet werden. Klicken Sie dazu erneut auf den Button more und wählen Sie add VIP. Vergeben Sie einen Namen für die neue VIP. Bei Specify a free IP address geben Sie eine freie IP aus Ihrem Subnetz an welche später der Floating IP zugeordnet wird. Notieren Sie sich diese IP für die spätere Verwendung. Als Protocol Port geben Sie wieder den Port 80 für das Protocol HTTP an. Wenn Sie eine Session Persistence festlegen wollen können Sie hier z.B. SOURCE_IP auswählen. Die anderen Werte bleiben unverändert. Mit add wird die VIP gespeichert.

Nun muss die VIP noch der externen IP zugeordnet werden welche bisher für den Webserver verwendet wurde. Gehen Sie dazu unter Access & Security auf den Reiter Floating IPs. Wählen Sie bei der Zeile Ihrer Webserverinstanz web1 den Button disasociate und bestätigen Sie im folgenden Dialog den Vorgang. Die Floating IP erscheint nun weiterhin in der Liste, ist jedoch keiner Instanz mehr zugeordnet. Klicken Sie nun wieder auf associate um die Floating IP dem Port des Load Balancers zuzuordnen. Wählen Sie bei Port to be associated die zuvor notierte IP Adresse an und Bestätigen Sie den Vorgang über den Associate Button.

Sicherheitsgruppe für Port vergeben

Leider bietet aktuell das Dashboard noch keine Möglichkeit eine Sicherheitsgruppe für einen Port anzugeben. Loggen Sie sich daher bitte wieder per SSH auf Ihren Jumphost ein und nutzen Sie das Kommando source um Ihre IHRNAME-openrc.sh Datei zu verwenden. Bestätigen Sie die API-Verwendung durch Eingabe Ihres Passworts. Nun können wir mit Neutron die Sicherheitsregel hinzufügen. Lassen Sie sich die Liste Ihrer Ports sowie der Sicherheitsregeln anzeigen und nutzen Sie dann das neutron port-update Kommando um diese anhand der angezeigten IDs zu Verknüpfen. Die erste ID ist die ID Ihres Ports, die zweite ID ist die ID der Sicherheitsgruppe.

ubuntu@jumphost:~$ source IHRNAME-openrc.sh
Please enter your OpenStack Password:
ubuntu@jumphost:~$ neutron port-list
+--------------------------------------+------------------------------------------+
| id                                   | name                                     |
+--------------------------------------+------------------------------------------+
| 09640cc0-23f2-458f-9613-0c2da0464594 |                                          |
| 2285a468-4d8f-4aab-81de-7598e7c1bff7 | vip-3b577fa0-78f9-4b86-b4ab-f7979e1ab690 |
| 53fcf15a-4b1c-4c16-adc3-c04bdb263c67 |                                          |
| 5b81c4f1-815e-4016-be28-581e1dd468c7 |                                          |
| 75922644-e900-4f73-a70a-c36810ca4f54 |                                          |
| 884cd49a-9092-43d9-a032-f5d347d91487 |                                          |
+--------------------------------------+------------------------------------------+
ubuntu@jumphost:~$ neutron security-group-list
+--------------------------------------+-------------+-------------+
| id                                   | name        | description |
+--------------------------------------+-------------+-------------+
| 0de973dd-f2e7-470d-b178-19d018dd5306 | remote_mgmt | remote_mgmt |
| 1ec54ac3-56fb-4a40-81d7-41e34448fe8b | default     | default     |
| 276d27a4-56f2-4c12-b0cb-21c84e31f418 | web         |             |
| 559b290d-c1de-489f-956f-bcb348e3840a | database    |             |
+--------------------------------------+-------------+-------------+

ubuntu@jumphost:~$ neutron port-update  2285a468-4d8f-4aab-81de-7598e7c1bff7 --security-group  276d27a4-56f2-4c12-b0cb-21c84e31f418
Updated port: 2285a468-4d8f-4aab-81de-7598e7c1bff7

Achtung! Stellen Sie sicher, dass Sie sowohl die Gruppe web wie auch die Gruppe default hinzufügen, damit der Loadbalancer über ausreichend Zugriffsrechte verfügt.

Ihr Webserver ist nun unter der Floating IP des Load Balancers erreichbar. Sie können dies nun durch Aufruf der Floating IP in Ihrem Browser ausprobieren.

Weitere Webserverinstanzen per Snapshot anlegen

Da bisher nur eine Webserverinstanz angelegt wurde ist die Einrichtung eines Load Balancers nicht besonders effektiv. Über die Snapshot Möglichkeit in OpenStack können Sie mit wenigen Klicks nun einen Snapshot der laufenden Instanz anlegen, diese anschließend als neue Instanz starten und Ihrem Load Balancer Pool zuordnen.

Öffnen Sie nun wieder das Dashboard und klicken Sie unter Instances auf den Button create Snapshot in der Zeile der Webserverinstanz web1. Geben Sie in dem Dialog als Namen webserver an und bestätigen Sie den Dialog. Sie wechseln nun automatisch zur Ansicht Images & Snapshots in der Sie die Erstellung des Snapshots mit einem Ladebalken verfolgen können. Warten Sie nun ab, bis der Status auf active wechselt und somit der Snapshot erstellt wurde. Jetzt können Sie über den neu erscheinenden Button Launch eine Instanz des Snapshots starten.

Gehen Sie im Dialog wie bereits beim Anlegen der Webserverinstanz vor. Als Name vergeben Sie web2, beim Flavor können Sie wieder teutostack.pro auswählen. Geben Sie im Reiter Access & Security nun ein Passwort an und ordnen Sie die Sicherheitsgruppen remote_mgmt und web zu. Im Reiter Networking ordnen Sie Ihrer Instanz erneut das verfügbare Netzwerk zu. Anschließend können Sie die Instanz über Launch anlegen und starten.

Sobald die Instanz gestartet ist können Sie diese, wie zuvor mit der web1 Instanz, unter Load Balancers > Members  mit dem Button Add Member Ihrem Pool hinzufügen. Herzlichen Glückwunsch! Die Instanz wird nun von Ihrem Load Balancer verwendet. Sie haben erfolgreich einen Load Balancer mit zwei Webservern in OpenStack angelegt. Sie können auf gleiche Weise beliebig viele Webserverinstanzen einrichten und somit die Last der Aufrufe Ihres Blogs verteilen.

Contentverzeichnis auf NFS-Server auslagen

Sie haben nun erfahren, wie Sie in kurzer Zeit einen weiteren Webserver per Snapshot-Feature erstellen und diesen mit dem vorhandenen Webserver hinter einem Load Balancer bereitstellen können. Diese Art der Installation funktioniert jedoch nur solange, bis sich die Inhalte auf einem der Webserver z.B. durch Datei-Uploads oder Änderungen an Themes im wp-content Verzeichnis verändern, da das Verzeichnis nicht mit den anderen Servern abgeglichen wird.

Im nächsten Teil dieser Reihe werden wir darum das wp-content Verzeichnis in ein eigenes Ceph-Volume auslagern und über einen NFS-Server bereitstellen. So können alle Server auf das selbe wp-content Verzeichnis zugreifen und dem Einrichten der automatisierten Skalierung der Webserverinstanzen steht nichts mehr im Wege.

zurück zur Übersichtweiter mit QuickStart Tutorial Teil 5