Beschreibung des Webserver-Clusters
Ein Webserver-Cluster besteht aus einer Proxy Instanz, auch Load Balancer genannt, und einem Backend Pool. Dieser ist eine Ansammlung von Webservern, welche der Load Balancer ansprechen kann. Der Load Balancer erhält eine Public-IP, um über das Internet erreichbar zu sein. Anfragen der Clients an den Load Balancer werden von diesem an einen freien Webserver aus dem Backend Pool weitergeleitet. Die Antwort sendet der Webserver dann entweder direkt an den Client, oder zurück an den Load Balancer, welcher die Antwort an den Client weiterleitet. Konfiguration Load Balancer
Mit dem Ressourcenblock in Zeile 8 wird einen Load Balancer zur Verfügung gestellt. Dieser erhält eine Public-IP in Zeile 14. Über die Public-IP kann auf den Load Balancer zugegriffen werden. Zu Beginn wird ein leerer Backend Pool in Zeile 17 erstellt. Dieser wird im Laufe des Artikels mit den virtuellen Maschinen gefüllt. Zusätzlich zu dieser Konfiguration wird ein Netzwerk (Virtual Network) aufgebaut, aus dem virtuellen Maschinen eine private Netzwerkadresse zugeordnet werden. Über eine Regel-Ressource des Load Balancers wird festgelegt, über welchen Port und mit welchem Protokoll auf den Load Balancer zugegriffen werden kann. Voreinstellung für die Konfiguration
Über die Voreinstellungen wird festgelegt, welcher Provider benutzt wird. In diesem Fall ist es der Azure Provider in der Version 2.0.0. Des Weiteren wird angegeben, in welchem Storage Container die State-Datei abgespeichert werden soll. Dieser Container wird jedem Nutzer zur Speicherung von Daten zur Verfügung gestellt. Um auf den Container zugreifen zu können, wird ein Schlüssel erwartet, welcher hier anonymisiert in Zeile 10 angegeben wurde. Konfiguration Netzwerk
Hier wird ein privates Netzwerk in der Azure-Cloud erstellt. Über dieses Netzwerk können die Ressourcen miteinander kommunizieren. Es wird außerdem ein Subnetz benötigt, in welchem die Ressourcen später liegen werden. Innerhalb dieses Subnetzes wird die Kommunikation zwischen den Webservern und dem Load Balancer stattfinden. Konfiguration virtuelle Maschine
Für die virtuellen Maschinen wird die Möglichkeit Scale Set von Azure verwendet. Dabei werden mehrere identische virtuelle Maschinen automatisch bereitgestellt. Die Anzahl der Maschinen kann dabei dynamisch angegeben oder auch nach Bedarf zur Laufzeit angepasst werden. Über das Attribut „custom_data" wird ein Shell-Skript übergeben, welches auf den Maschinen einen Webserver startet. Die einzelnen Aspekte der virtuellen Maschine werden in den unterschiedlichen Blöcken beschrieben.
In dem Block ab Zeile 10 wird die Verbindung über SSH ermöglicht. Dazu wird ein SSH-Key benötigt. Des Weiteren wird im nächsten Block festgelegt, dass auf den Maschinen ein Linux Ubuntu Betriebssystem laufen soll. Über den Block „network_interface" werden die Maschinen einem Subnetz zugeordnet. Somit können die Maschinen untereinander kommunizieren. In Zeile 34 werden die virtuellen Maschinen dem Backend Pool des Load Balancers hinzugefügt. Somit kann dieser die Anfrage an die Webserver weiterleiten.
Nachdem die Konfiguration erstellt wurde, muss mit dem Befehl „terraform init" innerhalb des Arbeitsverzeichnisses zunächst Terraform initialisiert werden. Dabei werden der Provider und die Plugins installiert. Über den Befehl „terraform apply" wird anschließend die Konfiguration in der Cloud umgesetzt und die Ressourcen werden bereitgestellt. Initialisierungsskript
Der folgende Code-Ausschnitt zeigt das Skript, welches beim Erstellen der virtuellen Maschinen aufgerufen wird. Dieses liest zuerst die IP-Adresse der Maschine aus. Diese wird dann in eine Datei index.html geschrieben, um eine Beispiel-Homepage zu erstellen. In Zeile 8 steht der Befehl, welcher den Webserver startet. Für dieses Beispiel wird der busybox-Webserver verwendet, da dies ein sehr einfacher Webserver ist, welcher keine weiteren Konfigurationen benötigt.
Überprüfen des Clusters
Um zu überprüfen, ob der Cluster wie gewünscht funktioniert, wird in einem Browserfenster die Adresse des Clusters eingegeben. Es sollte nun folgende Ausgabe angezeigt werden:
Sie haben Interesse an einer Weiterbildung oder Fragen zum Thema Docker? Sprechen Sie uns an oder besuchen Sie einen unserer Kurse aus unserem Seminarshop:
Zum Docker Seminar