Skip to content
Menu
msandor honlapja
  • Bemutatkozás
msandor honlapja

Zabbix szerver HA

Posted on 2024.12.18.2024.12.19.

Mit jelent a gyakorlatban a HA?

High availability, azaz magas rendelkezésre állás.

Természetesen vannak olyan szituációk, amikor nem engedhetjük meg magunknak, hogy az alkalmazásunk elérhetetlenné váljon. Ebben a konkrét példában a zabbix szerver. Ez azt fogja jelenteni, hogy a tervezett főverzió frissítéseket leszámítva, nem fogunk az esetlegesen előforduló leállás miatt adatot veszíteni. Nem csak arra kell gondolni, hogy leáll a zabbix szerver (nem szokott), az is lehet, hogy csak az őt futtató szervert indítjuk újra egy tervezett frissítés miatt.

Akinek nem fér bele ez a kockázat, az használja a zabbix szervert HA módban!

Mit kell erről tudni?

El sem fogod hinni, de legalább két zabbix szerverre lesz szükséged 🙂

Ezt a funkciót a 6.0 verzióban vezették be, természetesen minden ettől újabb verzió is támogatja. A weboldalukon leírják a tudnivalókat, én is ezek alapján csináltam meg a saját laboromban.

Fontos, hogy a helyes működéshez minden zabbix agenten be kell állítani a 2. zabbix szerver IP címét (vagy hoszt nevét), ahonnan érkezhet a kapcsolat (passzív mód esetén), vagy ahová küldenie kell az adatokat (aktív mód esetén). Ha használunk zabbix proxy(ka)t, természetesen azoknál is be kell állítani minden szerver IP címét/hoszt nevét.

A zabbix szerver HA működési elve, hogy egy időpontban csak egy aktív szerver lehet, a többi készenléti módban fog futni.

Milyen gyors lesz a feladatátvétel? Minden zabbix szerver 5 másodpercenként frissíti utolsó hozzáférési idejét (és állapotát, ha megváltozik).

  • ha az aktív csomópont leáll, és sikerül „leállítva” állapotát jelentenie, akkor 5 másodpercen belül egy másik csomópont veszi át az irányítást
  • ha az aktív csomópont leáll vagy elérhetetlenné válik anélkül, hogy frissítené állapotát, a készenléti csomópontok megvárják a feladatátvételi késleltetést (10 másodperc és 15 perc között bármi lehet) + 5 másodpercet, hogy átvegyék az irányítást

Hogyan néz ki a labor környezetem?

  • van 3 hosztom, rajtuk zabbix agent (passzív módban)
  • van 2 zabbix proxym, ők is HA módban vannak (az erről szóló cikkem itt olvasható)
  • van 2 szerverem immár HA módban
  • és van egy zabbix frontendem
  • az egész dockerben fut, amivel rengeteg időt meg tudok spórolni
  • a legújabb LTS 7.0 verziót futtatom
  • adatbázisnak a MariaDB 10.6 (LTS) verziót választottam

Ez lett a topológia:

1. lépés: a meglévő zabbix szerver konfigurálása

Nyissuk meg szerkesztésre a zabbix szerver1 docker-compose.yml fájlt. 3 sort szúrjunk be a változók közé:

- ZBX_NODEADDRESS=zbxlab_7.0-zabbix-server1
- ZBX_HANODENAME=zbxnode1
- ZBX_AUTOHANODENAME=zbxlab_7.0-zabbix-server1

A név bármi lehet, ez fog látszani a státusz képernyőn, ám a cím valós hoszt név vagy IP cím legyen!

A szerver újraindítása után ezt fogjuk látni a system information oldalon:

Már látszik, hogy a HA mód be van kapcsolva, de egy szerver még nem teljesíti a HA módot 🙂

2. lépés: az új, 2. zabbix szerver konfigurálása

Nyissuk meg szerkesztésre a zabbix szerver2 docker-compose.yml fájlt. 2 sort szúrjunk be a változók közé:

- ZBX_HANODENAME=zbxnode2
- ZBX_AUTOHANODENAME=zbxlab_7.0-zabbix-server2

A név bármi lehet, ez fog látszani a státusz képernyőn, ám a cím valós hoszt név vagy IP cím legyen!

A szerver elindítása után ezt fogjuk látni a system information oldalon:

3. lépés: a zabbix frontend konfigurálása

Ez lesz a legkönnyebb, ugyanis ide nem kell beszúrni semmit, mivel minden zabbix szerver node elérhetősége megtalálható az adatbázisban, szóval innen csak törölni kell a  ZBX_SERVER_HOST és a ZBX_SERVER_PORT változókat.

4. lépés: ha használunk zabbix proxy(ka)t, akkor velük fejezzük be, ha nem, a zabbix agentetek állítjuk át

Ha használunk zabbix proxykat, akkor az 1. proxyhoz adjuk hozzá a kettes szerver hosztját, a 2. proxyhoz pedig az egyest, gyakorlatilag mindkét proxynk ezen változója egyforma lesz:

