1 Hochverfügbarkeit
Übersicht
Hochverfügbarkeit (HA) wird typischerweise in kritischen Infrastrukturen benötigt, die sich praktisch keine Ausfallzeit leisten können. Für jeden Dienst, der ausfallen kann, muss daher eine Failover-Option vorhanden sein, um im Falle eines Ausfalls des aktuellen Dienstes die Aufgabe zu übernehmen.
Zabbix bietet eine native Hochverfügbarkeitslösung, die einfach einzurichten ist und keine vorherige HA-Expertise erfordert. Die native Zabbix-HA kann als zusätzliche Schutzebene gegen Software-/Hardwareausfälle des Zabbix Server oder zur Verringerung von Ausfallzeiten aufgrund von Wartungsarbeiten nützlich sein.
Im Hochverfügbarkeitsmodus von Zabbix 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 die Aufgabe zu übernehmen.

Der Wechsel zu Zabbix HA ist unverbindlich. Sie können jederzeit wieder zum Einzelbetrieb 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 in der Server-Konfiguration zwei Parameter erforderlich:
-
Der Parameter
HANodeNamemuss für jeden Zabbix-Server angegeben werden, der ein HA-Cluster-Knoten sein soll.Dies ist ein eindeutiger Knotenbezeichner (z. B.
zabbix-node-01), unter dem der Server in Agent- und Proxy-Konfigurationen referenziert wird. Wenn SieHANodeNamenicht angeben, wird der Server im Standalone-Modus gestartet. -
Der Parameter
NodeAddressmuss für jeden Knoten angegeben werden.Der Parameter
NodeAddress(address:port) wird vom Zabbix Frontend verwendet, um eine Verbindung zum aktiven Server-Knoten herzustellen.NodeAddressmuss mit der IP-Adresse oder dem FQDN-Namen des jeweiligen Zabbix-Servers übereinstimmen.
Starten Sie alle Zabbix-Server neu, nachdem Sie Änderungen an den Konfigurationsdateien vorgenommen haben. Sie werden dann als Cluster-Knoten gestartet. Der neue Status der Server kann unter Berichte > Systeminformationen eingesehen werden und außerdem durch Ausführen von:
zabbix_server -R ha_status
Dieser Laufzeitbefehl schreibt den aktuellen Status des HA-Clusters in das Zabbix-Server-Log (und auf stdout):

Frontend vorbereiten
Stellen Sie sicher, dass die Zabbix Server-address:port-Angabe in der Frontend-Konfiguration nicht definiert ist (zu finden in conf/zabbix.conf.php im Verzeichnis der Frontend-Dateien).

Das Zabbix-Frontend erkennt den aktiven Knoten automatisch, indem es die Einstellungen aus der Tabelle nodes 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 entweder eines passiven oder eines aktiven Zabbix Proxy aufgeführt werden.
Für einen passiven Proxy müssen die Knotennamen im Server-Parameter des Proxys aufgeführt werden, getrennt durch ein Komma.
Server=zabbix-node-01,zabbix-node-02
Für einen aktiven Proxy müssen die Knotennamen im Server-Parameter des Proxys 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 sein.

Um passive Prüfungen zu aktivieren, müssen die Knotennamen im Parameter Server parameter aufgeführt werden, getrennt durch ein Komma.
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 anderen Servern getrennt sein 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 stoppt. Damit das Failover stattfinden kann, muss mindestens ein Knoten den Status „standby“ haben.
Wie schnell erfolgt das Failover? Alle Knoten aktualisieren alle 5 Sekunden ihre letzte Zugriffszeit (und ihren Status, falls er sich geändert hat). Daher:
- Wenn der aktive Knoten herunterfährt und seinen Status erfolgreich 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-Verzögerung + 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
Verwaltung des HA-Clusters
Der aktuelle Status des HA-Clusters kann mit den speziellen Optionen der Laufzeitsteuerung verwaltet werden:
ha_status- den Status des HA-Clusters im Zabbix-Server-Log (und auf stdout) protokollieren;ha_remove_node=target- einen HA-Knoten entfernen, der durch sein<target>identifiziert wird - Name oder ID des Knotens (Name/ID kann aus der Ausgabe vonha_statusermittelt 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 Failover-Verzögerung für HA festlegen (zwischen 10 Sekunden und 15 Minuten; Zeitsuffixe werden unterstützt, z. B. 10s, 1m).
Der Knotenstatus kann überwacht werden:
- In Berichte > Systeminformationen.
- Im Dashboard-Widget Systeminformationen.
- Mit der Option
ha_statusder Laufzeitsteuerung des Servers (siehe oben).
Der interne Datenpunkt zabbix[cluster,discovery,nodes] kann für die Knotenerkennung verwendet werden, da er ein JSON mit den Informationen zu den High-Availability-Knoten zurückgibt.
Deaktivieren eines HA-Clusters
Um einen High-Availability-Cluster zu deaktivieren:
- 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 Major-Version-Upgrade für die HA-Knoten durchzuführen:
- Stoppen Sie alle Knoten.
- Erstellen Sie ein vollständiges Datenbank-Backup.
- Wenn die Datenbank Replikation verwendet, stellen Sie sicher, dass alle Knoten synchron 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 ausführt, ändern Sie seine Konfiguration in den Standalone-Modus, indem Sie
HANodeNameauskommentieren, und führen Sie das Upgrade darauf aus. - Stellen Sie sicher, dass das Datenbank-Upgrade vollständig abgeschlossen ist (System information sollte anzeigen, dass der Zabbix-Server ausgeführt wird).
- Starten Sie den Knoten im HA-Modus neu.
- Führen Sie das Upgrade für die restlichen Knoten durch 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 Minor-Version-Upgrade reicht es aus, den ersten Knoten zu aktualisieren, sicherzustellen, dass er aktualisiert wurde und läuft, und dann das Upgrade auf dem nächsten Knoten zu starten.
Implementierungsdetails
Der High-Availability-(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 stellt keine besonderen Anforderungen an die von Zabbix erkannten Datenbanken. Benutzer können entweder die native Zabbix-HA-Lösung oder eine HA-Lösung eines Drittanbieters verwenden, je nachdem, was den Anforderungen an hohe Verfü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 (arbeitend) sein. Ein Standby-Knoten führt nur einen Prozess aus - den HA-Manager. Ein Standby-Knoten führt keine Datenerfassung, Verarbeitung oder andere reguläre Serveraktivitäten aus; er lauscht nicht auf Ports; er 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 länger als 'failover delay' Sekunden zurückliegt, schaltet sich der Standby-Knoten selbst zum aktiven Knoten um und weist dem zuvor aktiven Knoten den Status 'unavailable' zu.
Der aktive Knoten überwacht seine eigene Datenbankverbindung - wenn sie länger als failover delay-5 Sekunden unterbrochen ist, 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 länger als 'failover delay' Sekunden zurückliegt, wird dem Standby-Knoten der Status unavailable zugewiesen.
Die Knoten sind so ausgelegt, dass sie über kleinere Zabbix-Versionen hinweg kompatibel sind.