1 Hochverfügbarkeit
Überblick
Hochverfügbarkeit (HA) ist in der Regel in kritischen Infrastrukturen erforderlich, die sich praktisch keine Ausfallzeiten leisten können. Daher muss es für jeden Dienst, der ausfallen kann, eine Failover-Option geben, die übernimmt, wenn der aktuelle Dienst ausfällt.
Zabbix bietet eine native Hochverfügbarkeitslösung, die einfach einzurichten ist und keine vorherige HA-Expertise erfordert. Native Zabbix-HA kann als zusätzliche Schutzebene gegen Software-/Hardware-Ausfälle des Zabbix Server nützlich sein oder dazu beitragen, Ausfallzeiten aufgrund von Wartungsarbeiten zu verringern.
Im Zabbix-Hochverfügbarkeitsmodus werden mehrere Zabbix Server als Knoten in einem Cluster betrieben. Während ein Zabbix Server im Cluster aktiv ist, befinden sich die anderen im Standby-Modus und sind bereit, bei Bedarf zu übernehmen.

Der Wechsel zu Zabbix-HA ist unverbindlich. Sie können jederzeit wieder zum Standalone-Betrieb zurückkehren.
Siehe auch: Implementierungsdetails
Aktivieren der Hochverfügbarkeit
Starten des Zabbix-Servers als Cluster-Knoten
Zum Starten eines Zabbix-Servers als Cluster-Knoten sind zwei Parameter in der Konfiguration des Servers erforderlich:
- HANodeName muss für jeden Zabbix-Server angegeben werden, der ein HA-Cluster-Knoten sein soll.
Dies ist eine eindeutige Knotenkennung (z. B. zabbix-node-01), unter der der Server in Agent- und Proxy-Konfigurationen referenziert wird. Wenn Sie HANodeName nicht angeben, wird der Server im Standalone-Modus gestartet.
- NodeAddress muss für jeden Knoten angegeben werden.
Der Parameter NodeAddress (Adresse:Port) wird vom Zabbix-Frontend verwendet, um eine Verbindung zum aktiven Server-Knoten herzustellen. NodeAddress muss mit der IP-Adresse oder dem FQDN-Namen des jeweiligen Zabbix-Servers übereinstimmen.
Starten Sie alle Zabbix-Server nach Änderungen an den Konfigurationsdateien neu. Sie werden dann als Cluster-Knoten gestartet. Den neuen Status der Server können Sie unter Berichte → Systeminformationen einsehen sowie durch Ausführen von:
zabbix_server -R ha_status
Dieser Laufzeitbefehl protokolliert den aktuellen Status des HA-Clusters im Zabbix-Server-Log (und auf stdout):

Frontend vorbereiten
Stellen Sie sicher, dass die Zabbix Server-Adresse:Port in der
Frontend-Konfiguration (nicht definiert) ist (zu finden in
conf/zabbix.conf.php im Dateiverzeichnis des Frontends).

Das Zabbix Frontend erkennt den aktiven Knoten automatisch, indem es die Einstellungen aus der Knotentabelle in der Zabbix-Datenbank liest. Die Knotenadresse des aktiven Knotens wird als Zabbix Server-Adresse verwendet.
Proxy-Konfiguration
HA-Cluster-Knoten (Server) müssen in der Konfiguration eines passiven oder aktiven Zabbix Proxy aufgeführt werden.
Bei einem passiven Proxy müssen die Knotennamen im Parameter Server des Proxy aufgeführt werden, getrennt durch ein Komma.
Server=zabbix-node-01,zabbix-node-02
Bei einem aktiven Proxy müssen die Knotennamen im Parameter Server des Proxy aufgeführt werden, getrennt durch ein Semikolon.
Server=zabbix-node-01;zabbix-node-02
Agent-Konfiguration
HA-Cluster-Knoten (Server) müssen in der Konfiguration von Zabbix Agent oder Zabbix agent 2 aufgeführt werden.