ZBX_SERVER_HOST=zbxlab_7.0-zabbix-server1;zbxlab_7.0-zabbix-server2

Ha nincsenek proxyjaink, akkor az agenteken adjuk meg a két (vagy több) szerver hosztját:

ZBX_SERVER_HOST=zbxlab_7.0-zabbix-server1,zbxlab_7.0-zabbix-server2

Éles szeműek észrevehették, hogy mind a proxy, mind az agent ugyanazt a változót használja 🙂

Ám egy apróság mégis van, a proxykat aktív módban használom, az agenteket tipikusan passzív módban, ezért fontos, hogy vesszővel vagy pontosvesszővel szeparáljuk el a hosztokat.

5. lépés: a failover idő beállítása a minimumra (10s)

Parancssorban adjuk ki az alábbi utasítást, ahol a zabbix szerver1 konténerünk neve zbxlab_7.0-zabbix-server1:

sudo docker exec zbxlab_7.0-zabbix-server1 zabbix_server -R ha_set_failover_delay=10s

Teszteljük a klasztert, nyírjuk ki a zabbix-server1 konténert

Parancssorban adjuk ki ezt az utasítást, ahol a zabbix szerver1 konténerünk neve zbxlab_7.0-zabbix-server1:

sudo docker rm -f zbxlab_7.0-zabbix-server1

Mit mutat a system information?

A piros hibaüzenet szerint nem tud csatlakozni az adatbázis szerinti aktív szerverhez, hiszen még nem telt el a 10+5 másodperc, utána az eddig készenlétben álló szerver2 aktívvá válik, a kinyírt szerver1 pedig nem elérhető státuszba kerül:

Az 1. sorban látszik, hogy kihez csatlakozott a frontend, az utolsó sorban pedig mutatja, hogy a kinyírt szerver1 elérhetetlen. Ha újra elindítom, belőle lesz a készenléti szerver:

Zabbix frissítése HA környezetben

Normál esetben az induló zabbix szerver ellenőrzi az adatbázisban a zabbix verzióját, és ha régebbit talál ott, automatikusan elindítja a DB frissítését. Ám HA esetén ez nem fog menni:

  • előbb állítsuk le az összes zabbix szervert
  • majd kommentezzük ki az aktív szerveren a ZBX_NODEADDRESS, ZBX_HANODENAME, ZBX_AUTOHANODENAME változókat
  • készítsünk egy adatbázis mentést
  • indítsuk el a preparált szervert, ő fogja elvégezni a DB frissítését
  • ha végzett, vegyük ki a kommenteket a preparált szerverből, és indítsuk újra
  • végül a többi szerver node-ot is elindíthatjuk

Mi maradt még?

Hogy ne kelljen 9 docker-compose.yml fájl létrehoznotok, és innen kimásolt adatokkal feltölteni, készítettem egy tömörített fájlt az egész laborról, így elég letöltenetek, kicsomagolnotok, és a start-all.sh scripttel elindítani az egészet. Természetesen a stop-all.sh-val lehet leállítani.

A frontendet ezen a linken tudjátok majd elérni: http://192.168.70.1:8080/, az alapértelmezett felhasználónév: Admin, a jelszó: zabbix.

Utóirat

Ez a cikk nem a zabbix vagy docker bemutatásáról szól, arról már írtam korábban több cikket is, ez kizárólag a zabbix szerver HA képességéről szól, így ha minden mondatom kínai számodra, akkor kezd el az alapok olvasásával.

Természetesen docker mentes környezetben is lehet használni a zabbixot, de akkor ehhez a laborhoz szükség lett volna több virtuális gépre is, aminek a létrehozása jóval több időmet elvitte volna, miközben a lényeg nem változik.

Vélemény, hozzászólás? Válasz megszakítása

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Kategóriák

  • ansible
  • docker
  • e-mail
  • git
  • hardware
  • hibakeresés
  • kubernetes
  • ldap
  • Linux
  • MariaDB
  • OpenWrt
  • Proxmox
  • security
  • SNMP
  • Synology
  • teszt
  • Unifi
  • UPS
  • vagrant
  • Virtualbox
  • zabbix
©2025 msandor honlapja | WordPress Theme by Superb WordPress Themes

Adatkezelési tájékoztató || Hibát talált az oldalon? Írja meg nekem. || Impresszum || Powered by WordPress

Oldalunk cookie-kat ("sütiket") használ. Ezen fájlok információkat szolgáltatnak számunkra a felhasználó oldallátogatási szokásairól a legjobb felhasználói élmény nyújtása érdekében, de nem tárolnak személyes információkat, adatokat. Szolgáltatásaink igénybe vételével Ön beleegyezik a cookie-k használatába. Kérjük, hogy kattintson az Elfogadom gombra, amennyiben böngészni szeretné weboldalunkat.ElfogadomAdatvédelmi irányelvek