Použili jste někdy load balancer?

Magic

Použili jste někdy load balancer?
« kdy: 04. 01. 2014, 00:50:03 »
Ahoj, mate nejake zkusenosti s load balancery pro webovou farmu? Neco jsem na to tema googlil a pochopil jsem, ze se load balancery pouzivaji bud ve forme specialniho HW nebo jako sluzba, bezici obvykle na Linuxu. Pricemz to druhe ma nevyhody co se tyka spolehlivosti, ale zase je levnejsi.

Par veci mi ale neni jasnych:

Resi se u load balanceru nejak redundance? Pokud totiz necham traffic treba z 5 web serveru protekat pres jeden load balancer, tak vyrobim single point of failure. Dejme tomu, ze specialni HW neco vydrzi a redundance neni potreba ale co v pripade aplikace na obycejnem serveru?

A posledni vec, kterou jsem nepochopil - musi webserver s load balancerem nejak aktivne spolupracovat, nebo se vuci nemu chova transparentne? Je mozne mit treba na Windows Serverech IIS a pred nimi Linuxovy load balancer?

Predem diky za odpovedi.
« Poslední změna: 05. 01. 2014, 20:36:01 od Petr Krčmář »


DK

Re:Pouzili jste nekdy load balancer?
« Odpověď #1 kdy: 04. 01. 2014, 01:03:54 »
ano, ano, ne, ano

Jarin

Re:Pouzili jste nekdy load balancer?
« Odpověď #2 kdy: 04. 01. 2014, 01:07:43 »
Nikdy jsem žádnej pořádně nenasazoval. Ale tohle by tě mohlo zajímat. http://www.linux-ha.org/wiki/Pacemaker Samozřejmě záleží na konkrétní aplikaci. IMHO pomocí HW to nezachráníš vždycky.

eswrgewrtewrtw

Re:Pouzili jste nekdy load balancer?
« Odpověď #3 kdy: 04. 01. 2014, 01:46:04 »
zkus si treba dns dotaz na www.google.com (dig www.google.com) a voila ukazuje to na vice ip adres:
www.google.com.         57      IN      A       173.194.39.145
www.google.com.         57      IN      A       173.194.39.146
www.google.com.         57      IN      A       173.194.39.147
www.google.com.         57      IN      A       173.194.39.148
www.google.com.         57      IN      A       173.194.39.144

kdyz se budes ptat vicekrat za sebou tak ti to v ruznych okamzicich vrati ruzne ip, uz i toto by mohlo fungovat jako loadbalancing,
ale oni to maji tak, ze ty stroje s temito ip jsou vstupnimi body do loadbalanceru.
za nimi to pak rozhazou na hafo dalsich obsluznych serveru.

hledej: heartbeat, ganglia, mosix....

PANKapitanRUM

Re:Pouzili jste nekdy load balancer?
« Odpověď #4 kdy: 04. 01. 2014, 02:31:09 »
Je to tak, první stupeň LB je přes DNS a často i jediný.
LB si pak řeší každý lepší poskytovatel Kloudových služeb.
http://aws.amazon.com/elasticloadbalancing/


Re:Pouzili jste nekdy load balancer?
« Odpověď #5 kdy: 04. 01. 2014, 10:01:19 »
ano, ano, ano, ano.

Re:Pouzili jste nekdy load balancer?
« Odpověď #6 kdy: 04. 01. 2014, 10:06:28 »
I loadbalancerů můžete mít víc a přepínat mezi nimi stejně, jako byste přepínal mezi více servery bez loadbalanceru (třeba zmiňované DNS).

Spolupráce závisí na tom, jak konkrétně loadbalancing funguje. Může např. jen předávat TCP/IP spojení, do HTTP se vůbec nedívá -- pak žádná spolupráce ze strany serveru ani nepřipadá v úvahu. Takhle může být balancované i HTTPS aniž by LB znal privátní klíč certifikátu. Druhá možnost je, že LB zpracovává protokol HTTP. Pak v případě HTTPS musí mít privátní klíč certifikátu, s vlastním serverem už nejspíš bude komunikovat jen přes HTTP a v nějaké HTTP hlavičce mu bude předávat příznak, zda je spojení s klientem šifrované nebo ne. Server pak tuhle informaci musí získávat s té samé hlavičky (místo z typu spojení). Pokud se použije přihlašování klientským certifikátem, LB ho opět uloží do hlavičky. Další věc je, zda je komunikace stavová nebo bezestavová. Pokud se na serveru používají session a je potřeba, aby klient s jednou session byl směrován vždy na stejný server, musí server opět spolupracovat a session identifikovat způsobem, kterému LB rozumí a dokáže podle něj směrovat (např. dohodnutý název cookie). V tomhle případě samozřejmě při výpadku serveru přijdete o všechny session z příslušného serveru, na druhou stranu takhle můžete balancovat i aplikace, u kterých se s tím v návrhu nepočítalo. Další věc, na které musí LB a server spolupracovat, je signalizace nedostupnosti serveru. Je jasné, že se na server nemají posílat požadavky, pokud je síťově nedostupný -- ale třeba server chcete vyřadit i pokud vrátil HTTP kód 503. Ve všech případech ta "spolupráce" nemusí znamenat, že je potřeba něco na straně serveru upravit, často stačí jen nakonfigurovat LB -- ale není to tak, že byste jen před server postavil LB a bylo hotovo.

Magic

Re:Pouzili jste nekdy load balancer?
« Odpověď #7 kdy: 04. 01. 2014, 10:39:52 »
I loadbalancerů můžete mít víc a přepínat mezi nimi stejně, jako byste přepínal mezi více servery bez loadbalanceru (třeba zmiňované DNS).

