Aktuelle Version: 3.1.2-1
Auf einen Blick |
|
Katalog |
System |
Kategorie |
Schalter |
Benutzer-Volumes |
no |
Min. Speicher |
96M |
Betriebssystem |
Linux |
Einschränkungen |
no |
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.
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.
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. |
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: |
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. |
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. |
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. |
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. |
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. |
client_timeout |
Int. |
Zeitlimit in Sekunden für das Warten auf die Anfrage von einem Client, nachdem die Verbindung hergestellt wurde. |
server_timeout |
Int. |
Zeitlimit in Sekunden für das Warten auf eine Antwort von einem Backend-Webserver, nachdem die Verbindung hergestellt wurde. |
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. |
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. |
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. |
healthcheck_method |
Zeichenfolge |
Die Methode, die für die Systemintegritätsprüfung der Backend-Webserver verwendet wird. |
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. |
healthcheck_interval |
Int. |
Intervall zwischen Systemintegritätsprüfungen der Backend-Webserver (in Sekunden angegeben). |
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. |
password |
Zeichenfolge |
Kennwort für den Zugriff auf die HALB-GUI über das Terminal "ui". Das Kennwort wird ignoriert, wenn der Benutzername leer ist. |
ctl_port |
Int. |
Port, der verwendet wird, um auf die Webdienst-Steuerschnittstelle über das Terminal "ctl" zuzugreifen. |
ui_port |
Int. |
Port, der verwendet wird, um auf die Laufzeitstatistik-GUI von HALB über das Terminal "ui" zuzugreifen. |
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. |
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.
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. |
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.
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.
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", } }
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 |
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.
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. |
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. |
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 |
|
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 |
|
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.
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 |
Copyright © 2013 CA.
Alle Rechte vorbehalten.
|
|