HAProxy belőve

2020-03-21 16:53:50 · IT

Mi a HAProxy?

"A megbízható, nagy teljesítményű TCP/HTTP load balancer" - olvasható a weboldalukon és ez igaz is. Egy reverse proxy, ami rengeteg protokollt tud továbbítani és különböző módon terhelést elosztani a mögöttes szervereken. Konyhanyelven arra jó, hogy fut mondjuk 3 darab X típusú szervered - amin ugyan az található - ő pedig a megadott módon - pl. round robin - küldi feléjük a kliensektől érkező kéréseket.

Tud ettől több dolgot is, pl. kinevezhetsz x darab szervert CDN-nek, x darab szervert a landing paged kiszolgálására, x darab szervert a webalkalmazásod vagy annak részeinek a kiszolgálásához és ezeket mind-mind egyszerre kezeli és a kieső szervereket kihagyva irányítja a lekéréseket. A célja szerintem világos azok számára is, akik nincsenek otthon ebben a témában: magas rendelkezésre állás és gyors oldalbetöltés biztosítása. Ez még mindig felületesen súrolja a képességeit, de nem fényezem tovább, mert ez nem a reklám helye, nomeg, akit érdekel az már biztos hallott róla.

Ide minek?

Az MLT/PVGA szerverre tulajdonképpen nem is a load balancing miatt szükséges, hanem szimplán a reverse proxy miatt. Több szerverünk van, azokon több virtuális gép, azokon pedig több különböző webszerver is futhat más-más porton, más-más tartalommal. Ezek eddig mocsok kacifántos módon voltak irányítva. Először bemutatom a szervereket és szerepüket, hogy el tudjam magyarázni mi is történik és történt korábban:

  • web1 - ügyfelek Joomla weboldalai, MLT cuccok, varnish a Joomla siteok elé
  • web2 - fallback szerver, régi ügyfelek nagyon régi weboldalaihoz, amikhez hozzányúlni nem lehet, deprecated PHP verziót használnak, stb. okokból
  • pvga - PVGA weboldalak, Unofficial Junglist homepage, Minecraft dynmap + utóbbihoz varnish

A tűzfalon a web1 volt kiengedve egyedül és azon át volt proxyzva mind a web2, mind a PVGA cuccai, apache2-n át. Maradjunk annyiban, hogy az apache2 érezhetően nem proxyzásra való. Ha ez a káosz még nem elég: a web1-en lévő varnishon pl. úgy ment át a Joomla, hogy apache2 -> varnish -> apache2 (igen, önmagába visszaproxyzva, mivel ez van kiengedve). Katasztrófa, igaz? Ezt a szörnyű megoldást egyébként az szülte, hogy a Varnisht csak próbaként telepítettem és abban sem voltam biztos, hogy rendben fog működni. Most viszont, hogy bevált, lehetett gondolkodni a "rendszer javításán".

Némileg normalizált működés

Készült egy új virtuális gép dedikáltan a HAProxy részére és egy fél napnyi konfigurálás árán elintéztem, hogy minden lekérést ez a gép irányítson. Voltak benne izgalmas részek, de sikerült és még én is érzem a gyorsaságot, amit eddig a felesleges reverse proxyzás égetett el.

Amin gondolkodok, hogy a jövőben a két különböző Varnish instancet is megszüntetem és valószínűleg a HAProxy mellé rakok egyet, hogy minden menjen azon keresztül. Azt is fél napig elkonfigurálgatom, mire jó lesz és teljes lesz a boldogság :)