1 Augsta pieejamība
Pārskats
Augsta pieejamība (HA) parasti ir nepieciešama kritiskās infrastruktūrās, kurās praktiski nevar atļauties dīkstāvi. Tāpēc jebkuram pakalpojumam, kas var atteikt, ir jābūt ieviestai pārslēgšanās uz rezerves risinājumam, lai tas pārņemtu darbību, ja pašreizējais pakalpojums atteiktu.
Zabbix piedāvā iebūvētu augstas pieejamības risinājumu, ko ir viegli iestatīt un kam nav nepieciešama iepriekšēja HA pieredze. Iebūvētā Zabbix HA var būt noderīga kā papildu aizsardzības slānis pret Zabbix serveris programmatūras/aparatūras atteicēm vai lai samazinātu dīkstāvi apkopes laikā.
Zabbix augstas pieejamības režīmā vairāki Zabbix serveri darbojas kā mezgli klasterī. Kamēr viens Zabbix serveris klasterī ir aktīvs, pārējie atrodas gaidstāvē un ir gatavi pārņemt darbību, ja tas būs nepieciešams.

Pāreja uz Zabbix HA nav saistoša. Jūs jebkurā brīdī varat pārslēgties atpakaļ uz savrupas darbības režīmu.
Skatiet arī: Ieviešanas informācija
Augstas pieejamības iespējošana
Zabbix servera palaišana kā klastera mezglam
Lai palaistu Zabbix serveri kā klastera mezglu, servera konfigurācijā ir nepieciešami divi parametri:
- HANodeName parametrs jānorāda katram Zabbix serverim, kas būs HA klastera mezgls.
Tas ir unikāls mezgla identifikators (piemēram, zabbix-node-01), ar kuru uz serveri tiks atsaukts aģenta un starpniekservera konfigurācijās. Ja nenorādīsiet HANodeName, serveris tiks palaists savrupā režīmā.
- NodeAddress parametrs jānorāda katram mezglam.
NodeAddress parametrs (adrese:ports) tiks izmantots Zabbix lietotāja saskarnei, lai izveidotu savienojumu ar aktīvo servera mezglu. NodeAddress jāatbilst attiecīgā Zabbix servera IP adresei vai FQDN nosaukumam.
Pēc izmaiņu veikšanas konfigurācijas failos restartējiet visus Zabbix serverus. Tagad tie tiks palaisti kā klastera mezgli. Jauno serveru statusu var redzēt sadaļā Atskaites → Sistēmas informācija, kā arī izpildot:
zabbix_server -R ha_status
Šī izpildlaika komanda ierakstīs pašreizējo HA klastera statusu Zabbix servera žurnālā (un arī stdout):

Lietotāja saskarnes sagatavošana
Pārliecinieties, ka Zabbix servera adrese:ports lietotāja saskarnes konfigurācijā nav definēta (atrodama lietotāja saskarnes failu direktorijā esošajā conf/zabbix.conf.php).

Zabbix lietotāja saskarne automātiski noteiks aktīvo mezglu, nolasot iestatījumus no mezglu tabulas Zabbix datubāzē. Aktīvā mezgla adrese tiks izmantota kā Zabbix servera adrese.
Starpniekservera konfigurācija
HA klastera mezgliem (serveriem) jābūt norādītiem pasīvā vai aktīvā Zabbix starpniekservera konfigurācijā.
Pasīvam starpniekserverim mezglu nosaukumi jānorāda starpniekservera Server parametrā, atdalot tos ar komatu.
Server=zabbix-node-01,zabbix-node-02
Aktīvam starpniekserverim mezglu nosaukumi jānorāda starpniekservera Server parametrā, atdalot tos ar semikolu.
Server=zabbix-node-01;zabbix-node-02
Aģenta konfigurācija
HA klastera mezgli (serveri) ir jānorāda Zabbix aģenta vai Zabbix agent 2 konfigurācijā.