Um passive Prüfungen zu aktivieren, müssen die Knotennamen im Parameter Server parameter aufgeführt und durch ein Komma getrennt werden.
Server=zabbix-node-01,zabbix-node-02
Um aktive Prüfungen zu aktivieren, müssen die Knotennamen im Parameter ServerActive parameter aufgeführt werden. Beachten Sie, dass bei aktiven Prüfungen die Knoten durch ein Komma von allen anderen Servern getrennt werden müssen, während die Knoten selbst durch ein Semikolon getrennt werden müssen, z. B.:
ServerActive=zabbix-node-01;zabbix-node-02
Failover auf Standby-Knoten
Zabbix führt automatisch ein Failover auf einen anderen Knoten durch, wenn der aktive Knoten ausfällt. Damit das Failover stattfinden kann, muss sich mindestens ein Knoten im Standby-Status befinden.
Wie schnell erfolgt das Failover? Alle Knoten aktualisieren ihre letzte Zugriffszeit (und ihren Status, falls er geändert wurde) alle 5 Sekunden. Das bedeutet:
-
Wenn der aktive Knoten herunterfährt und seinen Status noch als „stopped“ melden kann, übernimmt ein anderer Knoten innerhalb von 5 Sekunden.
-
Wenn der aktive Knoten herunterfährt bzw. nicht mehr verfügbar ist, ohne seinen Status aktualisieren zu können, warten die Standby-Knoten failover delay + 5 Sekunden, bevor sie übernehmen.
Die Failover-Verzögerung ist konfigurierbar; der unterstützte Bereich liegt zwischen 10 Sekunden und 15 Minuten (standardmäßig eine Minute). Um die Failover-Verzögerung zu ändern, können Sie Folgendes ausführen:
zabbix_server -R ha_set_failover_delay=5m
Verwalten des HA-Clusters
Der aktuelle Status des HA-Clusters kann mit den dafür vorgesehenen runtime control-Optionen verwaltet werden:
ha_status- HA-Cluster-Status im Zabbix-Server-Log protokollieren (und auf stdout ausgeben)ha_remove_node=target- einen HA-Knoten entfernen, der durch <target> identifiziert wird - Name oder ID des Knotens (Name/ID kann aus der Ausgabe von ha_status ermittelt werden), z. B.:
zabbix_server -R ha_remove_node=zabbix-node-02
Beachten Sie, dass aktive/Standby-Knoten nicht entfernt werden können.
ha_set_failover_delay=delay- die HA-Failover-Verzögerung festlegen (zwischen 10 Sekunden und 15 Minuten; Zeit- suffixe werden unterstützt, z. B. 10s, 1m)
Der Knotenstatus kann überwacht werden:
- in Berichte → Systeminformationen
- im Dashboard-Widget Systeminformationen
- mit der
ha_status-runtime control-Option des Servers (siehe oben).
Der interne Datenpunkt zabbix[cluster,discovery,nodes] kann für die
Knotenerkennung verwendet werden, da er JSON mit Informationen zu den
High-Availability-Knoten zurückgibt.
Deaktivieren des HA-Clusters
So deaktivieren Sie einen Hochverfügbarkeits-Cluster:
- Erstellen Sie Sicherungskopien der Konfigurationsdateien.
- Stoppen Sie die Standby-Knoten.
- Entfernen Sie den Parameter HANodeName vom aktiven primären Server.
- Starten Sie den primären Server neu (er wird im Standalone-Modus gestartet).
Upgrade des HA-Clusters
Um ein Upgrade auf eine Hauptversion für die HA-Knoten durchzuführen:
- stoppen Sie alle Knoten;
- erstellen Sie eine vollständige Datenbanksicherung;
- wenn die Datenbank Replikation verwendet, stellen Sie sicher, dass alle Knoten synchronisiert sind und keine Probleme aufweisen. Führen Sie kein Upgrade durch, wenn die Replikation fehlerhaft ist.
- wählen Sie einen einzelnen Knoten aus, der das Datenbank-Upgrade durchführen wird, ändern Sie seine Konfiguration in den Standalone-Modus, indem Sie HANodeName auskommentieren, und upgraden Sie ihn;
- stellen Sie sicher, dass das Datenbank-Upgrade vollständig abgeschlossen ist (System information sollte anzeigen, dass der Zabbix Server läuft);
- starten Sie den Knoten im HA-Modus neu;
- upgraden Sie die übrigen Knoten und starten Sie sie (es ist nicht erforderlich, sie in den Standalone-Modus zu versetzen, da die Datenbank zu diesem Zeitpunkt bereits aktualisiert ist).
Bei einem Upgrade auf eine Nebenversion reicht es aus, den ersten Knoten zu upgraden, sicherzustellen, dass er aktualisiert wurde und läuft, und dann das Upgrade des nächsten Knotens zu starten.
Implementierungsdetails
Der Hochverfügbarkeits-(HA)-Cluster ist eine optionale Lösung und wird für den Zabbix Server unterstützt. Die native HA-Lösung ist auf eine einfache Nutzung ausgelegt, funktioniert standortübergreifend und hat keine spezifischen Anforderungen an die Datenbanken, die Zabbix unterstützt. Benutzer können frei entscheiden, ob sie die native Zabbix-HA-Lösung oder eine HA-Lösung eines Drittanbieters verwenden, je nachdem, was den Anforderungen an die Hochverfügbarkeit in ihrer Umgebung am besten entspricht.
Die Lösung besteht aus mehreren zabbix_server-Instanzen oder Knoten. Jeder Knoten:
- wird separat konfiguriert
- verwendet dieselbe Datenbank
- kann mehrere Modi haben: aktiv, Standby, nicht verfügbar, gestoppt
Zu einem Zeitpunkt kann nur ein Knoten aktiv sein (arbeiten). Ein Standby-Knoten führt nur einen einzigen Prozess aus – den HA-Manager. Ein Standby-Knoten führt keine Datenerfassung, Verarbeitung oder andere reguläre Server-Aktivitäten aus; er lauscht nicht auf Ports und hat nur minimale Datenbankverbindungen.
Sowohl aktive als auch Standby-Knoten aktualisieren ihre letzte Zugriffszeit alle 5 Sekunden. Jeder Standby-Knoten überwacht die letzte Zugriffszeit des aktiven Knotens. Wenn die letzte Zugriffszeit des aktiven Knotens mehr als 'failover delay' Sekunden beträgt, wechselt der Standby-Knoten selbst in den aktiven Zustand und weist dem zuvor aktiven Knoten den Status 'nicht verfügbar' zu.
Der aktive Knoten überwacht seine eigene Datenbankkonnektivität – wenn
diese für mehr als failover delay-5 Sekunden verloren geht, muss er
die gesamte Verarbeitung stoppen und in den Standby-Modus wechseln. Der
aktive Knoten überwacht außerdem den Status der Standby-Knoten – wenn
die letzte Zugriffszeit eines Standby-Knotens mehr als 'failover delay'
Sekunden beträgt, wird dem Standby-Knoten der Status 'nicht verfügbar'
zugewiesen.
Die Knoten sind so ausgelegt, dass sie über kleinere Zabbix-Versionen hinweg kompatibel sind.