#1 Hoge beschikbaarheid

Overzicht

Hoge beschikbaarheid (HA) is doorgaans vereist in kritieke infrastructuren die zich vrijwel geen downtime kunnen veroorloven. Dus voor elke service die kan mislukken, er moet een failover-optie zijn om het over te nemen mocht de huidige service mislukken.

Zabbix biedt een native oplossing met hoge beschikbaarheid die gemakkelijk te opgezet en vereist geen eerdere HA-expertise. Inheemse Zabbix HA kan handig zijn voor een extra beschermingslaag tegen software/hardware storingen van de Zabbix-server of om minder downtime te hebben door onderhoud.

In de Zabbix-modus met hoge beschikbaarheid worden meerdere Zabbix-servers uitgevoerd als knooppunten in een cluster. Terwijl één Zabbix-server in het cluster actief is, anderen staan stand-by, klaar om het over te nemen als dat nodig is.

Overstappen naar Zabbix HA is vrijblijvend. U kunt terugschakelen naar standalone operatie op elk moment.

Zie ook: Implementatie details

Hoge beschikbaarheid inschakelen

Om een Zabbix-server te starten als een clusterknooppunt, zijn twee parameters vereist in de serverconfiguratie:

  • De parameter HANodeName moet worden opgegeven voor elke Zabbix-server die een HA-clusternode zal zijn. Dit is een unieke knooppuntidentificatie (bijvoorbeeld zabbix-node-01) waarnaar wordt verwezen in agent- en proxyconfiguraties. Als je HANodeName niet specificeert, wordt de server gestart in de stand-alone modus.

  • De parameter NodeAddress moet worden opgegeven voor elk knooppunt. De NodeAddress-parameter (adres: poort) wordt door de Zabbix-frontend gebruikt om verbinding te maken met het actieve serverknooppunt. NodeAddress moet overeenkomen met het IP- of FQDN-naam van de betreffende Zabbix-server.

Herstart alle Zabbix-servers nadat je wijzigingen hebt aangebracht in de configuratiebestanden. Ze worden nu gestart als clusterknooppunten. De nieuwe status van de servers is te zien in RapportenSysteeminformatie en ook door het volgende uit te voeren:

zabbix_server -R ha_status

Deze runtime-opdracht zal de huidige HA-clusterstatus registreren in het Zabbix-serverlogboek (en op de standaarduitvoer):

Frontend voorbereiden

Zorg ervoor dat Zabbix-server adres:poort niet gedefinieerd is in de frontend configuratie (te vinden in conf/zabbix.conf.php van de frontend bestandenmap).

Zabbix frontend detecteert automatisch het actieve knooppunt door instellingen te lezen uit de instantie tabel in de Zabbix-database. instantie adres van het actieve knooppunt wordt gebruikt als het Zabbix-server adres.

Proxy configuratie

HA-clusterknooppunten (servers) moeten worden vermeld in de configuratie van zowel een passieve als een actieve Zabbix-proxy.

Voor een passieve proxy moeten de knoopkoppelingen worden vermeld in de Server parameter van de proxy, gescheiden door een komma.

Server=zabbix-node-01,zabbix-node-02

Voor een actieve proxy moeten de knoopkoppelingen worden vermeld in de Server parameter van de proxy, gescheiden door een puntkomma.

Server=zabbix-node-01;zabbix-node-02
Agentconfiguratie

HA-clusterknooppunten (servers) moeten worden vermeld in de configuratie van: Zabbix-agent of Zabbix-agent 2.

Om passieve controles in te schakelen, moeten de instantie namen worden vermeld in de Server parameter, gescheiden door een komma.

Server=zabbix-node-01,zabbix-node-02

Om actieve controles in te schakelen, moeten de instantie namen worden vermeld in de ServerActive parameter. Merk op dat voor actieve controles de knooppunten moeten worden gescheiden door een komma van alle andere servers, terwijl de knooppunten zelf moeten worden gescheiden door een puntkomma, bijvoorbeeld:

ServerActive=zabbix-node-01;zabbix-node-02

Failover naar standby-knooppunt

Zabbix zal automatisch een failover naar een andere instantie uitvoeren als de actieve instantie stopt. Er moet ten minste één instantie in stand-by status zijn om de failover te laten plaatsvinden.

Hoe snel zal de failover zijn? Alle instantie werken hun laatste toegangstijd bij (en status, als het wordt gewijzigd) elke 5 seconden. Dus:

  • Als de actieve instantie wordt afgesloten en erin slaagt zijn status te rapporteren als "gestopt", zal een andere instantie het binnen 5 seconden overnemen.

  • Als de actieve instantie wordt afgesloten/niet beschikbaar wordt zonder te kunnen updaten zijn status, wachten standby-knooppunten op de failoververtraging + 5 seconden om het over te nemen

