ADC

So funktioniert Load Balancing

In einem grundlegenden Load-Balancing-Setup senden Clients ihre Anfragen an die IP-Adresse eines virtuellen Servers, der auf der NetScaler-Appliance konfiguriert ist. Der virtuelle Server verteilt sie an die Anwendungsserver mit Lastenausgleich nach einem voreingestellten Muster, dem sogenannten Lastausgleichsalgorithmus. Manchmal möchten Sie dem virtuellen Lastenausgleichsserver möglicherweise eine Platzhalteradresse anstelle einer bestimmten IP-Adresse zuweisen. Anweisungen zum Angeben eines globalen HTTP-Ports auf der Appliance finden Sie unter Globale HTTP-Ports.

Grundlagen des Lastenausgleichs

Ein Lastenausgleichs-Setup umfasst einen virtuellen Lastausgleichsserver und mehrere Anwendungsserver mit Lastausgleich. Der virtuelle Server empfängt eingehende Clientanforderungen, verwendet den Load-Balancing-Algorithmus, um einen Anwendungsserver auszuwählen, und leitet die Anfragen an den ausgewählten Anwendungsserver weiter. Die folgende Konzeptzeichnung zeigt eine typische Load-Balancing-Implementierung. Eine weitere Variante beinhaltet die Zuweisung eines globalen HTTP-Ports.

Abbildung 1. Lastenausgleich-Architektur

Load Balancing-Architektur

Der virtuelle Lastausgleichsserver kann mehrere Algorithmen (oder Methoden) verwenden, um zu bestimmen, wie die Last auf die von ihm verwaltlichen Lastausgleichsserver verteilt werden kann. Die Standardmethode für den Lastenausgleich ist die geringste Verbindungsmethode, bei der die NetScaler Appliance jede eingehende Clientverbindung an den Anwendungsserver mit Lastenausgleich weiterleitet, der derzeit die wenigsten aktiven Benutzerverbindungen aufweist.

Die Entitäten, die Sie in einem typischen NetScaler-Load-Balancing-Setup konfigurieren, sind:

  • Virtueller Lastausgleichsserver. Die Kombination aus IP-Adresse, Port und Protokoll, an die ein Client Verbindungsanfragen für eine bestimmte Website oder Anwendung mit Lastausgleich sendet. Wenn die Anwendung über das Internet zugänglich ist, ist die IP-Adresse des virtuellen Servers (VIP) eine öffentliche IP-Adresse. Wenn die Anwendung nur vom LAN oder WAN aus zugänglich ist, ist der VIP normalerweise eine private (nicht routfähige ICANN-IP-Adresse).
  • Bedienung. Die Kombination aus IP-Adresse, Port und Protokoll, die verwendet wird, um Anfragen an einen bestimmten Anwendungsserver mit Lastenausgleich weiterzuleiten. Ein Dienst kann eine logische Darstellung des Anwendungsservers selbst oder einer Anwendung sein, die auf einem Server ausgeführt wird, der mehrere Anwendungen hostet. Nachdem Sie einen Dienst erstellt haben, binden Sie ihn an einen virtuellen Lastausgleichsserver.
  • Serverobjekt. Eine virtuelle Entität, mit der Sie einem physischen Server einen Namen zuweisen können, anstatt den Server anhand seiner IP-Adresse zu identifizieren. Wenn Sie ein Serverobjekt erstellen, können Sie seinen Namen anstelle der IP-Adresse des Servers angeben, wenn Sie einen Dienst erstellen. Andernfalls müssen Sie die IP-Adresse des Servers angeben, wenn Sie einen Dienst erstellen, und die IP-Adresse wird zum Namen des Servers.
  • Überwachen. Eine Entität auf der NetScaler-Appliance, die einen Dienst verfolgt und sicherstellt, dass er ordnungsgemäß funktioniert. Der Monitor untersucht in regelmäßigen Abständen jeden Dienst, dem Sie ihn zuweisen, oder führt eine Integritätsprüfung durch. Wenn der Dienst nicht innerhalb der durch das Timeout angegebenen Zeit reagiert und eine bestimmte Anzahl von Integritätsprüfungen fehlschlägt, wird dieser Dienst als INAKTIV markiert. Die NetScaler-Appliance überspringt diesen Dienst dann beim Lastenausgleich, bis die Probleme behoben sind, die dazu geführt haben, dass der Dienst nicht mehr reagiert hat.

Die virtuellen Server, Dienste und Anwendungsserver mit Lastausgleich in einem Load-Balancing-Setup können entweder IP-Adressen der Internetprotokollversion 4 (IPv4) oder der Internetprotokollversion 6 (IPv6) verwenden. Sie können IPv4- und IPv6-Adressen in einem einzigen Load-Balancing-Setup kombinieren.

Variationen der Load-Balancing-Setup finden Sie in den folgenden Anwendungsfällen:

Die Topologie verstehen

