Anpassen des Hash-Algorithmus für die Persistenz über virtuelle Server hinweg

Die Citrix ADC Appliance verwendet hash-basierte Algorithmen, um die Persistenz über virtuelle Server hinweg aufrechtzuerhalten. Standardmäßig verwendet die hash-basierte Load Balancing-Methode einen Hash-Wert der IP-Adresse und Portnummer des Dienstes. Wenn ein Dienst an verschiedenen Ports auf demselben Server zur Verfügung gestellt wird, generiert der Algorithmus unterschiedliche Hash-Werte. Daher können unterschiedliche virtuelle Server mit Lastenausgleich Anforderungen für dieselbe Anwendung an verschiedene Dienste senden, wodurch die Pseudopersistenz unterbrochen wird.

Alternativ zur Verwendung der Portnummer zum Generieren des Hash-Werts können Sie für jeden Dienst einen eindeutigen Hash-Bezeichner angeben. Für einen Dienst muss derselbe Hash-Bezeichnerwert auf allen virtuellen Servern angegeben werden. Wenn ein physischer Server mehr als einen Anwendungstyp bedient, sollte jeder Anwendungstyp über einen eindeutigen Hash-Bezeichner verfügen.

Der Algorithmus zum Berechnen des Hash-Werts für einen Dienst funktioniert wie folgt:

  • Standardmäßig gibt eine globale Einstellung die Verwendung der Portnummer in einer Hash-Berechnung an.
  • Wenn Sie einen Hash-Bezeichner für einen Dienst konfigurieren, wird er verwendet, und die Portnummer ist nicht, unabhängig von der globalen Einstellung.
  • Wenn Sie keinen Hash-Bezeichner konfigurieren, sondern den Standardwert der globalen Einstellung ändern, sodass keine Verwendung der Portnummer angegeben wird, basiert der Hash-Wert nur auf der IP-Adresse des Dienstes.
  • Wenn Sie keinen Hash-Bezeichner konfigurieren oder den Standardwert der globalen Einstellung ändern, um die Portnummer zu verwenden, basiert der Hash-Wert auf der IP-Adresse und der Portnummer des Dienstes.

Sie können auch Hash-Bezeichner angeben, wenn Sie die CLI verwenden, um Dienste an eine Dienstgruppe zu binden. Im Konfigurationsdienstprogramm können Sie eine Dienstgruppe öffnen und Hash-Bezeichner auf der Registerkarte Mitglieder hinzufügen.

So ändern Sie die globale Einstellung Use-Port-Nummer mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

set lb parameter -usePortForHashLb (YES NO)

Beispiel:

> set lb parameter -usePortForHashLb NO
 Done
>show lb parameter
Global LB parameters:
        Persistence Cookie HttpOnly Flag: DISABLED
        Use port for hash LB: NO
 Done

So ändern Sie die globale Einstellung Use-Port-Nummer mit der GUI

  1. Navigieren Sie zu Traffic Management > Load Balancing > Load Balancing-Parameter konfigurieren.
  2. Aktivieren oder deaktivieren Sie Port für Hash-basierte LB-Methoden verwenden.

So erstellen Sie einen neuen Dienst und geben einen Hash-Bezeichner für einen Dienst mit der CLI an

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um die Hash-ID festzulegen und die Einstellung zu überprüfen:

add service < name > (< ip > < serverName >) < serviceType > < port > -hashId < positive_integer >
show service <name>

Beispiel:

> add service flbkng 10.101.10.1 http 80 -hashId 12345
 Done
>show service flbkng
        flbkng (10.101.10.1:80) - HTTP
        State: DOWN
        Last state change was at Thu Nov  4 10:14:52 2010
        Time since last state change: 0 days, 00:00:15.990
        Server Name: 10.101.10.1
        Server ID : 0   Monitor Threshold : 0

        Down state flush: ENABLED
        Hash Id: 12345

1)      Monitor Name: tcp-default
                State: DOWN     Weight: 1

 Done

So geben Sie einen Hash-Bezeichner für einen vorhandenen Dienst mit der CLI an

Geben Sie den Befehl set service, den Namen des Dienstes und -hashID gefolgt vom ID-Wert ein.

So geben Sie beim Hinzufügen eines Servicegruppenmitglieds einen Hash-Bezeichner an

Um einen Hash-Bezeichner für jedes Mitglied anzugeben, das der Gruppe hinzugefügt werden soll, und die Einstellung zu überprüfen, geben Sie an der Eingabeaufforderung die folgenden Befehle ein (Stellen Sie sicher, dass Sie für jedes Mitglied eine eindeutige HashID angeben. ):

bind servicegroup <serviceGroupName> <memberName> <port> -hashId <positive_integer>

show servicegroup <serviceGroupName>

Beispiel:

 bind servicegroup http_svc_group 10.102.27.153 80 -hashId 2222222

>show servicegroup SRV
        SRV - HTTP
        State: ENABLED  Monitor Threshold : 0
        …

        1)         1.1.1.1:80   State: DOWN     Server Name: 1.1.1.1    Server ID: 123  Weight: 1
        Hash Id: 32211

                Monitor Name: tcp-default       State: DOWN
        …

        2)         2.2.2.2:80   State: DOWN     Server Name: 2.2.2.2    Server ID: 123  Weight: 1
        Hash Id: 12345

                Monitor Name: tcp-default       State: DOWN
        …
Done

So geben Sie einen Hash-Bezeichner für einen Dienst mit der GUI an

  1. Navigieren Sie zu Traffic Management > Load Balancing > Services.
  2. Erstellen Sie einen neuen Dienst, oder öffnen Sie einen vorhandenen Dienst und geben Sie die Hash-ID an.

So geben Sie mit der GUI einen Hash-Bezeichner für ein bereits konfiguriertes Dienstgruppenmitglied an

  1. Navigieren Sie zu Traffic Management > Load Balancing > Service Groups.
  2. Öffnen Sie ein Mitglied und geben Sie eine eindeutige Hash-ID ein.