De failover-vertraging is configureerbaar, met het ondersteunde bereik tussen 10 seconden en 15 minuten (standaard één minuut). Om de failover-vertraging te wijzigen, kunt u het volgende uitvoeren:

zabbix_server -R ha_set_failover_delay=5m

Beheren van een HA-cluster

De huidige status van het HA-cluster kan worden beheerd met behulp van de speciale runtimebeheer opties:

  • ha_status - registreer de status van het HA-cluster in het Zabbix-serverlogboek (en op stdout)
  • ha_remove_node=doel - verwijder een HA-node geïdentificeerd door zijn <doel> - nummer van de node in de lijst (het nummer kan worden verkregen uit de uitvoer van ha_status), bijvoorbeeld:
zabbix_server -R ha_remove_node=2

Merk op dat actieve/standby-nodes niet kunnen worden verwijderd.

  • ha_set_failover_delay=vertraging - stel HA-failoververtraging in (tussen 10 seconden en 15 minuten; tijd suffixen worden ondersteund, bijv. 10s, 1m)

Node-status kan worden bewaakt:

  • in RapportenSysteeminformatie
  • in de dashboardwidget Systeeminformatie
  • met behulp van de ha_status runtimebeheeroptie van de server (zie hierboven).

Het interne item zabbix[cluster,discovery,nodes] kan worden gebruikt voor het ontdekken van nodes, omdat het een JSON retourneert met de informatie van de high-availability nodes.

Uitschakelen van een HA-cluster

Om een high availability cluster uit te schakelen:

  • Maak reservekopieën van configuratiebestanden.
  • Stop standby-nodes.
  • Verwijder de parameter HANodeName uit de actieve primaire server.
  • Herstart de primaire server (deze start op in de standalone modus).

Upgraden van HA-cluster

Om een upgrade naar een grote versie uit te voeren voor de HA-nodes:

  • Stop alle nodes.
  • Maak een volledige databaseback-up.
  • Als de database replicatie gebruikt, zorg er dan voor dat alle nodes gesynchroniseerd zijn en geen problemen hebben. Voer geen upgrade uit als de replicatie verbroken is.
  • Selecteer een enkele node die de database-upgrade zal uitvoeren, wijzig de configuratie naar de standalone modus door HANodeName uit te commentariëren en upgrade deze.
  • Zorg ervoor dat de database-upgrade volledig is voltooid (Systeeminformatie zou moeten weergeven dat de Zabbix-server actief is).
  • Herstart de node in de HA-modus.
  • Upgrade en start de overige nodes (het is niet nodig om ze naar standalone modus te wijzigen, aangezien de database op dit punt al is geüpgraded).

Bij een upgrade naar een kleine versie is het voldoende om de eerste node te upgraden, ervoor te zorgen dat deze is geüpgraded en actief is, en vervolgens de upgrade op de volgende node te starten.

Implementatiedetails

Het high availability (HA) cluster is een optionele oplossing en wordt ondersteund voor de Zabbix-server. De native HA-oplossing is ontworpen om eenvoudig in gebruik te zijn, het werkt over sites heen en heeft geen specifieke vereisten voor de databases die Zabbix herkent. Gebruikers kunnen de native Zabbix HA-oplossing gebruiken, of een HA-oplossing van een derde partij, afhankelijk van wat het beste past bij de vereisten voor hoge beschikbaarheid in hun omgeving.

De oplossing bestaat uit meerdere zabbix_server-instanties of nodes. Elke node:

  • wordt afzonderlijk geconfigureerd
  • gebruikt dezelfde database
  • kan verschillende modi hebben: actief, stand-by, niet beschikbaar, gestopt

Slechts één node kan op elk moment actief (werkend) zijn. Een stand-by node draait slechts één proces - de HA-manager. Een stand-by node voert geen gegevensverzameling, verwerking of andere reguliere serveractiviteiten uit; ze luisteren niet op poorten; ze hebben een minimum aantal databaseverbindingen.

Zowel actieve als stand-by nodes bijwerken hun laatste toegangstijd elke 5 seconden. Elke stand-by node controleert de laatste toegangstijd van de actieve node. Als de laatste toegangstijd van de actieve node langer is dan 'failover vertraging' seconden, schakelt de stand-by node zichzelf om naar de actieve node en wijst de status 'niet beschikbaar' toe aan de eerder actieve node.

De actieve node controleert de connectiviteit van zijn eigen database - als deze langer dan failover vertraging - 5 seconden verloren gaat, moet deze alle verwerking stoppen en overschakelen naar stand-by modus. De actieve node controleert ook de status van de stand-by nodes - als de laatste toegangstijd van een stand-by node langer is dan 'failover vertraging' seconden, krijgt de stand-by node de status 'niet beschikbaar' toegewezen.

De nodes zijn ontworpen om compatibel te zijn over kleine Zabbix-versies.