HAProxy terheléselosztó telepítése CentOS rendszerre

A cikk fordítása a kurzus megkezdése előtt készült Linux Adminisztrátor. Virtualizálás és klaszterezés

HAProxy terheléselosztó telepítése CentOS rendszerre

A terheléselosztás egy elterjedt megoldás a webalkalmazások vízszintes skálázására több hoszton, egységes hozzáférési pontot biztosítva a felhasználóknak a szolgáltatáshoz. HAProxy az egyik legnépszerűbb nyílt forráskódú terheléselosztó program, amely magas rendelkezésre állást és proxizási funkciókat is biztosít.

A HAProxy célja az erőforrások kihasználásának optimalizálása, a sávszélesség maximalizálása, a válaszidő minimalizálása és az egyes erőforrások túlterhelésének elkerülése. Telepíthető számos Linux disztribúción, mint például a CentOS 8, amit ebben a útmutatóban is megvizsgálunk, valamint más rendszereken. Debian 8 és Ubuntu 16.

HAProxy terheléselosztó telepítése CentOS rendszerre

A HAProxy különösen alkalmas rendkívül magas forgalmú webhelyekhez, így gyakran használják a több szerverből álló webszolgáltatások megbízhatóságának és teljesítményének növelésére. Ebben az útmutatóban lépéseket mutatunk be a HAProxy terheléselosztóként való beállításához a CentOS 8 felhőszerverén, amely ezután a forgalmat a webkiszolgálóira irányítja.

A legjobb eredmények elérése érdekében legalább két webkiszolgálónak és egy terheléselosztó szervernek kell lennie. A webkiszolgálókon legalább egy alapvető webszolgáltatásnak, például az nginx-nek vagy httpd-nek kell futnia, hogy ellenőrizni lehessen a terheléselosztást közöttük.

HAProxy telepítése CentOS 8-ra

Mivel a HAProxy egy gyorsan fejlődő nyílt forráskódú alkalmazás, a CentOS alapértelmezett tárolóiban elérhető disztribúció nem biztos, hogy a legújabb verzió. Az aktuális verzió megismeréséhez futtassa az alábbi parancsot:

sudo yum info haproxy

A HAProxy mindig három stabil verziót kínál: a legfrissebb két támogatott verziót és egy régebbi verziót, amely még mindig kap kritikus frissítéseket. Mindig ellenőrizheti a legfrissebb stabil verziót a HAProxy weboldalán, majd eldöntheti, melyik verzióval szeretne dolgozni.

Ebben a kézikönyvben a legújabb stabil 2.0 verzió telepítését fogjuk bemutatni, amely a kézikönyv írásának idején még nem volt elérhető a standard tárolókban. Ezt közvetlenül a forrásból kell telepítenie. De először ellenőrizze, hogy a szükséges feltételek teljesülnek-e a program letöltéséhez és fordításához.

sudo yum install gcc pcre-devel tar make -y

A forráskód letöltéséhez használja az alábbi parancsot. Ellenőrizheti, hogy van-e újabb verzió, amely elérhető a HAProxy letöltési oldalán.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

A letöltés befejezése után csomagolja ki a fájlokat az alábbi parancs segítségével:

tar xzvf ~/haproxy.tar.gz -C ~/

Lépjen be a kicsomagolt forráskönyvtárba:

cd ~/haproxy-2.0.7

Ezután fordítsa le a programot a rendszerének megfelelően:

make TARGET=linux-glibc

Végül telepítse a HAProxy-t:

sudo make install

Most, hogy a HAProxy telepítve van, néhány további beállítást kell elvégezni a működéséhez. Folytassuk a szoftver és szolgáltatások konfigurálását az alábbiakban.

A HAProxy konfigurálása a szerveréhez

Most adja hozzá a következő könyvtárakat és statisztikai fájlt a HAProxy bejegyzéséhez:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Hozzon létre egy szimbolikus hivatkozást a bináris fájlokhoz, hogy a HAProxy parancsokat normál felhasználóként is futtathassa:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Ha proxy szervert szeretne hozzáadni a rendszerhez szolgáltatásként, másolja a haproxy.init fájlt az examples mappából az /etc/init.d/ könyvtárába. Szerkessze a fájl hozzáférési jogait, hogy a szkript futtatható legyen, majd indítsa újra a systemd demont:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Ezenkívül engedélyeznie kell a szolgáltatás automatikus újraindítását a rendszer indításakor:

sudo chkconfig haproxy on

A kényelem érdekében javasolt egy új felhasználót is létrehozni a HAProxy futtatásához:

sudo useradd -r haproxy

