Basis van webtechnologie
Achter een loadbalancer staan drie applicatieservers, en de loadbalancer verdeelt de verzoeken om de beurt over de servers (round robin). De sessiegegevens van een ingelogde gebruiker worden alleen in het geheugen opgeslagen van de server die de login heeft afgehandeld. Welke combinatie van een waarschijnlijk probleem en een tegenmaatregel is passend?
- AAls een verzoek bij een andere server terechtkomt, wordt de sessie niet gevonden en lijkt de gebruiker uitgelogd. Bewaar de sessies op een gedeelde plek die alle servers kunnen gebruiken
- BDe drie servers geven afzonderlijk dezelfde sessie-ID uit en de ID's botsen. Maak van sessie-ID's korte volgnummers, zodat gebruikers ze kunnen onthouden
- CDe loadbalancer kan geen cookies lezen, dus HTTPS werkt niet meer. Stop met het versleutelen van het verkeer tussen de loadbalancer en de servers
Antwoord en toelichting tonen
Antwoord: A. Als een verzoek bij een andere server terechtkomt, wordt de sessie niet gevonden en lijkt de gebruiker uitgelogd. Bewaar de sessies op een gedeelde plek die alle servers kunnen gebruiken
Als de sessiegegevens alleen in het geheugen van één server staan, kan een server die het volgende verzoek toegewezen krijgt de gebruiker niet herkennen. Een tegenmaatregel is de sessies te bewaren in een gedeelde opslag die elke server kan lezen en schrijven (een in-memory datastore of een database). Een andere is sessiepersistentie (sticky sessions), waarbij de verzoeken van dezelfde gebruiker steeds naar dezelfde server gaan; maar dan gaan sessies verloren als die server uitvalt, en de belasting raakt ook gemakkelijk ongelijk verdeeld. Als servers geen toestand bijhouden, kunnen er gemakkelijk servers worden toegevoegd of verwijderd.