Vorheriges Thema: SchalterNächstes Thema: L3LB: TCP/UDP-Lastenausgleich


HALB - HTTP-Lastenausgleich

Aktuelle Version: 3.1.2-1

HALB - Sitzungsbewusstes HTTP-Lastenausgleichsmodul

Auf einen Blick

Katalog

System

Kategorie

Schalter

Benutzer-Volumes

no

Min. Speicher

96M

Betriebssystem

Linux

Einschränkungen

no

Übersicht

HALB ist ein Schalter für die Verteilung von Arbeitslasten an verschiedene Webserver des gleichen oder eines anderen Typs. HALB basiert auf dem HAProxy TCP/HTTP-Lastenausgleichs-Softwarepaket, das schnell, aber unter Verwendung von wenig Ressourcen arbeitet.

HALB führt Lastenausgleichs-Funktionen unter Verwendung verschiedener Algorithmen aus. Es führt einen einfachen Lastenausgleich mit dem Roundrobin-Verfahren durch und gleicht die Last für die Backend-Server aus. Es unterstützt auch permanente Sitzungen, bei denen der Client durch Verwendung der Anfrage-Quell-IP-Adresse als Schlüssel oder durch Sitzungs-Cookies an einen bestimmten Backend-WebServer gebunden wird. Während der Verwendung von Sitzungs-Cookies werden neue Sitzungen, die keine Sitzungs-Cookies aufweisen, mithilfe des Roundrobin-Algorithmus verteilt. HALB unterstützt Sitzungen mit mehreren Cookies und ändert und/oder verfolgt nur die erforderlichen Cookies, andere anderen werden unverändert gelassen. Eine bestimmte Sitzung oder ein bestimmer Client kann über die Cookie-Zuordnung an einen bestimmten Backend-Webserver oder eine Anwendung gebunden werden. Vorhandene Cookies können von HALB transparent für Clients geändert werden, die keine Anfragen mit mehreren Cookies unterstützen.

HALB überwacht regelmäßig den Status aller Backend-Webserver. Die von HALB durchgeführten Prüfungen des Integritätsstatus können eine einfache TCP-Verbindungsprüfung oder eine komplexere HTTP-Anfrage umfassen (auf der Begrenzung von HALB angegeben). Im Falle eines von HALB mithilfe der parametrisierten Systemintegritätsprüfungs-Methode entdeckten Serverfehlers, schaltet HALB den Datenverkehr auf einen alternativen Server um. Wenn der fehlgeschlagene Server schließlich wieder funktionsbereit ist, kann HALB den Datenverkehr wieder auf diesen Server zurückschalten.

HALB stellt eine Webservice-Schnittstelle auf seinem ctl-Terminal bereit. Diese Schnittstelle ermöglicht dem Benutzer, die Ausgabe-Terminals out1 bis out8 zu aktivieren und zu deaktivieren und den Status aller Terminals abzurufen. Dies ist dann nützlich, wenn ein Backend-Fehler (d.h. in einer Datenbank- oder Speicher-Appliance) vorliegt, sodass die Anwendung selbst automatisch Datenverkehr zu einer bestimmten Gruppe von Servern deaktivieren kann. In diesem Fall ist HALB nicht in der Lage, diesen Fehlertyp zu erkennen; daher muss die Anwendung diesen Fehler entdecken und den entsprechenden Satz an Backend-Servern deaktivieren.

HALB verwaltet detaillierte Statistiken, einschließlich Backend-Status, Anzahl von verarbeiteten Anfragen pro Server, aufgetretene Fehlerzahl und so weiter. Die Statistik wird über das mon-Terminal gemeldet, und separate Zähler werden durch das ui-Terminal als GUI bereitgestellt, auf die mit einem Browser zugegriffen werden kann.

HALB arbeitet sehr schnell und mit sehr wenig Ressourcen. Unter normalen Bedingungen benötigt HALB ca. 25 KB Speicher für jede Sitzung oder 1 GB für 40000 gleichzeitige Sitzungen und bearbeitet bis zu 6000 Anfragen pro Sekunde.

Ressourcen

Ressource

Minimum

Maximum

Standard

CPU

0.1

16

0.4

Speicher

96 MB

32 GB

96 MB

Bandbreite

1 Mbit/s

2 Gbit/s

250 Mbit/s

Die Speichermenge, die HALB zugewiesen wird, hat keinen Einfluss auf den Durchsatz oder die Antwortzeit. HALB ist eine an die CPU/Bandbreite gebundene Appliance.

Terminals

Name

dir

protocol

description

in

in

HTTP

Häufige Eingabe. An in gesendete TCP-Anfragen werden zu einer der Ausgaben weitergeleitet, die entweder mithilfe des Roundrobin-Prinzips oder anhand quellenbasierter Sitzungsinformationen ausgewählt wird.