Ezután még egyszer ellenőrizheti az telepített verzió számát az alábbi parancs segítségével:

haproxy -v
HA-Proxy verzió 2.0.7 2019/09/27 - https://haproxy.org/

A mi esetünkben a verziónak 2.0.7-nek kell lennie, ahogy a fenti kimenet példájában látható.

Végül a CentOS 8 tűzfala alapértelmezés szerint elég szigorú ezen projekt esetében. Használja az alábbi parancsokat a szükséges szolgáltatások engedélyezésére és a tűzfal újraindítására:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Terheléselosztó beállítása

A HAProxy beállítása meglehetősen egyszerű folyamat. Valójában mindössze annyit kell tennie, hogy megmondja a HAProxy-nak, milyen kapcsolatokra figyeljen és hová irányítsa azokat.

Ez a konfigurációs fájl, az /etc/haproxy/haproxy.cfg létrehozásával történik, amely tartalmazza a szükséges beállításokat. További információt a HAProxy konfigurációs paramétereiről a dokumentációs oldalon, ha többet szeretne megtudni erről.

Terheléselosztás a szállítási szinten (4. réteg)

Kezdjük az alapvető beállítással. Hozzon létre egy új konfigurációs fájlt, például a vi parancs használatával:

sudo vi /etc/haproxy/haproxy.cfg

Adja hozzá a fájlhoz a következő szakaszokat. Cserélje ki server_name azokra, amelyek megjelenítik a szervereit a statisztikai oldalon, és private_ip a webforgalom irányításához használt szerverek privát IP-címeire. Ellenőrizheti a privát IP-címeket az UpCloud vezérlőpultján és a Privát hálózat fül alatt a menüben Hálózat.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

Ez a szállítási szintű terheléselosztót (4. réteg) definiálja http_front néven, amely a 80-as portot figyeli, majd a forgalmat a default_backend nevével rendelkező http_back felé irányítja. További statisztika /haproxy?stats elérheti a statisztikai oldalt az adott címen.

Különböző terheléselosztási algoritmusok.

A backend szakaszában megadott szerverek lehetővé teszik a HAProxy számára, hogy ezeket a szervereket a terheléselosztáshoz használja a round-robin algoritmus szerint, amikor csak lehetséges.

A terheléselosztási algoritmusok határozzák meg, hogy a backendben melyik szerverhez kerül minden egyes kapcsolat. Íme néhány hasznos opció:

  • Roundrobin: minden szerver felváltva kerül felhasználásra a súlyuknak megfelelően. Ez a legsimább és legigazságosabb algoritmus, amikor a feldolgozási idő a szervereken egyenletesen eloszlik. Ez az algoritmus dinamikus, lehetővé téve a szerver súlyának valós idejű módosítását.
  • Leastconn: A legkevesebb kapcsolattal rendelkező szerver kerül kiválasztásra. Körkörös keresés történik a hasonló terhelésű szerverek között. Ezen algoritmus használata hosszú munkamenetek, például LDAP, SQL, TSE stb. esetén ajánlott, de nem nagyon alkalmas rövid munkamenetekhez, mint az HTTP.
  • Első: Az első szerver, amely rendelkezik elérhető csatlakozási helyekkel, megkapja a kapcsolatot. A szerverek a legkisebb numerikus azonosítótól a legmagasabbig választhatók, ami alapértelmezés szerint a szerver elhelyezkedését jelöli a farmon. Amint a szerver eléri a maxconn értékét, a következő szerver kerül felhasználásra.
  • Forrás: A forrás IP-cím hash-elve van, és elosztva a futó szerverek összetevő súlyával, hogy meghatározzák, melyik szerver fogja kapni a kérést. Így azonos IP-címmel rendelkező ügyfél mindig ugyanahhoz a szerverhez kerül, miközben a szerverek változatlanok maradnak.

Alkalmazás szintű (7-es réteg) terheléselosztás beállítása

Egy másik elérhető lehetőség a terheléselosztó alkalmazás szintű (7-es réteg) működésének beállítása, ami hasznos, ha a webalkalmazása egyes részei különböző hosztokon helyezkednek el. Ezt úgy lehet elérni, hogy a kapcsolat átirányítását például URL alapján szabályozzuk.

Nyissa meg a HAProxy konfigurációs fájlt egy szövegszerkesztővel:

sudo vi /etc/haproxy/haproxy.cfg

Ezután állítsa be a frontend és backend szegmenseket az alábbi példa szerint:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

