Portál AbcLinuxu, 13. května 2025 03:52

Dotaz: mod_proxy_balancer a session affinity pomocou stickysession

17.10.2006 20:43 cronin | skóre: 49
mod_proxy_balancer a session affinity pomocou stickysession
Přečteno: 383×
Odpovědět | Admin
Zdravim!

Potreboval by som robit load-balancing dvoch webovych aplikacii nasadenych na aplikacnych serveroch, v jednom pripade na Tomcat-och, v druhom pripade na SunOne-och. Tieto aplikacne servery nie su a nebudu nakonfigurovane aby robili session replication. Aplikacia trackuje pouzivatelsku session pomocou cookie, kde je hodnota s menom JSESSIONID. Load balancing sa ma realizovat pomocou HTTP servera Apache 2.2 a modulov mod_proxy, mod_proxy_ajp pre Tomcat-y resp. mod_proxy_http pre SunOne-y a mod_proxy_balancer.

Princip je ten, ze ak pouzivatel zacne [pouzivatelsku] session na aplikacnom serveri A, musia byt vsetky dalsie requesty smerovane na server A, lebo aplikacny server B o prihlaseni sa tohto pouzivatela nic nevie.. Apache ma na tento ucel parameter stickysession pre cluster a route pre pre jednotlive nody. Do cookie zvolenej parametrom stickysession by mal ukladat hodnotu parametra route prislusneho nodu a vsetky nasledujuce requesty by mal podla tejto hodnoty smerovat na spravny node. Tolko teoria.

V praxi to ale nefunguje, do cookie sa neprida hodnota parametra route. Pouzivatel zacne session na serveri A, ale pri niektorom z dalsich requestov posle load balancer na Apaci request na server B, kde dojde k zlyhaniu.

Google nasiel niekolko suvisiacich zapisov v bugzile a mnoho diskusii, kde sa tento problem riesil, ale nevyriesil. Mate niekto load balancing pomocou mod_proxy_balancer rozbehane? Ak ano, mohli by ste byt napomocni konfigurakom apaca? Alebo mi viete niekto potvrdit, ze "je to rozbite"?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.7.2008 11:31 tomas84 | skóre: 30
Rozbalit Rozbalit vše Re: mod_proxy_balancer a session affinity pomocou stickysession
Odpovědět | | Sbalit | Link | Blokovat | Admin
Informaci o tom, na který server se má dotaz směřovat do cookie nepřidává Apache.

Přidání této informace si musíte zajistit sám a to buď pomocí Apache na jednotlivých nodech a nebo např. u tomcatu to lze automaticky a to pomocí parametru jvmRoute="nazev-serveru" v elementu //Engine v konfiguračním souboru server.xml. Tomcat bude potom generovat cookie JSESSIONID ve tvaru "XXXXXXXXXXXXX.nazev-serveru".

Apache se potom podle toho může řídit. Nastavíte stickysession na hodnotu JSESSIONID a pro jednotlivé BalanceMember nastavíte parametr route=nazev-serveru

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.