Loadbalancing met sticky sessions en urlrewrite

Pagina: 1
Acties:

  • killingdjef
  • Registratie: Januari 2004
  • Laatst online: 19-10-2025
Hallo,

Op dit moment heb ik 2 tomcat applicatie servers draaien. Beide hosten dezelfde webapp, ze zijn dus opgezet voor redundantie. Nu wil ik hiervoor een loadbalancer zetten met behulp van Linux Virtual Server. Ideaal gezien, distribueerd de loadbalancer de gebruikers naar de tomcat servers.

Hier heb ik een vraag over. Ik zou namelijk graag willen weten of LVS ondersteuning biedt voor sticky sessions, (IP blijft dus toegewezen op een tomcat).

Hiernaast wordt de website ook gehost op de tomcat server. Echter is een URL zoals http://tomcatserver.domeinnaam/webapp/index.html niet echt gebruiksvriendelijk. Kan LVS niet gebruikt worden om bijv. http://tomcatserver.domeinnaam/webapp/ 1 op 1 te mappen met http://www.domeinnaam.nl/ ?

Misschien gek om het hier te vragen maar ik zag dat tweakers een soort gelijk systeem gebruikt en aangezien met hetzelfde load balance systeem dus dacht.. toch even een gokje wagen.

Daarnaast lijkt mij een dergelijke setup vrij triviaal om op te zetten. Wellicht dat ik met LVS in de verkeerde hoek zit, iedere hint is welkom.

Alvast bedankt

  • Predator
  • Registratie: Januari 2001
  • Laatst online: 02-02 21:15

Predator

Suffers from split brain

Ik ben niet bekend met LVS maar wel wat met loadbalancers.

Sticky sessions is iets wat zo goed als alle loadbalancer oplossingen mogelijk maken.
Maar daar zijn ook weer verschillende manieren voor, de 1 al beter dan de andere.
Cookie insertion/source IP/cookie tracking/...

Als je op layer-7 loadbalancing werkt dan vind je meestal ook wel ondersteuning voor url rewriting.
Maar een deel van je probleem tomcatserver.doeminnaam -> www.domeinnaam.nl is toch gewoon makkelijk op te lossen :?
Gewoon even je webserver virtualhosts aanpassen zodat je ook www.domeinnaam.nl kan gebruiken.
Als dat je probleem is tenminste.

Maar vergeet niet dat als je over loadbalancing spreekt, dat alles op layer-7 véél trager is dan pure layer 4 (TCP) loadbalancing. Op dat level hoeft je loadbalancer niet dieper in de connectie te kijken.
TCP loadbalancing is een héél stuk sneller. Maar sticky sessions (source/session persistence) is wel moeilijker bij TCP loadbalancing aangezien dit meestal gewoon op source IP gedaan wordt en dat is in sommige gevallen niet correct.

Maar met 2 webservers zal je toch niet al te snel performance problemen op je loadbalancer(s) krijgen ;-)

PS: vergeet ook niet dat je een loadbalancer cluster nodig hebt wil je de redundantie behouden.

[ Voor 8% gewijzigd door Predator op 17-09-2009 21:50 ]

Everybody lies | BFD rocks ! | PC-specs


Verwijderd

offtopic:
Hee Preddie :*


Interessant topic. Ik sta binnenkort voor ongeveer dezelfde opgave. Ik moet (in eerste instantie) twee Tomcat (JBoss) servers gaan loadbalancen. Wij zijn aan het kijken naar wat er allemaal te krijgen is, ook qua appliance loadbalancers. Ook ik moet iets met sticky sessions gaan doen.

Voorkeur gaat bij ons uit naar appliance, te weinig kennis in huis voor Linux. Weet niet of jij ook nog met SSL zit, ik moet daar in elk geval wel op voorbereid zijn. Dan moet je SSL dus ook al op de loadbalancer kunnen afhandelen (toch?). Betekent dit dan automatisch dat ik met SSL aan L7 loadbalancing zit?

Wij zullen hier intern ook verder gaan kijken naar de mogelijkheden. Laten we elkaar op de hoogte houden :)

  • Equator
  • Registratie: April 2001
  • Laatst online: 02-02 21:20

Equator

Crew Council

#whisky #barista

SSL offloading heet dat. Dan termineer je de SSL sessie op de loadbalancer, en hoeven je Webservers geen versleuteling en ontsleuteling te doen. Wat de performance wel ten goede komt.

Wij gebruiken voor loadbalancing in principe de F5 loadbalancers. Dit zijn appliances, maar wel vrij prijzig.

offtopic:
:w Jebbie

[ Voor 4% gewijzigd door Equator op 18-09-2009 20:06 ]


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Verwijderd schreef op vrijdag 18 september 2009 @ 15:38:
offtopic:
Hee Preddie :*