ui

in

HTTP

Verarbeitet HTTP-Anfragen von Web-Clients. Verarbeitet die HTTP/1.1- und 1.0-Protokolle.

ctl

in

HTTP

Steuer-Terminal, das zum Aktivieren/Deaktivieren der Ausgaben und zum Abrufen des Ausgabe-Terminal-Status dient.

out1-out8

out

Alle

Ausgeglichene Ausgaben. Jede dieser Ausgaben kann ohne Verbindung bleiben; der Datenverkehr wird nur an verbundene, aktivierte Ausgaben verteilt. Standardmäßig werden alle Terminals aktiviert.

mon

out

CCE

Wird verwendet, um Leistungs- und Ressourcenverwendungsstatistik zu senden.

Eigenschaften

Allgemeine Eigenschaften

Name

Typ

description

mode

Zeichenfolge

Gibt den Betriebsmodus und eine Weise an, den benannten Sitzungscookie für die Sitzungsidentifizierung zu verwenden. Gültige Werte sind:
passive - der Cookie wird nicht geändert. Es wird davon ausgegangen, dass ein bestimmter Cookiewert immer eindeutig ist, und dass der gleiche Wert niemals von einem anderen Server verwendet wird.
sync - die Cookie-Zeichenfolge in der HTTP-Antwort eines Servers wird geändert, um sie eindeutig dem Terminal zuzuordnen, von dem die Antwort kam (indem eine 4 Zeichen lange Terminal-ID in den Cookie-Wert eingefügt wird). Die "terminal ID" wird entfernt, bevor eine Anfrage an einen Server auf einem der outX-Terminals weitergeleitet wird. Anders als beim Einfügen der Terminal-ID ist die Zuordnung zwischen Cookiewerten und Ausgabe-Terminals die gleiche wie bei "passive" - es wird also der gesamte Cookiewert verglichen.
insert - das Lastenausgleichsmodul selbst fügt einen Cookie in zurückgeschickte Antworten an den Client ein. Wenn der Client nachfolgende Anfragen mit diesem Cookie sendet, werden sie zum gleichen Server wie die erste Anfrage von diesem Client geleitet. Der von HALB eingefügte Cookie hat kein Ablaufdatum, was bedeutet, dass er nicht dauerhaft von der Client-Software gespeichert werden darf.
source - Die Quell-IP-Adresse der Anfrage wird verwendet, um die Sitzung an einen bestimmten Backend-Webserver zu binden. Die Cookieeigenschaft wird ignoriert.
Standard: passive.

cookie_name

Zeichenfolge

Der Name des Cookies, der verwendet wird, um eine Sitzung zu identifizieren. Für die passiven Modi (passive und sync, siehe die Eigenschaft mode unten) ist dies der Name des Cookies, das von den mit out1 bis out8 verbundenen Backend-Servern verwendet wird, um Clientsitzungen zu identifizieren. Im Einfügemodus ist dies der Name des Cookies, den HALB in HTTP-Antworten einfügen sollte, um jeden Client einem bestimmten Server zuzuordnen. Wenn diese Eigenschaft auf den leeren Wert festgelegt wird, erfolgt keine Sitzungsnachverfolgung, und alle Anfragen werden in einem einfachen Roundrobin-Verfahren verteilt. Wird für den Quellmodus ignoriert.
Standard: (leer).

cookie_check_length

Int.

Definiert, wie viele Byte vom Wert des Cookies als eindeutiger Schlüssel in passiven Betriebsmodus verwendet werden, um die Sitzung mit dem Backend-Webserver zu vergleichen. Der Standardwert von 10 ist üblicherweise hinreichend für alle gebräuchlichen PHP- und Java-Anwendungen. Dieser Wert muss immer gleich oder kleiner als die Länge des Cookiewertes sein.
Standard: 10.

max_connections

Ganzzahl

Die größtmögliche Anzahl von gleichzeitig aktiven Verbindungen, die das Lastenausgleichsmodul verarbeitet. Wenn diese Zahl erreicht wird, werden neue Verbindungen noch akzeptiert, aber ihre Verarbeitung wird aufgeschoben, bis eine andere Verbindung geschlossen wird. Am Anfang bestimmt HALB basierend auf dem verfügbaren Speicher automatisch die größtmögliche Anzahl von Verbindungen, vergleicht sie mit dem Wert dieser Eigenschaft und verwendet den niedrigsten Wert. Wenn diese Eigenschaft 0 ist, wird der berechnete Wert verwendet. Beachten Sie, dass weder der verfügbare Speicher noch eine ausdrückliche Einstellung dieser Eigenschaft eine direkte Auswirkung auf den Durchsatz des Lastenausgleichsmoduls oder dessen maximale Anfragenrate haben - wenn eine niedrige Zahl festgelegt wird (bzw. wenig Speicherplatz vorhanden ist), hat dies nur dann Auswirkungen auf die Antwort, wenn die Backend-Server langwierige Vorgänge für jede Anfrage ausführen (z. B. Datenbanksuchen) und dadurch viele Anfragen gleichzeitig geöffnet bleiben.
Standard: 0

