A HAProxy egy magas rendelkezésre állású, szoftveralapú HTTP terheléskiegyenlítő eszköz, amelyet a nagy szervercsoportok és a felhőalapú számítástechnikai környezetekben szerzett sok vontatásban szerzett. Jelenleg egy előre gyártott, klaszter-kép részeként használom, amelyet egy harmadik fél gyártója tart fenn, és a teljesítményem eléggé lenyűgözött, hogy elkezdtem tovább vizsgálni képességeit. Mivel ez egy szoftver megoldás, rengeteg rugalmasságot biztosít a konfiguráció testreszabásához.
Az egyik legtisztább funkció, amivel találkoztam, olyan konfiguráció, amely lehetővé teszi a kiszolgálók újraindítását egy fürtben anélkül, hogy egyetlen felhasználó 404-es hibát, leállási időt vagy elveszett munkamenetet tapasztalna. A trükk az, hogy egy iptables szabályt használjunk arra, hogy az Apache két portra válaszoljon, mondjuk 80 és 81. Az Apache valóban a 80-as porton fut, majd a 81-es port úgy van konfigurálva, hogy továbbítsa a 80-as portot. 81, és ugyanaz a szerver a 80-as porton a forró biztonsági mentés.
Az igvita.com blog egy jó módszert ad erre:
Ahelyett, hogy fizikailag eltérő alkalmazáskiszolgálót adnánk meg, a biztonsági mentési példányt minden esetben pontosan ugyanarra az alkalmazáskiszolgálóra fogjuk definiálni, de egy kisebb különbséggel: a fő alkalmazáskiszolgáló státuszportja eltérő lesz. használjuk a biztonsági mentést.
…
Most, ha a kiszolgálót karbantartási módba szeretnénk helyezni, eltávolítjuk az IPTables szabályt a továbbított portra, és várjunk néhány másodpercet, hogy az upstream HAProxy példány felismerje, hogy a kiszolgáló már nem érhető el új kapcsolatok számára - ez kulcsfontosságú, ez azt jelenti, hogy a kliens nem kerül le a folyamatba. Most, miután a szerver elfordult a HAProxy-ban, egy kecses újraindítást tehetünk, hozzáadjuk az IPTables szabályt, és élünk!
Mi a hűvös, hogy a proxy újrakonfigurálása nélkül a gépet kecsesen húzhatja ki. Egyszerűen letiltja az iptables portot előre, a HAProxy észreveszi, hogy a 81-es port offline állapotba került, és a meglévő felhasználókat a 80-as portra küldi az aktuális cookie-kkal. A valóságban ugyanaz az Apache-példány, így az összes munkamenet-információ sértetlen marad. Az összes új munkamenet elküldésre kerül a többi szerverre, és várhat, amíg senki nem marad a karbantartási módban, mielőtt offline állapotba kerülne.
HAProxy Zero-Downtime újraindul a HAPRoxy hivatalos HAProxy dokumentációjával (lásd a 4.2 fejezetet, a biztonsági mentés szerverek használatának leállítása)