In einem Load-Balancing-Setup befindet sich der Lastausgleichsserver logisch zwischen dem Client und der Serverfarm und verwaltet den Datenverkehr zu den Servern in der Serverfarm. Auf der NetScaler-Appliance werden die Anwendungsserver durch virtuelle Entitäten repräsentiert, die als Dienste bezeichnet werden. Das folgende Diagramm zeigt die Topologie einer grundlegenden Load-Balancing-Konfiguration.

Abbildung 2. Grundlegende Load Balancing-Topologie

Topologie des Lastenausgleichs

Im Diagramm wird der Lastenausgleich verwendet, um den Datenfluss zu den Servern zu verwalten. Der virtuelle Server wählt den Dienst aus und weist ihn der Bearbeitung von Clientanforderungen zu. Stellen Sie sich ein Szenario vor, in dem die Dienste Service-HTTP-1 und Service-HTTP-2 erstellt und an den virtuellen Server mit dem Namen vServer-LB-1 gebunden werden. vServer-LB-1 leitet die Client-Anfrage entweder an Service-HTTP-1 oder Service-HTTP-2 weiter. Die NetScaler-Appliance verwendet die Methode zum Lastausgleich mit der geringsten Verbindungslast, um den Dienst für jede Anforderung auszuwählen. In der folgenden Tabelle sind die Namen und Werte der grundlegenden Entitäten aufgeführt, die auf der Appliance konfiguriert werden müssen.

Entität Name IP-Adresse Port Protokoll
Virtueller Server Vserver-LB-1 10.102.29.60 80 HTTP
Services Service-HTTP-1 10.102.29.5 80 HTTP
Service-HTTP-2 10.102.29.6 80
Monitore Standard Ohne Ohne Ohne

Das folgende Diagramm zeigt die Beispielwerte für den Lastausgleich und die obligatorischen Parameter, die in der vorherigen Tabelle beschrieben sind.

Abbildung 3. Load Balancing Entity Modell

Load Balancing Entitätsmodell

Verwendung von Platzhaltern anstelle von IP-Adressen und Ports

Manchmal müssen Sie möglicherweise einen Platzhalter für die IP-Adresse oder den Port eines virtuellen Servers oder für den Port eines Dienstes verwenden. Die folgenden Fälle erfordern möglicherweise die Verwendung eines Platzhalters:

  • Wenn die NetScaler Appliance als transparenter Durchgang konfiguriert ist, muss der gesamte Datenverkehr akzeptiert werden, der an sie gesendet wird, unabhängig von der IP oder dem Port, an den sie gesendet wird.
  • Wenn ein oder mehrere Dienste Ports abhören, die nicht bekannt sind.
  • Wenn ein oder mehrere Dienste im Laufe der Zeit die Ports ändern, auf denen sie abhören.
  • Wenn Sie das Limit für die Anzahl der IP-Adressen und Ports erreichen, die Sie auf einer einzelnen NetScaler-Appliance konfigurieren können.
  • Wenn Sie virtuelle Server erstellen möchten, die den gesamten Datenverkehr in einem bestimmten virtuellen LAN überwachen.

Wenn ein mit Platzhalter konfigurierter virtueller Server oder Dienst Datenverkehr empfängt, ermittelt die NetScaler Appliance die tatsächliche IP-Adresse oder den tatsächlichen Port und erstellt Datensätze für den Dienst und den zugehörigen Lastausgleichsanwendungsserver. Diese dynamisch erstellten Datensätze werden als dynamisch erlernte Server- und Dienstdatensätze bezeichnet.

Beispielsweise kann eine Firewall-Load-Balancing-Konfiguration Platzhalter sowohl für die IP-Adresse als auch für den Port verwenden. Wenn Sie einen Platzhalter-TCP-Service an diesen Typ eines virtuellen Lastausgleichsservers binden, empfängt und verarbeitet der virtuelle Server den gesamten TCP-Datenverkehr, der keinem anderen Dienst oder virtuellen Server entspricht.

In der folgenden Tabelle werden einige der verschiedenen Arten von Platzhalterkonfigurationen beschrieben und wann sie verwendet werden müssen.

IP Port Protokoll Beschreibung
* * TCP Ein allgemeiner virtueller Wildcard-Server, der Datenverkehr akzeptiert, der an eine beliebige IP-Adresse und Port der NetScaler Appliance gesendet wird. Bei Verwendung eines virtuellen Platzhalterservers lernt die Appliance dynamisch die IP und den Port jedes Dienstes und erstellt die erforderlichen Datensätze, während sie den Datenverkehr verarbeitet.
* * TCP Ein virtueller Firewall-Lastenausgleichsserver. Sie können Firewalldienste an diesen virtuellen Server binden, und die NetScaler-Appliance leitet den Datenverkehr über die Firewall zum Ziel weiter.
IP-Adresse * TCP, UDP und ANY Ein virtueller Server, der den gesamten Datenverkehr akzeptiert, der an die angegebene IP-Adresse gesendet wird, unabhängig vom Port. Sie müssen explizit an diesen virtuellen Server die Dienste binden, zu denen der Datenverkehr umgeleitet wird. Es lernt sie nicht dynamisch.
* Port SSL, SSL_TCP Ein virtueller Server, der den gesamten Datenverkehr akzeptiert, der an eine beliebige IP-Adresse an einem bestimmten Port gesendet wird. Wird für globales transparentes SSL-Offloading verwendet. Die gesamte SSL-, HTTP- und TCP-Verarbeitung, die normalerweise für einen Dienst desselben Protokolltyps ausgeführt wird, wird auf den Datenverkehr angewendet, der an diesen bestimmten Port gerichtet ist. Die Appliance verwendet den Port, um dynamisch die IP des Dienstes zu erlernen, den sie verwenden muss. Wenn —cleartext nicht angegeben ist, verwendet die NetScaler Appliance End-to-End-SSL.
* Port Nicht zutreffend Alle anderen virtuellen Server, die Datenverkehr zum Port akzeptieren können. Sie binden Dienste nicht an diese virtuellen Server. Die NetScaler Appliance lernt sie dynamisch.