Lai iespējotu pasīvās pārbaudes, mezglu nosaukumi jānorāda parametrā Server parameter, atdalot tos ar komatu.
Server=zabbix-node-01,zabbix-node-02
Lai iespējotu aktīvās pārbaudes, mezglu nosaukumi jānorāda parametrā ServerActive parameter. Ņemiet vērā, ka aktīvajām pārbaudēm mezgli ir jāatdala ar komatu no jebkuriem citiem serveriem, savukārt paši mezgli ir jāatdala ar semikolu, piemēram:
ServerActive=zabbix-node-01;zabbix-node-02
Pārslēgšanās uz rezerves mezglu
Ja aktīvais mezgls apstājas, Zabbix automātiski pārslēgsies uz citu mezglu. Lai pārslēgšanās notiktu, gaidstāves statusā jābūt vismaz vienam mezglam.
Cik ātri notiks pārslēgšanās? Visi mezgli ik pēc 5 sekundēm atjaunina savu pēdējās piekļuves laiku (un statusu, ja tas ir mainījies). Tātad:
-
Ja aktīvais mezgls izslēdzas un paspēj paziņot savu statusu kā "stopped", cits mezgls pārņems darbību 5 sekunžu laikā.
-
Ja aktīvais mezgls izslēdzas/kļūst nepieejams, nespējot atjaunināt savu statusu, gaidstāves mezgli gaidīs pārslēgšanās aizkavi + 5 sekundes, pirms pārņemt darbību.
Pārslēgšanās aizkave ir konfigurējama, un atbalstītais diapazons ir no 10 sekundēm līdz 15 minūtēm (pēc noklusējuma — viena minūte). Lai mainītu pārslēgšanās aizkavi, varat izpildīt:
zabbix_server -R ha_set_failover_delay=5m
HA klastera pārvaldība
Pašreizējo HA klastera statusu var pārvaldīt, izmantojot īpašās izpildlaika vadības opcijas:
ha_status- reģistrēt HA klastera statusu Zabbix servera žurnālā (un izvadīt uz stdout)ha_remove_node=target- noņemt HA mezglu, kas identificēts pēc tā <target> - mezgla nosaukuma vai ID (nosaukumu/ID var iegūt noha_statusizpildes izvades), piemēram:
zabbix_server -R ha_remove_node=zabbix-node-02
Ņemiet vērā, ka aktīvos/gaidstāves mezglus nevar noņemt.
ha_set_failover_delay=delay- iestatīt HA pārslēgšanās aizkavi (no 10 sekundēm līdz 15 minūtēm; tiek atbalstīti laika sufiksi, piemēram, 10s, 1m)
Mezglu statusu var uzraudzīt:
- sadaļā Pārskati → Sistēmas informācija
- informācijas paneļa logrīkā Sistēmas informācija
- izmantojot servera
ha_statusizpildlaika vadības opciju (skatiet iepriekš).
Iekšējo vienumu zabbix[cluster,discovery,nodes] var izmantot mezglu
atklāšanai, jo tas atgriež JSON ar augstas pieejamības mezglu informāciju.
HA klastera atspējošana
Lai atspējotu augstas pieejamības klasteri:
- izveidojiet konfigurācijas failu rezerves kopijas
- apturiet gaidstāves mezglus
- no aktīvā primārā servera noņemiet parametru HANodeName
- restartējiet primāro serveri (tas tiks palaists savrupā režīmā)
HA klastera jaunināšana
Lai veiktu HA mezglu galvenās versijas jaunināšanu:
- apturiet visus mezglus;
- izveidojiet pilnu datubāzes dublējumu;
- ja datubāze izmanto replikāciju, pārliecinieties, ka visi mezgli ir sinhronizēti un tiem nav problēmu. Neveiciet jaunināšanu, ja replikācija ir bojāta.
- atlasiet vienu mezglu, kas veiks datubāzes jaunināšanu, mainiet tā konfigurāciju uz savrupu režīmu, izkomentējot HANodeName, un jauniniet to;
- pārliecinieties, ka datubāzes jaunināšana ir pilnībā pabeigta (Sistēmas informācijā jābūt redzamam, ka Zabbix serveris darbojas);
- pārstartējiet mezglu HA režīmā;
- jauniniet un palaidiet pārējos mezglus (nav nepieciešams pārslēgt tos uz savrupu režīmu, jo šajā brīdī datubāze jau ir jaunināta).
Mazās versijas jaunināšanas gadījumā pietiek jaunināt pirmo mezglu, pārliecināties, ka tas ir jaunināts un darbojas, un pēc tam sākt nākamā mezgla jaunināšanu.
Ieviešanas detaļas
Augstas pieejamības (HA) klasteris ir izvēles risinājums, un tas tiek atbalstīts Zabbix serverim. Iebūvētais HA risinājums ir izstrādāts tā, lai būtu vienkārši lietojams, tas darbosies starp vietnēm un tam nav īpašu prasību attiecībā uz datubāzēm, ko Zabbix atpazīst. Lietotāji var brīvi izmantot iebūvēto Zabbix HA risinājumu vai trešās puses HA risinājumu atkarībā no tā, kas vislabāk atbilst augstas pieejamības prasībām viņu vidē.
Risinājums sastāv no vairākām zabbix_server instancēm jeb mezgliem. Katrs mezgls:
- tiek konfigurēts atsevišķi
- izmanto vienu un to pašu datubāzi
- var darboties vairākos režīmos: active, standby, unavailable, stopped
Vienlaikus aktīvs (darbojošs) var būt tikai viens mezgls. Gaidstāves mezglā darbojas tikai viens process — HA pārvaldnieks. Gaidstāves mezgls neveic datu vākšanu, apstrādi vai citas parastās servera darbības; tas neklausās portos; tam ir minimāls datubāzes savienojumu skaits.
Gan aktīvie, gan gaidstāves mezgli atjaunina savu pēdējās piekļuves laiku ik pēc 5 sekundēm. Katrs gaidstāves mezgls uzrauga aktīvā mezgla pēdējās piekļuves laiku. Ja aktīvā mezgla pēdējās piekļuves laiks pārsniedz 'failover delay' sekundes, gaidstāves mezgls pārslēdzas uz aktīvā mezgla lomu un piešķir iepriekš aktīvajam mezglam statusu 'unavailable'.
Aktīvais mezgls uzrauga savu savienojamību ar datubāzi — ja tā tiek zaudēta
uz ilgāk nekā failover delay-5 sekundēm, tam jāpārtrauc visa apstrāde
un jāpārslēdzas gaidstāves režīmā. Aktīvais mezgls arī uzrauga
gaidstāves mezglu statusu — ja gaidstāves mezgla pēdējās piekļuves laiks pārsniedz
'failover delay' sekundes, gaidstāves mezglam tiek piešķirts statuss 'unavailable'.
Mezgli ir izstrādāti tā, lai būtu savietojami starp mazajām Zabbix versijām.