backup_outputs

Zeichenfolge

Eine leerzeichen- oder kommagetrennte Liste der Ausgaben (out1 - out8), die als Sicherungen betrachtet werden. Der Datenverkehr wird nur an die Sicherungsserver geleitet, wenn kein Backend-Server verfügbar ist. Der Zweck dieser Sicherungsserver besteht darin, den Clients mitzuteilen, dass ein Problem besteht, oder sie umzuleiten, anstatt Fehler vom nicht verfügbaren Backend auszugeben oder das Zeitlimit zu überschreiten.
Standard: (leer).

Zeitüberschreitungseigenschaften

Name

Typ

description

Zeitlimit

Ganzzahl

Zeitlimit in Sekunden, nach dem inaktive Sitzungen ablaufen. Wenn der Wert auf Null festgelegt wird, laufen inaktive Sitzungen nicht ab. Wenn ein anderer Wert als Null festgelegt wird, gelten inaktive Sitzungen, die nach der Anzahl der Sekunden des Zeitlimits wiederaufgenommen werden, als veraltet, und Anfragen mit dem Cookie "forgotten" werden so behandelt, als hätten sie keinen Cookie und werden mit der üblichen Roundrobin-Methode an einen beliebigen Server gesandt. Diese Eigenschaft ist nur zulässig für den passiven Modus und wird für alle anderen Modi ignoriert.
Standard: 0

client_timeout

Int.

Zeitlimit in Sekunden für das Warten auf die Anfrage von einem Client, nachdem die Verbindung hergestellt wurde.
Standard: 150.

server_timeout

Int.

Zeitlimit in Sekunden für das Warten auf eine Antwort von einem Backend-Webserver, nachdem die Verbindung hergestellt wurde.
Standard: 150.

conn_timeout

Int.

Zeitlimit in Sekunden für das Herstellen einer TCP-Verbindung. Dies schließt die Systemintegritätsprüfungen ein. Diese Einstellung muss besonders beachtet werden, weil HALB beginnt, Ausgaben zu deaktivieren, wenn die Systemintegritätsprüfung wegen hoher Auslastung und einem unzureichend kleinen Wert das Zeitlimit überschreitet. Es wird nicht empfohlen, eine Zeit von weniger als 20 Sekunden festzulegen.
Standard: 20.

Eigenschaften der Systemintegritätsprüfung

Name

Typ

description

healthcheck_url

Zeichenfolge