Spolupráce závisí na tom, jak konkrétně loadbalancing funguje. Může např. jen předávat TCP/IP spojení, do HTTP se vůbec nedívá -- pak žádná spolupráce ze strany serveru ani nepřipadá v úvahu. Takhle může být balancované i HTTPS aniž by LB znal privátní klíč certifikátu. Druhá možnost je, že LB zpracovává protokol HTTP. Pak v případě HTTPS musí mít privátní klíč certifikátu, s vlastním serverem už nejspíš bude komunikovat jen přes HTTP a v nějaké HTTP hlavičce mu bude předávat příznak, zda je spojení s klientem šifrované nebo ne. Server pak tuhle informaci musí získávat s té samé hlavičky (místo z typu spojení). Pokud se použije přihlašování klientským certifikátem, LB ho opět uloží do hlavičky. Další věc je, zda je komunikace stavová nebo bezestavová. Pokud se na serveru používají session a je potřeba, aby klient s jednou session byl směrován vždy na stejný server, musí server opět spolupracovat a session identifikovat způsobem, kterému LB rozumí a dokáže podle něj směrovat (např. dohodnutý název cookie). V tomhle případě samozřejmě při výpadku serveru přijdete o všechny session z příslušného serveru, na druhou stranu takhle můžete balancovat i aplikace, u kterých se s tím v návrhu nepočítalo. Další věc, na které musí LB a server spolupracovat, je signalizace nedostupnosti serveru. Je jasné, že se na server nemají posílat požadavky, pokud je síťově nedostupný -- ale třeba server chcete vyřadit i pokud vrátil HTTP kód 503. Ve všech případech ta "spolupráce" nemusí znamenat, že je potřeba něco na straně serveru upravit, často stačí jen nakonfigurovat LB -- ale není to tak, že byste jen před server postavil LB a bylo hotovo.

Z pohledu vyvojare tomu rozumim - u distribuovanych aplikaci se session obvykle ukladaji na jeden spolecny state server, pripadne do spolecne DB. Prave aby nebyla jedna session vazana na konkretni server. Jen me zajimalo, jak to funguje mezi web servery a zasuvkou do Internetu protoze k tomu se jako vyvojar nedostanu. Diky za objasneni.

Re:Pouzili jste nekdy load balancer?
« Odpověď #8 kdy: 04. 01. 2014, 11:20:09 »
Řekl bych, že běžný standard jsou váhy k podřízeným serverům pod tím, já to dělím i na pooly s jednotlivými službami. Raději i ověřuju co vrací a přeskakuju jinam pokud to je 404/503 atd. Obvykle se nastaví i příznak mrtvého upstreamu a k tomu běží čas.
V případě absolutní paniky se systém pokusí vytáhnout i poslední odpověď (pokud opravdu žádný systém pod ním nereaguje) a pak holt opravdu ukončí spojení s tím, že to fakt nejde :D (ale tak daleko by se neměl nikdo dostat)
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re:Pouzili jste nekdy load balancer?
« Odpověď #9 kdy: 04. 01. 2014, 11:48:55 »
Dlhorocne pouzivame jenoduchy system pre HTTP/HTTPS:

*Dva A DNS zaznamy, Dane IPcky na 2 masicnach na ktorych bezi ldirectord (LVS) a hearbeatom si prevezme jeden IPcku druheho v pripade vypadku HW
*Dalsie dva servre na ktorych bezi nginx, tu sa terminuje SSL a cita session cookie. Backend nemohol zdielat session data a tak sme museli mat session stickyness... Oba nginxy si rovnako cez HB kryli svoje IPcky a pri novom spojeni cez Round Robin posielali spojenia na asi 10 aplikacnych tomcat serverov vzadu.

Jedina nevyhoda daneho systemu bola, ze ked sa nejaky tomcat rozlucil, user sa musel znovu prihlasit a stratil cast svojej prace. Az by slo o nejake jednoduchsie aplikacie ako PHP, dalo by sa dat sessny do memcached a ani session stickyness by nebol nutny.

Komunikacia medzi nginxami a backendom nebola ziadna. Akurat ldirectord sa stale snazil nacitat "all systems go" a v pripade ze ho nedostal vyhlasil node za mrtvy a nginx sa zase riadil len response codeom/timeoutom.

bwbw

Re:Pouzili jste nekdy load balancer?
« Odpověď #10 kdy: 05. 01. 2014, 15:12:17 »

Boban

Re:Použili jste někdy load balancer?
« Odpověď #11 kdy: 07. 01. 2014, 13:07:40 »
Máme v produkci
DNS balancer > virtual IP(Keepalived) > Nginx(SSL offload + static) a PHP přes FPM. Pro zachování session jeden společný Memcached. Funguje ke spokojenosti.

Pro balancování samotného HTTP pak jen HAProxy.

...

Re:Použili jste někdy load balancer?
« Odpověď #12 kdy: 15. 01. 2014, 11:43:16 »
Hsrp heartbeat piranha bridge tomcat connectors co drží session a milion dalších věcí na různé vrstvě v rozdílným nasazení. Spis napiš co mas a co potřebuješ jinak se nepohnes dal. Od linkové až po aplikační vrstvu.

flv

Re:Použili jste někdy load balancer?
« Odpověď #13 kdy: 15. 01. 2014, 20:18:21 »
Jsou nejaka negativa pri pouzivani loadbalanceru na amazonu ?

Re:Použili jste někdy load balancer?
« Odpověď #14 kdy: 15. 01. 2014, 20:34:53 »
Jsou nejaka negativa pri pouzivani loadbalanceru na amazonu ?
Jsou tam problémy při kombinaci s Elastic IP. Přesný detaily si teď nevybavím, takže si to radši vygoogli.