Interessant topic. Ik sta binnenkort voor ongeveer dezelfde opgave. Ik moet (in eerste instantie) twee Tomcat (JBoss) servers gaan loadbalancen. Wij zijn aan het kijken naar wat er allemaal te krijgen is, ook qua appliance loadbalancers. Ook ik moet iets met sticky sessions gaan doen.
Je lijkt daar nogal zeker over. Waarom is dat? Het is namelijk veel beter om je sessies op alle servers beschikbaar te hebben. Dan hoef je niet moeilijk te doen met sticky sessions en als er een server uitklapt is niet iedereen die daar op zat z'n sessie kwijt.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Predator
  • Registratie: Januari 2001
  • Laatst online: 02-02 21:15

Predator

Suffers from split brain

offtopic:
Hee JSS :* O+

;)
Voorkeur gaat bij ons uit naar appliance, te weinig kennis in huis voor Linux. Weet niet of jij ook nog met SSL zit, ik moet daar in elk geval wel op voorbereid zijn. Dan moet je SSL dus ook al op de loadbalancer kunnen afhandelen (toch?). Betekent dit dan automatisch dat ik met SSL aan L7 loadbalancing zit?
Ja en nee.

Je kan altijd de SSL sessies via TCP loadbalancing verspreiden over de webservers, maar dan zitten die nog altijd met de SSL performance hit.

Dus: SSL termination ontlast je webservers.
Als je geen andere toestellen wilt toevoegen in the mix, dan zit je met SSL termination zoiezo met L7 loadbalancing. Maar dan is die L7 loadbalancing niet de performance hit, dat is dan de SSL termination :P

Je kan ook de loadbalancing scheiden van de SSL termination door nog een laag reverse proxy's in te zetten met SSL accelerator cards. Maar voor minder geld kan je wellicht de performance issues anders wegwerken (loadbalancer die meer SSL aan kan of meer webservers).

Maar veel loadbalancers kunnen al aardig wat SSL sessies verwerken.
http://www.kemptechnologi...-balancing.shtml?q=matrix
6000$ -> 1000 SSL TPS

Everybody lies | BFD rocks ! | PC-specs


  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Hier heb ik een vraag over. Ik zou namelijk graag willen weten of LVS ondersteuning biedt voor sticky sessions, (IP blijft dus toegewezen op een tomcat).
Sticky sessions zijn mijn inziens een dirty workaround voor een probleem dat je hebt in je applicatie (namelijk sessiebeheer in een balanced omgeving), en ik zou het dan ook zoveel mogelijk vermijden. Alle grote bekende webapplicaties slaan bijvoorbeeld een sessionid op in een cookie, en de overige informatie bijvoorbeeld in een db. Op die manier heb je geen stickyness nodig, en als er een server uitvalt of uitgezet wordt voor onderhoud, is iemand niet meteen zijn sessie kwijt.

Onze developers zeuren ook wel eens als ik weer eens een balancer voor een applicatie wil zetten, maar om scalability te bereiken moet er nou eenmaal soms gecode worden ;)
Hiernaast wordt de website ook gehost op de tomcat server. Echter is een URL zoals http://tomcatserver.domeinnaam/webapp/index.html niet echt gebruiksvriendelijk. Kan LVS niet gebruikt worden om bijv. http://tomcatserver.domeinnaam/webapp/ 1 op 1 te mappen met http://www.domeinnaam.nl/
Doe dit inderdaad gewoon in je webserver. Ik ken tomcat niet, maar in IIS of Apache maak je gewoon een aparte vhost, en zet je de applicatie in de root. Ik neem aan dat dit bij tomcat ook kan.
Daarnaast lijkt mij een dergelijke setup vrij triviaal om op te zetten. Wellicht dat ik met LVS in de verkeerde hoek zit, iedere hint is welkom.
Sja, je moet onderhoud enzo ook meerekenen. Je kunt een hardware appliance nemen, maar dan ben je een boel centjes kwijt, en die kan ook stuk (hoewel de kans klein is).

Bij onze projecten koop ik 2 Dell PowerEdge R300's voor 1500 euro per stuk (ietswat gepimped met remote access cards e.d.), en daarop installeer ik FreeBSD met carp voor de redundancy, en haproxy als balancer software. Werkt als een zonnetje. En als ik onderhoud wil plegen aan 1 balancer, kan ik met carp het ene virtuele ip omschakelen naar de andere balancer, en andersom. Je kunt natuurlijk kiezen voor 1 publiek ip met active-passive balancers, of 2 publieke ip's (dns round-robin bijvoorbeeld) en een active-active setup gebruiken (als er 1 plat ligt heeft de andere de 2 publieke ip's). Dat is althans hoe ik het doe :)

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!

Pagina: 1