A frontend egy url_blog nevű ACL szabályt hirdet, amely minden kapcsolatra alkalmazva van, amelynek útvonala a /blog-gal kezdődik. A use_backend meghatározza, hogy azok a kapcsolatok, amelyek megfelelnek az url_blog feltételnek, a blog_back nevű backend által kell, hogy kiszolgálják, míg az összes többi kérést az alapértelmezett backend kezeli.

A backend oldalán a konfiguráció két szervercsoportot állít be: http_back, amint az korábban, és egy újat, a blog_backet, amely az example.com/blog kapcsolatok kiszolgálására szolgál.

A beállítások módosítása után mentse el a fájlt, és indítsa újra a HAProxy-t a következő parancs segítségével:

sudo systemctl restart haproxy

Ha a rendszerindítás során figyelmeztetéseket vagy hibákat kapott, ellenőrizze a konfigurációt, és győződjön meg róla, hogy létrehozta az összes szükséges fájlt és mappát, majd próbálkozzon újra a rendszer indításával.

Beállítás tesztelése

Miután a HAProxy be van állítva és fut, nyissa meg a terheléselosztó szerver nyilvános IP-címét a böngészőben, és ellenőrizze, hogy helyesen kapcsolódott-e a hátsó réshez. A stats uri paraméter a konfigurációban statisztikai oldalt hoz létre a megadott címen.

http://load_balancer_public_ip/haproxy?stats

Ha a statisztikai oldal betöltődik, és minden szerver zöld színnel jelenik meg, akkor a beállítás sikeres volt!

HAProxy terheléselosztó telepítése CentOS rendszerre

A statisztikai oldal hasznos információkat tartalmaz a webhelyek nyomon követéséhez, beleértve a működési/időszaki arányt és az aktív munkamenetek számát. Ha egy szerver piros színnel van megjelenítve, ellenőrizze, hogy a szerver be van-e kapcsolva, és hogy pingelni tudja-e a terheléselosztó gépről.

Ha a terheléselosztó nem válaszol, ellenőrizze, hogy a tűzfal nem blokkol-e HTTP-kapcsolatokat. Győződjön meg róla, hogy a HAProxy működik az alábbi parancs segítségével:

sudo systemctl status haproxy

A statisztikai oldal jelszóval való védelme

Ha azonban a statisztikai oldal csak a frontenden van megadva, akkor az nyilvános hozzáférésű, ami nem feltétlenül jó ötlet. Ehelyett megadhat neki egy saját portszámot, ha a lenti példát hozzáadja a haproxy.cfg fájl végéhez. Cserélje le username és password valami biztonságosra:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:jelszó

Miután új hallgatói csoportot adott hozzá, távolítsa el a stats uri régi hivatkozását a frontend csoportból. Amikor kész van, mentse el a fájlt, és indítsa újra a HAProxy-t.

sudo systemctl restart haproxy

Ezután újra nyissa meg a terheléselosztót az új portszámmal, és jelentkezzen be a konfigurációs fájlban megadott felhasználónévvel és jelszóval.

http://load_balancer_public_ip:8181

Győződjön meg róla, hogy az összes szerver továbbra is zöld színnel jelenik meg, majd nyissa meg a terheléselosztó IP-címét portszámok nélkül a böngészőjében.

http://load_balancer_public_ip/

Ha az Ön belső szerverein többféle céloldal található, észre fogja venni, hogy amikor újra betölti az oldalt, mindig másik hoszt válaszát kapja. Különböző terheléselosztási algoritmusokat próbálhat ki a konfigurációs részben, vagy áttekintheti a teljes dokumentációt.

Következtetés: HAProxy terheléselosztó

Gratulálunk, sikeresen beállította a HAProxy terheléselosztót! Még a terheléselosztó alapbeállításával is jelentősen javíthatja webalkalmazása teljesítményét és elérhetőségét. Ez az útmutató csak bevezető a HAProxy terheléselosztásába, amely sokkal többre képes, mint amit egy rövid telepítési utasításban le lehet írni. Javasoljuk, hogy kísérletezzen különböző konfigurációkkal a kiterjedt dokumentáció segítségével,amely elérhető a HAProxy-hoz, majd kezdje el a terheléselosztás tervezését a termelési környezetére.

Több hoszt használatával webszolgáltatása védelme érdekében, hogy tartalék teljesítménye legyen, a terheléselosztó magában még mindig hibapontként jelentkezhet. A magasabb elérhetőség érdekében létrehozhat egy lebegő IP-t több terheléselosztó között. Erről többet tudhat meg a lebegő IP-címekről szóló cikkünkből az UpCloudon..

További információ a kurzusról Linux Adminisztrátor. Virtualizálás és klaszterezés***

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster