[geGIS] Gegis en load balancing
dirk frigne
dirk op frigne.be
Do Sep 13 10:39:23 CEST 2007
Koen,
Wanneer we de architectuur van geGIS bekijken, dan bestaat deze uit 3 lagen.
De presentatielaag die in je browser draait zorgt ervoor dat de plaatjes
gerenderd worden en dat de juiste data van de server wordt gehaald. Hoe meer
je op de server kan laten uitvoeren, hoe minder er van de browser gevraagd
wordt.
De applicatielaag bevat de eigenlijke applicatie en doet een groot deel van
het reken en communicatiewerk.
De persistentielaag zorgt ervoor dat de gegevens aangeboden worden aan de
applicatielaag.
Loadbalancing
We hebben dit noog niet getest, dus mijn opmerkingen zijn theoretisch. We
vermoeden wel dat dit moet werken en eventueel kleine haperingen geef je
best door zodat we deze kunnen bekijken en actie ondernemen.
sessies
Zoals je terecht opmerkt kent geGIS de notie van een sessie. Load balancing
zou dus inderdaad op niveau van sessies moeten gebeuren. Een sessie wordt
geïnstantieerd tussen de presentatielaag en de applicatielaag.
Ik weet niet wat de configuratiemogelijkheden van je loadbalancer juist
zijn, maar je hoeft vermoedelijk niet op niveau van een gebruiker te
balancen. Als de loadbalancer een sessieId kan herkennen kan hij op basis
daarvan een server toewijzen en deze consequent aanhouden. Het sessiId is
één van de argumenten die steeds wordt doorgestuurd na authentificatie.
Balancing op niveau van een gebruiker is natuurlijk ook een optie.
Absolute url's
url's komen bij de configuratie enkel voor bij de definitie van de
datastores.
Binnen geGIS is er een initialisatiemodule waar de url van de webapp server
wordt bepaald. Graag feedback bij een eventuele test hoe dit onderdeel zich
gedraagt. Ik vermoed dat dit zou moeten werken, eventueel na een paar kleine
aanpassingen.
Urls binnen de configuratie:
We maken een onderscheid tussen 'locale data' en data die via webservices
wordt opgehaald. 'locale data' bestaat uit gegevens die in de centrale
locale database server wordt opgeslagen. Het betreft de eigenlijke
authentieke gegevensbronnen.
Een andere vorm van locale
Absolute url's voor 'locale data' kunnen worden vermeden bij de
configuratie.
Wat de data betreft die via webservices wordt ontsloten moeten wel absolute
url's worden gebruikt. Maar het is de verantwoordelijkheid van de service
provider om te zorgen dat het aanleveren en opvragen van deze data voldoende
snel en performant kan gebeuren. Dus dit zit buiten de scope van een geGIS
configuratie. De locale datastore's en eventueel deze aanbieden als externe
webservices zit wel binnen de scope van een installatie.
Op het vlak van schaalbaarheid zijn er verschillende opties: je kan er voor
opteren om de 'locale database server' op een fysisch andere locatie laten
draaien. Je kan dan nog een extra loadbalancing level invoeren wanneer je
bijvoorbeeld 2 verschillende databases parallel wil opzetten. Voor
consultatie doeleinden is dit geen probleem. Om data weg te schrijven zal je
hier wellicht specifieke voorzorgen moeten nemen.
Je kan die database server ook op 1 machine zetten en elke applicatieserver
met deze machine contact laten opnemen.
Wat locale bestanden betreft (zoals shapefiles) kunnen relatieve paden
worden gespecificeerd.
Conclusie:
Het antwoord is ja, het zou moeten mogelijk zijn om gegis te laten draaien
via een proxy.
Deze manier van werken is nog niet getest, dus als je een dergelijke
configuratie opzet, zijn we zeer geïnteresseerd om je ervaringen te vernemen
rond deze setup. Als je vragen en of opmerkingen hebt, dan bekijken we samen
hoe we deze best aanpakken/oplossen.
Veel succes,
Dirk Frigne
>-----Oorspronkelijk bericht-----
>Van: list-bounces op gegis.org [mailto:list-bounces op gegis.org] Namens Van
Daele, Koen
>Verzonden: woensdag 12 september 2007 10:07
>Aan: list op gegis.org
>Onderwerp: [geGIS] Gegis en load balancing
>
>Is het mogelijk om gegis te draaien in een omgeving waarbij gegis achter
>een proxy en/of een loadbalancer zit? Zodat er bijvoorbeeld 2 webservers
>zijn die gegis draaien waarbij de load balancer de requests onderschept
>en doorstuurt naar 1 van beide webservers. Mogelijke problemen die
>hierbij kunnen optreden zijn:
>- Sessies:
>de sessie van gebruiker A op server1 bestaat niet op server2, kan
>opgelost worden door een bepaalde gebruiker steeds naar dezelfde server
>te sturen
>- Het aanmaken van absolute url's:
>Vaak wordt er hiervoor gebruik gemaakt van de naam van de server, echter
>in een dergelijke setup heeft de server intern een andere naam dan
>extern. Bv: gis.vioe.be mapped naar de proxy die doorstuurt naar
>gis1.intern.vioe.be of gis2.intern.vioe.be. Als je echter een absolute
>url aanmaakt op basis van deze waardes dan krijg je iets zoals (bv. RSS
>feed): http://gis2.intern.vioe.be/nieuws/rss Natuurlijk bestaat deze
>niet. Oplossingen hiervoor zijn de server-naam te gaan halen uit de
>HTTP_X_FORWARDED_SERVER die door de proxy wordt toegevoegd aan de
>request. Vaak kan het ook al opgelost te worden met door iets als
>BASE_URL te definieren en alle url's daarop te gaan genereren.
>
>Vriendelijke groeten,
>Koen Van Daele
Meer informatie over de List
maillijst