Jeffrey Cross
Jeffrey Cross

Zero výpadek server restartuje s HAProxy

HAProxy je softwarový nástroj pro vyvažování zátěže HTTP založený na vysoké dostupnosti, který jsem viděl, že získal velké množství trakcí ve velkých serverových clusterech a prostředích cloud computingu. V současné době ji používám jako součást předdefinovaného klastrového obrazu, který spravuje třetí strana, a jeho výkon mě natolik ohromil, že jsem se začal dále zabývat jeho schopnostmi. Vzhledem k tomu, že se jedná o softwarové řešení, nabízí vám mnoho možností přizpůsobení konfigurace.

Jednou z čistých funkcí, se kterou jsem narazil, je konfigurace, která vám umožní restartovat servery v clusteru, aniž by jeden uživatel narazil na chybu 404, výpadek nebo ztracené relace. Trik spočívá v použití pravidla iptables, aby Apache reagoval na dva porty, řekněme 80 a 81. Apache skutečně běží na portu 80 a port 81 je nakonfigurován tak, aby přešel na port 80. HAProxy je pak nakonfigurován pro použití portu aplikačního serveru 81 a stejný server na portu 80 je definován jako zálohování.

Blog igvita.com má dobrý způsob, jak to udělat právě takto:

Místo toho, abychom určili fyzicky odlišný aplikační server, budeme definovat naši záložní instanci tak, aby byl v každém případě přesně stejný aplikační server, ale s jedním menším rozdílem: stavový port pro hlavní aplikační server se bude lišit od toho, který je používáme na zálohování.

Pokud chceme server uvést do režimu údržby, odstraníme pravidlo IPTables pro předávaný port a vyčkáme několik vteřin, aby naše instance upstream HAProxy rozpoznala, že server již není k dispozici pro nová připojení - to je klíč, znamená to, že do procesu není upuštěn žádný klient. Jakmile je server v HAProxy mimo rotaci, můžeme provést ladný restart, přidat pravidlo IPTables zpět a žijeme!

Co je v pohodě, je to, že bez jakékoli rekonfigurace na serveru proxy můžete stroj přetáhnout v režimu offline. Jednoduše vypnete iptables port vpřed, HAProxy si všimne, že port 81 šel offline a začal posílat existující uživatele do portu 80 s jejich aktuálními cookies. Ve skutečnosti se jedná o přesně stejnou instanci Apache, takže všechny informace o relaci zůstanou nedotčeny. Všechny nové relace budou poslány na vaše další servery a můžete počkat, dokud nikdo nezůstane v režimu údržby.

HAProxy Zero-Downtime Restartuje s HAPRoxy Oficiální HAProxy dokumentací (viz oddíl 4.2, soft-stop pomocí záložních serverů)

Podíl

Zanechat Komentář