Die URL, die verwendet wird, um die Systemintegritätsprüfung der Backend-Webserver mit den Systemintegritätsprüfungs-Methoden "http_get" und "http_head" durchzuführen. Sie kann als eine vollständige URL (http://host.name/file/to/check/for.php) oder als ein relativer Pfad (/file/to/check/for.php) angegeben werden. Wenn eine URL angegeben wird, verwendet HALB das HTTP/1.1-Protokoll während der Durchführung der Systemintegritätsprüfungen und setzt den aus UR extrahierten Hostnamen im Header Host: ein. Dies ermöglicht die Verwendung von virtuellen Hosts. Wenn sie als ein relativer Pfad angegeben wird, verwendet HALB das HTTP/1.0-Protokoll und sucht nach dem von dieser Eigenschaft angegebenen Dokument. Wenn diese Eigenschaft leer ist, überprüft HALB den Standardstamm '/' anhand des HTTP/1.0-Protokolls.
Standard: (leer).

healthcheck_agent

Zeichenfolge

Zeichenfolge, die als Agentbezeichner für die Methoden http_get und http_head der Systemintegritätsprüfung verwendet wird. Wenn sie leer ist, wird "HALB-health-check" verwendet.
Standard: (leer).

healthcheck_method

Zeichenfolge

Die Methode, die für die Systemintegritätsprüfung der Backend-Webserver verwendet wird.
tcp_connect - HALB verbindet sich mit dem Port 80 des Webservers. Wenn die Verbindung erfolgreich hergestellt wurde, geht HALB davon aus, dass der Webserver funktionsfähig ist. Dies ist die schnellste Methode und benötigt am wenigsten Ressourcen.
http_head - HALB verwendet die HEAD-Methode, um das von der healthcheck_url-Eigenschaft angegebene Dokument anzufordern. Diese ist langsamer als tcp_connect, benötigt mehr Ressourcen sowohl auf HALB als auch auf dem Webserver, aber ist zuverlässiger. Ein Statuscode von "2xx" oder "3xx", der von einem Webserver erhalten wird, validiert den Server als betriebsbereit.
http_get - HALB verwendet die GET-Methode dazu, das von der healthcheck_url-Eigenschaft angegebene Dokument anzufordern. Dies ist die langsamste Methode, die am meisten Ressourcen benötigt, aber am zuverlässigsten ist. Ein Statuscode von "2xx" oder "3xx", der von einem Webserver erhalten wird, validiert den Server als betriebsbereit. Wenn die Eigenschaft "healthcheck_regexp" definiert ist, lädt HALB das Dokument einschließlich aller HTTP-Header und des Serverstatuscodes herunter und sucht nach Übereinstimmungen mit dem Wert für "healthcheck_regexp". Wenn eine Übereinstimmung gefunden wird, gilt der Backend-Server als funktionsbereit, bzw. er wird deaktiviert, wenn keine Übereinstimmungen gefunden wurden.
Standard: tcp_connect.

healthcheck_regexp

Zeichenfolge

Eine Testzeichenfolge, die mit dem Systemintegritätsprüfungs-Modus "http_get" verwendet wird. Kurze oder häufig vorkommende Werte (z. B. OK) ergibt wahrscheinlich falsche positive Übereinstimmungen. Diese Zeichenfolge ist ein regulär Ausdruck im Perl-Stil; nähere Informationen zu regulären Ausdrücken im Perl-Stil sind hier verfügbar.
Standard: (leer).

healthcheck_interval

Int.

Intervall zwischen Systemintegritätsprüfungen der Backend-Webserver (in Sekunden angegeben).
Standard: 20 Sekunden.

Benutzeroberflächen/Webservice-Schnittstellen-Eigenschaften

Name

Typ

description

username

Zeichenfolge

Benutzername für den Zugriff auf die HALB-GUI über das Terminal "ui". Wenn leer, erfolgt keine Authentifizierung.
Standard: (leer).

password

Zeichenfolge

Kennwort für den Zugriff auf die HALB-GUI über das Terminal "ui". Das Kennwort wird ignoriert, wenn der Benutzername leer ist.
Standard: (leer).

ctl_port

Int.

Port, der verwendet wird, um auf die Webdienst-Steuerschnittstelle über das Terminal "ctl" zuzugreifen.
Standard: 80.

ui_port

Int.

Port, der verwendet wird, um auf die Laufzeitstatistik-GUI von HALB über das Terminal "ui" zuzugreifen.
Standard: 80.

Benutzerdefinierte Zähler

Die HALB-Appliance meldet die folgenden benutzerdefinierten Zähler durch das mon-Terminal.

Die folgenden Zähler gehören zur HALB-Zählergruppe: X kann einen Wert zwischen 1 und 8 haben.

Zählername

Beschreibung

outX_status

Status des Ausgabe-Terminals outX: 0 - aktiviert und wird ausgeführt, 1 - aktiviert und wird nicht ausgeführt, 100 - Verbindung getrennt

outX_queue

Anzahl der in der Warteschlange befindlichen Anfragen für Terminal outX.

outX_queue_max

Historisches Maximum der gleichzeitig in der Warteschlange vorhandenen Anfragen für Terminal outX.

outX_sessions_active

Anzahl der aktiven Sitzungen für Terminal outX.

outX_sessions_max

Maximale Anzahl aktiver gleichzeitiger Sitzungen für Terminal outX.

outX_sessions_total

Anzahl der abgeschlossenen Sitzungen für Terminal outX.

outX_errors

Anzahl der fehlgeschlagenen Systemintegritätsprüfungen für Terminal outX.

queue

Aktuelle Warteschlangenlänge, kumulativ für out1 bis out8.

queue_max

Historisches Maximum der gleichzeitig in der Warteschlange vorhandenen Anfragen, kumulativ für out1 bis out8.

sessions_active

Anzahl der aktiven Sitzungen, kumulativ für out1 bis out8.

sessions_max

Historische Höchstzahl aktiver Sitzungen, kumulativ für out1 bis out8.

sessions_total

Anzahl der abgeschlossenen Sitzungen, kumulativ für out1 bis out8.

errors

Gesamtzahl der fehlgeschlagenen Systemintegritätsprüfungen, kumulativ für out1 bis out8.

Leistung

Anforderungsrate

HALB leitet nicht weniger als 6000 Transaktionen (Anfrage/Antwort-Paare) pro Sekunde weiter, abhängig von Dokumentgröße und verfügbarer Netzwerkbandbreite.

Datendurchsatz

HALB leitet nicht weniger als 15 MB/Sekunde weiter.

Gleichzeitige Verbindungen

HALB unterstützt nicht weniger als 2000 gleichzeitig ausstehende Anfragen. (Eine ausstehende Anfrage ist eine offene TCP-Verbindung vom Client, auf der ein oder mehr unvollständige HTTP-Anfragen vorhanden sind). Die Höchstzahl gleichzeitiger Verbindungen hängt vom verfügbaren freien Speicher ab und kann bis zu 40000 betragen. Bei Tests hat HALB mehr als 15000 gleichzeitige aktive Übertragungen unterstützt.

Fehlermeldungen

Im Fall von Appliance-Startfehlern können die folgenden Fehler im Systemprotokoll protokolliert werden:

Fehlermeldung

Description

Fehler: Appliance-Speicherkonfiguration kann nicht ermittelt werden, wenden Sie sich an den Support von CA Technologies.

Der verfügbare Speicher konnte von HALB nicht ermittelt werden; wenden Sie sich an den Support von CA.

Fehler: Die HAProxy-Konfigurationsdatei konnte nicht erstellt werden, wenden Sie sich an den Support von CA Technologies.

HALB konnte die HAProxy-Konfigurationsdatei nicht erstellen; wenden Sie sich an den Support von CA (Ursache ist möglicherweise geringer Festplatten-Speicherplatz).

Fehler: Die Anzahl verfügbarer CPUs konnte nicht ermittelt werden; wenden Sie sich an den Support von CA Technologies.

Die Anzahl verfügbarer CPUs konnte von HALB nicht ermittelt werden; wenden Sie sich an den Support von CA.

Fehler: healthcheck_url muss - wenn als URL angegeben - mit http:// anfangen und einen vollständigen Pfad zum Dokument enthalten (Beispiel: http://host.name.domain/file/to/check/for.html).

Der healthcheck_url-Eigenschaftswert ist falsch; er muss mit 'http://' anfangen und einen vollständigen Pfad enthalten (Beispiel: http://host.name.domain/file/to/check/for.html).

Fehler: Unbekannte Systemintegritätsprüfungs-Methode unter "healthcheck_method" angegeben.

Der healthcheck_method-Eigenschaftswert ist falsch; er sollte "tcp_connect", "http_head" oder "http_get" lauten.

Fehler: ungültiger Betriebsmodus angegeben

Ungültiger angegebener Modus, er sollte "passive", "sync", "insert" oder "source" lauten.

Fehler: Der ui_port-Wert muss zwischen 1 und 65535 liegen.

Der ui_port-Wert muss mehr als 1 und weniger als 65535 betragen.

Fehler: ctl_port-Wert muss zwischen 1 und 65535 liegen.

ctl_port-Wert muss größer als 1 und kleiner als 65535 sein.

Fehler: Fehler beim Starten von HALB; Details finden Sie in der Protokolldatei '/var/log/appliance/log'.

Während des Startens von HALB ist ein Systemfehler aufgetreten; wenden Sie sich an den Support von CA.

Fehler: Die Webservice-Steuerungsschnittstelle konnte nicht initialisiert werden; wenden Sie sich an den Support von CA Technologies.

Während der Initialisierung der Webservice-Steuerungsschnittstelle am Terminal ctl ist ein Systemfehler aufgetreten; wenden Sie sich an den Support von CA Technologies.

Fehler: Statistikberichterstellung konnte nicht initialisiert werden, wenden Sie sich an den Support von CA-Technologies.

Während der Initialisierung der Statistikberichterstellung ist ein Systemfehler aufgetreten; wenden Sie sich an den Support von CA Technologies.

Fehler: Das Benutzeroberflächen-Terminal konnte nicht initialisiert werden; wenden Sie sich an den Support von CA Technologies.

Während der Initialisierung der grafischen Benutzeroberfläche am Terminal ui ist ein Systemfehler aufgetreten; wenden Sie sich an den Support von CA Technologies.

Fehler: Externe Systemintegritätsprüfung konnte nicht initialisiert werden, wenden Sie sich an den Support von CA-Technologies.

Ein Fehler trat auf, während die externe Systemintegritätsprüfung mit Unterstützung für reguläre Ausdrücke gestartet wurde; setzen Sie sich mit dem Support von CA Technologies in Verbindung.

Übersicht

Eine Webservice-Steuerungsschnittstelle wird am Terminal ctl (am konfigurierten Port) verfügbar gemacht, damit die Ausgabe-Terminals (out1 - out8) aktiviert und deaktiviert werden können und der aktuelle Terminalstatus abgerufen werden kann.

Protokoll

Das Protokoll verwendet nur die HTTP-Methode GET, da es nur über Lesefunktionen verfügt. So kann jeder unterstützte Protokollanfragetyp über seine URI und die Ausgabestruktur definiert werden. Zeichen, die im URI als Sonderzeichen gelten, sollten mit der %-Standardkodierung gekennzeichnet werden.

Es folgt eine Beschreibung aller unterstützten URLs.

Steuerungsaufrufe

Deaktivieren der Ausgabe-Terminals

Es gibt zwei verschiedene Formate des Steuerungsaufrufs "disable", die davon abhängig sind, wie das Ausgabe-Terminal identifiziert wird:

Anfrage: /api/disable?channel=out3 (deaktiviert das Ausgabe-Terminal out3)

Anfrage: /api/disable?10.11.12.13 (deaktiviert das Ausgabe-Terminal, das mit dem Webserver mit der IP-Adresse von 10.11.12.13 verbunden ist)

Antwort:

HALB gibt die folgende Struktur mit einem Statuscode und einer optionalen Statusmeldung zurück:

{
   "status" :
   {
   "code": code_value,
   "message": "status_message"
   }
}

Mögliche Statuscodewerte werden unten aufgeführt:

Codewert

Description

0

Operation war erfolgreich, Terminal wurde deaktiviert.

10

Operation war nicht erfolgreich,HALB-Konfiguration wurde nicht geändert. Die wahrscheinlichsten Ursachen hierfür sind, dass das Terminal bereits deaktiviert ist oder dass die angegebene IP-Adresse ungültig ist.

100

Während der Verarbeitung der Anfrage ist ein Fehler aufgetreten, nähere Angaben sind in der Statusmeldung verfügbar.

Aktivieren der Ausgabe-Terminals

Es gibt zwei verschiedene Formate des Steuerungsaufrufs "enable", die davon abhängig sind, wie das Ausgabe-Terminal identifiziert wird:

Anfrage: /api/enable?channel=out3 (aktiviert das Ausgabe-Terminal out3)

Anfrage: /api/enable?10.11.12.13 (aktiviert das Ausgabe-Terminal, das mit dem Webserver mit der IP-Adresse von 10.11.12.13 verbunden ist)

Antwort:

HALB gibt die folgende Struktur mit einem Statuscode und einer optionalen Statusmeldung zurück:

{
   "status" :
   {
   "code": code_value,
   "message": "status_message"
   }
}

Mögliche Statuscodewerte werden unten aufgeführt:

Codewert

Description

0

Operation war erfolgreich, Terminal wurde aktiviert.

10

Operation war nicht erfolgreich,HALB-Konfiguration wurde nicht geändert. Die wahrscheinlichsten Ursachen hierfür sind, dass das Terminal bereits aktiviert ist oder dass die angegebene IP-Adresse ungültig ist.

100

Während der Verarbeitung der Anfrage ist ein Fehler aufgetreten, nähere Angaben sind in der Statusmeldung verfügbar.

Abrufen des Status der Ausgabe-Terminals

Anfrage: /api/status (gibt den Status von allen Ausgabe-Terminals zurück)

Antwort:

HALB gibt die folgende Struktur mit einem Statuscode und einer optionalen Statusmeldung zurück:

{
   "status" :
   {
   "code": code_value,
   "message": "status_message",
   "terminal_id": "terminal_state",
   "terminal_id": "terminal_state",
   ...
   }
}

Der Status wird nur für alle verbundenen Terminals zurückgegeben; der Status für deaktivierte und nicht verbundene Terminals wird nicht gemeldet.

Mögliche Statuscodewerte werden unten aufgeführt:

Codewert

Description

0

Operation war erfolgreich.

100

Während der Verarbeitung der Anfrage ist ein Fehler aufgetreten, nähere Angaben sind in der Statusmeldung verfügbar.

Mögliche Terminal-Werte sind out1 bis out8.

Mögliche Statuswerte sind:

Statuswert

Description

up

Das Terminal ist verbunden und aktiv.

down

Terminal ist inaktiv. Der Webserver, der mit diesem Terminal verbunden ist, ist entweder ausgefallen oder hat die HALB-Systemintegritätsprüfung nicht bestanden.

Eine Beispielstatusausgabe:

{
   "status" :
   {
   "code": 0,
   "message": "",
   "out1": "up",
   "out2": "up",
   "out3": "down",
   "out4": "up",   
   }
}
Web-GUI

HALB zeigt eine Statistik-GUI über das Terminal "ui" an. Verschieden Laufzeitinformationen sind über diese GUI verfügbar:

Parameter

Description

nbcproc

Anzahl der für HALB verfügbaren CPUs

uptime

HALB-Betriebszeit

system limits

Ressourceneinschränkungen, die vom Betriebssystem für HALB festgelegt sind

memmax

Maximal verfügbarer Speicher für HALB

ulimit-n

Maximale Anzahl der Dateien, die gleichzeitig geöffnet sein können. Netzwerk-Sockets werden als Dateien angesehen.

maxsock

Maximale Anzahl der Sockets, die gleichzeitig geöffnet sein können.

maxconn

Maximale Anzahl gleichzeitiger Verbindungen. Wenn diese Anzahl erreicht wird, werden alle neuen Verbindungen in eine Warteschlange verschoben.

current conns

Aktuelle Anzahl aktiver Verbindungen

Server Status

Status eines Backend-Servers. UP - Server ist funktionsfähig, DOWN - Server ist nicht funktionsfähig

Queue Curr.

Aktuelle Länge der Anfragenwarteschlangen-Länge des Backend-Servers

Queue Max.

Maximal erreichte Warteschlangenlänge des Backend-Servers seit HALB-Start

Sessions Curr.

Anzahl der momentan aktiven Sitzungen

Sessions Max.

Maximal erreichte Anzahl gleichzeitiger aktiver Sitzungen

Sessions Cumul.

Gesamtzahl abgeschlossener Sitzungen

Errors Conn.

Anzahl der Fehler, die beim Verbinden mit dem Backend-Server aufgetreten sind.

Errors Resp.

Anzahl von 5xx-Fehler, die vom Backend-Server gemeldet wurden

Errors Check

Anzahl fehlgeschlagener Systemintegritätsprüfungen für einen Backend-Server

Errors Down

Anzahl der Male, die der Backend-Server vom Status UP in den Status DOWN gewechselt hat

Lastenausgleich für Anwendungen mit dynamischen Inhalten

Wenn Ihre Anwendung viele Berechnungsschritte für die Erzeugung von Seiten erfordert, kann sie natürlich nur eine begrenzte Zahl von Clients gleichzeitig bedienen. Wenn die Datenquelle jedoch schnell genug ist oder reproduziert werden kann und von mehreren Servern bedient werden kann, kann HALB verwendet werden, um die Anzahl von Verbindungen zu erhöhen, die gleichzeitig verarbeitet werden können. Ein typisches Beispiel: Das Bereitstellen von Karten von einer Kartografie-Datenbank - die Datenbank kann schnell gelesen werden, aber jedes Laden von Seiten erfordert, dass die Karte als Bilddatei gerendert wird.

Die Abbildung unten zeigt, wie HALB für den Einsatz mehrerer CPUs verwendet werden kann, um den gleichen Inhalt bereitzustellen. Dies führt zu schnelleren Reaktionszeiten auch bei hoher Last.

Konfiguration für einen Server, der Sitzungen speichert - Bugzilla

In den Konfigurationsbeispielen werden nur Eigenschaften aufgeführt, die auf Nicht-Standard-Werte festgelegt sind.

Eigenschaft

Wert

Hinweise

cookie_name

Bugzilla_logincookie

Dies ist der von Bugzilla für seinen Anmeldungscookie verwendete Name

mode

passive

Bugzilla gibt eindeutige Cookies für jede Benutzernamen/IP-Adressen-Kombination aus, daher geben zwei Bugzilla-Instanzen, die mit der gleichen Datenbank verbunden sind, nie den gleichen Cookie aus. Es ist daher sicher, den einfachen passive-Modus zu verwenden. Für andere Servertypen kann die sync-Einstellung geeigneter sein.

Sticky-Lastenausgleich für sitzungslose Server mithilfe von Cookies

Bei Servern, die keine Sitzungen aufweisen, aber einige zwischengespeicherte Daten aufbewahren und von einem Client profitieren können, der einheitlich an den gleichen Server umgeleitet wird, funktioniert die passive Cookie-Überwachung nicht, da es keinen zu überwachenden Cookie gibt. Der insert-Modus wird in diesem Fall verwendet, wie in der Tabelle gezeigt:

Eigenschaft

Wert

Hinweise

cookie_name

session_id

Frei festlegbarer Name, aber stellen Sie sicher, dass er mit keinem sonst von den Servern verwendeten Namen übereinstimmt.

mode

insert

HALB fügt einen Set-Cookie:-Header ein.

Lastenausgleich mit Systemintegritätsüberprüfung der Infrastruktur

Eine erfolgreiche Systemintegritätsprüfung eines Backend-Webservers garantiert nicht, dass die Daten, die zurückgegeben werden, gültig sind, oder dass die Datenbank, von der er abhängt, noch funktionsfähig ist. Eine charakteristische Funktion von HALB ist die Fähigkeit, nicht nur die konventionelle Art und Weise für die Systemintegritätsprüfung einzusetzen (Verbindung mit Port 80 eines Webservers), sondern auch erweiterte Methoden wie http_head und http_get zu verwenden. Die richtige Ausnutzung dieser Fähigkeit hilft nicht nur die Verfügbarkeit eines Backend-Webservers , sicherzustellen, sondern auch ihre Abhängigkeiten, Datenbank, Anwendung und Speicherserver. In diesem Beispiel werden zwei Systemintegritätsprüfungs-Funktionen von HALB verwendet. Zuerst wird die spezielle Datei health_check.php erstellt, und ihre vollständige URL wird in der healthcheck_url-Eigenschaft angegeben. Wenn auf diese Datei zugegriffen wird, wertet sie die Verfügbarkeit der Datenbank, Anwendung oder der NAS-Server aus und gibt ein Statusdokument mit dem Text ALL_SERVICES_ARE_OK zurück. Dieser Wert wird in der healthcheck_regexp-Eigenschaft angegeben.

HALB überprüft jede Ausgabe (out1 - out8) mit HTTP/1.1-GET-Anfragen und verwendet dabei die Site im TTP-Header Host: und /health_check.php als Dokumenten-URL. Diese Werte werden aus der healthcheck_url-Eigenschaft extrahiert (http://site/health_check.php). Im Dokument, das von jedem Backend-Server abgerufen wird, sucht HALB nach dem Wert von healthcheck_regexp (ALL_SERVICES_ARE_OK). Wenn diese Zeile gefunden wird, wird der Server als funktionsbereit eingestuft; andernfalls wird das Ausgabe-Terminal deaktiviert. Wenn die Ausgabe deaktiviert wurde und die HALB-Systemintegritätsprüfung zu einem späteren Zeitpunkt erfolgreich ist, wird die Ausgabe erneut aktiviert.

Wenn keine virtuellen Hosts verwendet werden oder der Backend-Server das HTTP/1.1-Protokoll nicht unterstützt, kann healthcheck_url in einem einfachen Formular angegeben werden (/health_check.php). In diesem Fall verwendet HALB das HTTP/1.0-Protokoll und gibt nicht den HTTP-Header Host: an.

Eigenschaft

Wert

Hinweise

healthcheck_mode

http_get

HALB verwendet den Systemintegritätsprüfungs-Modus http_get.

healthcheck_url

http://site/health_check.php

Die URL, die HALB überprüft.

healthcheck_regexp

ALL_SERVICES_ARE_OK

 

Verwendung von Sicherungsservern

Sicherungsserver werden verwendet, wenn kein Backend-Server verfügbar ist und eine Meldung oder eine Umleitungsseite anstatt von Fehlern oder Zeitüberschreitungen an den Client gesendet werden muss. Im Beispiel unten die wird Serversicherung als ein Notfallserver konfiguriert, der nur eine statische Seite verarbeitet, die Clients mitteilt, dass eine technische Wartung ausgeführt wird. Sobald alle vier srv1 - srv4-Server ausfallen, wird der Inhalt von der Serversicherung verwendet.

Eigenschaft

Wert

Hinweise

backup_outputs

out8

 

Verwendung der Webservice-Steuerungsschnittstelle

Die Webservice-Steuerungsschnittstelle bietet eine Möglichkeit zum dynamischen und programmatischen Aktivieren/Deaktivieren von Ausgabe-Terminals von HALB. SIe kann auch verwendet werden, um den aktuellen Status aller Ausgabe-Terminals abzurufen. Diese Schnittstelle wird durch das ctl-Terminal von HALB bereitgestellt.

In der Abbildung unten ist eine geclusterte Umgebung mit mehreren Web- und Datenbankservern zu sehen. Jeder Web- und Datenbankserver weist eine Feedback-Verbindung zum ctl-Terminal von HALB auf. Wenn ein Webserver ein Problem mit der Datenbank/Konnektivität/Leistung entdeckt, kann er das entsprechende Ausgabe-Terminal deaktivieren und so HALB anweisen, das Umleiten des Datenverkehrs an den Webserver zu beenden. In ähnlicher Weise kann ein Datenbankserver die Ausgabe-Terminals von HALB deaktivieren und damit den gesamten eingehenden Datenverkehr deaktivieren. Nach der Behebung des Problems können Ausgabe-Terminals erneut aktiviert werden.

Hinweise

In der Appliance verwendete Open-Source- und Drittanbieter-Software

HALB verwendet zusätzlich zu den Drittanbieter-Open-Source-Paketen der jeweiligen Basisklasse LUX6 die folgenden Drittanbieter-Open-Source-Pakete.

Software

Version

Geändert

Lizenz

Hinweise

haproxy

1.4.9

Nein

GPLv2

homepage

php-thttpd

2.25b

Nein

BSD

N/A