Konfiguration des Load Balancers / Reverse Proxy
  • 15 Oct 2021
  • 3 Minutes to read
  • Contributors
  • Dark
    Light

Konfiguration des Load Balancers / Reverse Proxy

  • Dark
    Light

Article summary

Der in den Edge Gateway integrierte Load Balancer basiert auf HAProxy und ist damit sehr leistungsfähig. Das Webinterface erlaubt eine Konfiguration der meisten Anwendungsfälle. Ist das Einsatzszenario komplexer, können mit der HAProxy-Konfigurationssprache sogenannte Application Rules nach eigenen Bedürfnissen definiert werden. Die Grundkonfiguration des Load Balancers wird anhand eines Lastausgleichs zwischen zwei Webservern nachfolgend erläutert.


Die folgende Terminologie und Logik ist wichtig für das Verständnis der Funktionsweise des Load Balancers:

  • Das Application Profile definiert die Eigenschaften der bereitgestellten Applikation/Service, unter welchem Port sie erreichbar ist, ob SSL verwendet wird und welche Zertifikate dafür eingesetzt werden. 
  • Mittels Service Monitoring wird festgelegt, wie der Zustand (on-/offline) eines Services überwacht wird. Dafür können verschiedene Pattern genutzt werden, wie ICMP (Ping), Port-Listening oder die Analyse von HTTP(S)-Headern.
  • In einem Pool werden alle VMs die denselben Service bereitstellen zusammengefasst. Der Pool wird für die Lastverteilung genutzt und anhand des definierten Service Monitors werden die Requests nur auf VMs verteilt, deren Service online ist. Für die Verteilung können verschiedene Algorithmen wir Round Robin, Source-IP-Hash, Least Connections, HTTP Header und weitere definiert werden. 
  • Application Rules sind benutzerdefinierte Regeln für den Load Balancer für erweiterte Szenarien, welche in der HAProxy-Konfigurationssprache geschrieben werden und für erweiterte Einsatzszenarien gedacht sind.
  • Der Virtual Server ist schliesslich der effektive virtuelle Server, der auf dem Load Balancer läuft und die Requests von Internet her entgegennimmt. Für jeden Virtual Server wird für die Erreichbarkeit eine IP-Adresse und ein Port festgelegt und ein Application Profile und ein Pool zugeordnet. Optional auch eine oder mehrere Application Rule. 

image.png

Konfigurationslogik und -abhängigkeiten des Load Balancers


Load Balancer konfigurieren

In Virtual Datacenter wurden zwei VMs als Webserver konfiguriert und mit Startseiten ausgestattet, die zur Identifikation entweder „webserver1“ oder „webserver2“ ausgeben. So kann der effektiv zugewiesene Webserver erkannt werden.

image.png

Im folgenden Load-Balancing-Szenario soll die Last zwischen beiden Webservern verteilt werden. Die interne Kommunikation erfolgt dabei unverschlüsselt per HTTP und der Load Balancer verschlüsselt dann die Kommunkation im Internet mit HTTPS. Um das Load Balancing zwischen den beiden VMs zu konfigurieren, öffnen Sie Services in den Einstellungen des Edge Gateways und da den Tab Load Balancer. Schalten Sie diesen als Erstes in der Global Configuration auf Enabled.

image.png

Im Tab Application Profile erstellen Sie ein neues Profil für Ihre Applikation oder Ihren Service und vergeben einen Namen dafür. Konfigurieren Sie das Protokoll des Services, ob ein SSL Passthrough stattfinden soll und welche Zertifikate eingesetzt werden. Im Beispiel nutzen wir ein selbstsigniertes Zertifikat des Edge Gateways.

image.png

Für das Service Monitoring sind im entsprechenden Tab bereits Monitors für TCP, HTTP und HTTPS konfiguriert, welche die Pool-Members lediglich auf eine gültige Antwort des entsprechenden Protokolls prüfen. Bei Bedarf kann beispielsweise auch auf eine bestimmte Antwort von einer bestimmten URL geprüft werden. Für unser Szenario nutzen wir den HTTP-Monitor, der die Webserver auf eine gültige HTTP-Antwort prüft.

image.png

Im Pool werden alle beteiligten Webserver als Member hinzugefügt, in unserem Fall webserver1 und webserver2. Als Load-Balancing-Algorithmus wird Round Robin festgelegt und damit quasi eine zufällige Verteilung erreicht. Mit dem definierten HTTP-Monitor wird der Zustand der Webserver überwacht und bei Problemen fehlerhafte Server vom Load Balancing ausgeschlossen.

image.png

Zuletzt wird der Virtual Server erstellt, welcher der vom Internet erreichbare Knotenpunkt darstellt. Ihm wird eine öffentliche IP Addresse, ein Port und ein Protokoll zugeordnet, mit denen der Service vom Internet her erreichbar sein wird. Die restliche Konfiguration wird durch Zuordnung der zuvor erstellten Objekte Application Profile und Pool erreicht. Mittels Acceleration würde der Load Balancer nur noch bis Layer 4 statt 7 agieren, sodass ein weniger intelligentes dafür aber performanteres Load Balancing möglich ist. Höhere Protokolle als TCP und UDP sind damit in der Konfiguration nicht erlaubt, weshalb wir mit unserer HTTPS-Konfiguration darauf verzichten.

image.png

Der Load Balancer ist nun fertig konfiguriert. Zuletzt muss noch eine Firewall Regel erstellt werden, die den Traffic für den HTTPS-Port 443 auf die öffentliche WAN-IP des Load Balancers erlaubt.

image.png

Wird nun die URL https://212.237.xxx.xxx aufgerufen, wird unsere Anfrage mittels Round-Robin-Algorithmus beinahe abwechselnd zwischen webserver1 und webserver2 verteilt.

image.png

image.png

Damit ist der Load Balancer betriebsbereit.