Hinweis: Wenn Sie Ihre NetScaler Appliance als transparenten Durchgang konfiguriert haben, der globale (Platzhalter-) Ports verwendet, möchten Sie möglicherweise den Edge-Modus aktivieren. Weitere Informationen finden Sie unter “Edge-Modus konfigurieren. “

Die NetScaler Appliance versucht, virtuelle Server und Dienste zu finden, indem sie zunächst eine exakte Übereinstimmung versucht. Wenn keine gefunden wird, wird auf der Grundlage von Platzhaltern in der folgenden Reihenfolge weiter nach einem Treffer gesucht:

  1. Spezifische IP-Adresse und spezifische Portnummer
  2. Spezifische IP-Adresse und ein * (Wildcard) Port
    • (Wildcard-) IP-Adresse und ein bestimmter Port
    • (Platzhalter-) IP-Adresse und ein * (Platzhalter) Port

Wenn die Appliance einen virtuellen Server nicht nach IP-Adresse oder Portnummer auswählen kann, sucht sie in der folgenden Reihenfolge nach einem virtuellen Server, der auf dem in der Anforderung verwendeten Protokoll basiert:

  1. HTTP
  2. TCP
  3. ANY

Konfiguration globaler HTTP-Ports

Sie konfigurieren keine Dienste oder virtuellen Server für einen globalen HTTP-Port. Stattdessen konfigurieren Sie einen bestimmten Port, indem Sie den Befehl set ns param verwenden. Nach der Konfiguration dieses Port akzeptiert die NetScaler-Appliance den gesamten Datenverkehr, der der Portnummer entspricht, und verarbeitet ihn als HTTP-Verkehr, wobei sie dynamisch lernt und Dienste für diesen Verkehr erstellt.

Sie können mehr als eine Portnummer als globalen HTTP-Port konfigurieren. Wenn Sie in einem einzigen Befehl set ns param mehr als eine Portnummer angeben, trennen Sie die Portnummern durch ein einzelnes Leerzeichen. Wenn ein oder mehrere Ports bereits als globale HTTP-Ports angegeben wurden und Sie einen oder mehrere Ports hinzufügen möchten, ohne die aktuell konfigurierten Ports zu entfernen, müssen Sie im Befehl alle aktuellen und neuen Portnummern angeben. Bevor Sie Portnummern hinzufügen, verwenden Sie den Befehl show ns param, um die aktuell konfigurierten Ports anzuzeigen.

So konfigurieren Sie einen globalen HTTP-Port mithilfe der Befehlszeilenschnittstelle

Geben Sie an der Befehlszeile die folgenden Befehle ein, um einen globalen HTTP-Port zu konfigurieren und die Konfiguration zu überprüfen:

set ns param –httpPort <port>

show ns param
<!--NeedCopy-->

Beispiel 1: Konfiguration eines Port als globalen HTTP-Port

In diesem Beispiel ist Port 80 als globaler HTTP-Port konfiguriert.

set ns param -httpPort 80
Done
show ns param
         Global configuration settings:
                          HTTP port(s): 80
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
        ...
        ...
<!--NeedCopy-->

Beispiel 2: Hinzufügen von Ports, wenn ein oder mehrere globale HTTP-Ports bereits konfiguriert sind**

In diesem Beispiel wird Port 8888 zur globalen HTTP-Portliste hinzugefügt. Port 80 ist bereits als globaler HTTP-Port konfiguriert.

> show ns param
        Global configuration settings:
                          HTTP port(s): 80
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
                          Min Path MTU: 576
        ...
        ...
 Done
> set ns param -httpPort 80 8888
 Done
>  show ns param

        Global configuration settings:
                          HTTP port(s): 80,8888
                       Max connections: 0
           Max requests per connection: 0
                   Client IP insertion: DISABLED
                        Cookie version: 0
        Persistence Cookie Secure Flag: ENABLED
                          Min Path MTU: 576

        ...
        ...
 Done
>
<!--NeedCopy-->

So konfigurieren Sie einen globalen HTTP-Port mithilfe des Konfigurationsdienstprogramms

  1. Navigieren Sie zu System > Einstellungen > HTTP-Parameter ändern, und fügen Sie dann eine HTTP-Portnummer hinzu.
So funktioniert Load Balancing