[comment]: # ({486cd6dc-fb8f0d5a})
# 1 Hochverfügbarkeit

[comment]: # ({/486cd6dc-fb8f0d5a})

[comment]: # ({f0a123dd-ea8bc3db})
### Ü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.

![](../../../../assets/en/manual/config/zabbix_ha.png)

Der Wechsel zu Zabbix HA ist unverbindlich.
Sie können jederzeit wieder zum Einzelbetrieb zurückkehren.

Siehe auch: [Implementierungsdetails](#implementation-details)

[comment]: # ({/f0a123dd-ea8bc3db})

[comment]: # ({c6caa06e-567d3671})
### Aktivieren der Hochverfügbarkeit

[comment]: # ({/c6caa06e-567d3671})

[comment]: # ({5a71328e-23e81771})
##### Starten des Zabbix-Servers als Cluster-Knoten

Zum Starten eines Zabbix-Servers als Cluster-Knoten sind in der Server-[Konfiguration](/manual/appendix/config/zabbix_server) zwei Parameter erforderlich:

- Der Parameter `HANodeName` muss 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 Sie `HANodeName` nicht angeben, wird der Server im Standalone-Modus gestartet.

- Der Parameter `NodeAddress` muss für jeden Knoten angegeben werden.

  Der Parameter `NodeAddress` (`address: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 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](/manual/web_interface/frontend_sections/reports/status_of_zabbix#high-availability-nodes)* 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):

![](../../../../assets/en/manual/config/runtime_ha_status.png){width="600"}

[comment]: # ({/5a71328e-23e81771})

[comment]: # ({3c7b24e0-3e9035e5})
##### 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).

![](../../../../assets/en/manual/config/frontend_conf_server_port.png){width="600"}

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.

[comment]: # ({/3c7b24e0-3e9035e5})

[comment]: # ({892555c1-d47b6ef3})
##### 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](/manual/appendix/config/zabbix_proxy) 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](/manual/appendix/config/zabbix_proxy) des Proxys aufgeführt werden, getrennt durch ein **Semikolon**.
```
Server=zabbix-node-01;zabbix-node-02
```

[comment]: # ({/892555c1-d47b6ef3})

[comment]: # ({c15c2c86-f2fc0e77})
##### Agent-Konfiguration

HA-Cluster-Knoten (Server) müssen in der Konfiguration von Zabbix Agent oder Zabbix Agent 2 aufgeführt sein.

![](../../../../assets/en/manual/config/zabbix_ha_agent.png)

Um passive Prüfungen zu aktivieren, müssen die Knotennamen im Parameter Server [parameter](/manual/appendix/config/zabbix_agentd) 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](/manual/appendix/config/zabbix_agentd) 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
```

[comment]: # ({/c15c2c86-f2fc0e77})

[comment]: # ({e3a57230-311341fc})
### 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
```

[comment]: # ({/e3a57230-311341fc})

[comment]: # ({7be5c016-593144b8})
### Verwaltung des HA-Clusters

Der aktuelle Status des HA-Clusters kann mit den speziellen Optionen der [Laufzeitsteuerung](/manual/concepts/server#runtime-control) 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 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 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](/manual/web_interface/frontend_sections/reports/status_of_zabbix#high-availability-nodes)*.
-   Im Dashboard-Widget *Systeminformationen*.
-   Mit der Option `ha_status` der 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.

[comment]: # ({/7be5c016-593144b8})

[comment]: # ({7cfdcc75-82cd7e56})
### Deaktivieren eines HA-Clusters

Um einen High-Availability-Cluster zu deaktivieren:

1. Erstellen Sie Sicherungskopien der Konfigurationsdateien.
2. Stoppen Sie die Standby-Knoten.
3. Entfernen Sie den Parameter HANodeName vom aktiven primären Server.
4. Starten Sie den primären Server neu (er wird im Standalone-Modus gestartet).

[comment]: # ({/7cfdcc75-82cd7e56})

[comment]: # ({48f303fd-7d944a36})
### Upgrade des HA-Clusters

Um ein Major-Version-Upgrade für die HA-Knoten durchzuführen:

1. Stoppen Sie alle Knoten.
2. Erstellen Sie ein vollständiges Datenbank-Backup.
3. 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.
4. Wählen Sie einen einzelnen Knoten aus, der das Datenbank-Upgrade ausführt, ändern Sie seine Konfiguration in den Standalone-Modus, indem Sie `HANodeName` auskommentieren, und [führen Sie das Upgrade](/manual/installation/upgrade) darauf aus.
5. Stellen Sie sicher, dass das Datenbank-Upgrade vollständig abgeschlossen ist (*System information* sollte anzeigen, dass der Zabbix-Server ausgeführt wird).
6. Starten Sie den Knoten im HA-Modus neu.
7. 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.

[comment]: # ({/48f303fd-7d944a36})

[comment]: # ({de56f189-f4d3143a})
### 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.

[comment]: # ({/de56f189-f4d3143a})
