Internet, og bruken av Internet, har endret seg mye siden det f?rst s? dagens lys. Behovet for h?yere oppetid, bedre sikring mot angrep, og muligheten for ? kunne ta unna foresp?rsler ved ?kt trafikk, er bare noe av utfordringene man n? m? ta h?yde for n?r man setter opp en tjeneste p? web. En lastbalanserer i forkant av web-tjenesten kan bidra til ? l?se flere av disse utfordringene.
- Skal du sette opp for lastbalansering? → Se v?r konfigurasjonsguide.
- Meld deg p? e-postlisten sympa.uio.no/usit.uio.no/info/w3d-lb for nyheter og viktig informasjon om lastbalansering p? UiO.
Ved IT-avdelingen har vi i mange ?r benyttet lastbalanserere i forkant av v?re tjenester, og de siste ?rene har vi for web-tjenester prim?rt brukt produktet HAProxy i revers-proxy-modus. Lastbalansering i seg selv gir stor fleksibilitet i hvordan man kan drifte en web-tjeneste, og fungerer som en kobling mellom Internet og web-serverne. Dette gj?r det igjen mulig ? plassere web-serverne p? mer lukkede nettverk som gir bedre beskyttelse av trafikk til og fra Internet. I tillegg til dette har vi gradvis lagt til mer grunnsikring, som filtrerer bort ulike typer u?nsket trafikk f?r det n?r frem til tjenesten. Dette omfatter b?de foresp?rsler som antas ? v?re angrepsfors?k, trafikk fra IP-adresser som har blitt rapportert for u?nsket aktivitet m.m.
Det kan h?res komplisert ut ? sette opp en liten web-tjeneste bak en lastbalanserer, men i realiteten er det som regel kun sm? endringer som m? til for ? oppn? dette. Vi har laget en konfigurasjonsguide for de mest vanlige web-tjenerne vi har kjennskap med. Lastbalansererne v?re er ogs? satt opp i "makker"-par, slik at dersom en lastbalanserer blir utilgjengelig, enten pga. vedlikehold eller uforutsette problemer, s? vil den andre i "makker"-paret ta over trafikken umiddelbart.
Figuren over viser tre web-servere, men man kan fint ha flere eller f?rre enn dette - ogs? kun én. Hvis det er viktig at en klient alltid havner p? samme web-server s? er det ogs? mulig ? f? til, selv om det er greit ? ikke gj?re seg avhengig av dette dersom det kan unng?s. Lastbalansererne vil hele tiden gj?re et kall mot en gitt adresse p? web-serverne, ofte kalt helsesjekk. P? denne m?ten forsikrer den seg om at hver enkelt web-server fungerer som den skal og er klar til ? ta imot foresp?rsler. Dette kan man ogs? bruke til ? melde en web-server ut av aktiv last uten ? m?tte involvere www-drift, f.eks. ved planlagt vedlikehold. Standardsjekken vi pleier ? sette opp er mot pathen "/check.txt", hvor svaret m? inneholde strengen "all ok", men om man har behov for en annen helsesjekk enn dette s? kan dette konfigureres. En god helsesjekk skal helst kunne si noe om at selve tjenesten fungerer slik den skal, og om det er flere komponenter involvert i tjenesten, f.eks. en webserver og en applikasjonsserver, b?r helsesjekken gjerne besvares fra applikasjonsserveren. Den b?r dog ikke v?re krevende ? svare p?, da lastbalansererne gj?r foresp?rsler hit flere ganger i minuttet.
For innkommende trafikk, vil alts? foresp?rsler rutes gjennom lastbalanserer som en revers proxy, istedenfor ? komme direkte fra Internet. Dette gj?r det mulig ? plassere webservere p? et mer lukket (og dermed bedre sikret) nett, som kun kan n?es internt ved UiO. Disse kaller vi gjerne kategori 3- eller 4-nett, som samsvarer med kun tilgjengelig fra hhv. UiO-nett eller UiO server-nett. Har man behov for tilgang til ressurser p? Internet fra servere p? slike lukkede nett, vil man benytte en proxy ogs? for dette form?let - en forward proxy. I denne vil det ?pnes opp kun for de adressene man har behov for ? n?, mens alt annet er sperret ned. Med andre ord vil man benytte proxying for trafikk b?de til og fra server, men to forskjellige l?sninger for hhv. inn og ut. Denne siden omhandler alts? trafikk fra Internet til webserver (via lastbalanserer som en revers proxy), og det vil komme dokumentasjon for trafikk som trenger ? g? motsatt vei (utg?ende proxy) som vil linkes til herfra.
En annen fordel er at lastbalansererne vil gj?re TLS-terminering av forbindelsen mellom klienten. Dette vil alts? si at lastbalansererne tar seg av kryptering av all trafikk mellom klient og UiO, slik at ingen trafikk sendes ukryptert over ?pent Internet, og er tilstrekkelig sikret. Dersom en klient gj?r en ukryptert foresp?rsel mot HTTP, vil denne kun motta en videresending til samme adresse med HTTPS istedet. Ved ? terminere TLS p? lastbalansererne s?rger vi for at alle tjenester bak lastbalansering har gyldige sertifikater som er korrekt satt opp, og benytter moderne og standardiserte TLS-parametre som f?lger gjeldende "best practices".
I noen tilfeller kan det v?re behov for ? kryptere trafikken ogs? mellom lastbalansererne og web-serverne, alts? internt i UiOs nett. Hvorvidt dette er n?dvendig er en vurdering som m? gj?res av tjenesteeier. Dette anbefales s?rlig ved h?ndtering av sensitive data, eksempelvis r?de og sorte data, eller hvis tjenesten ellers kan oppfattes ? v?re av en sensitiv art. N?r trafikk skal krypteres ogs? "p? innsiden", m? webserverne ogs? presentere gyldige sertifikat, og dette m? man vedlikeholde og fornye selv. Disse sertifikatene er alts? separate fra sertifikatene som brukere vil se "p? utsiden". Disse h?ndteres som del av lastbalanseringstjenesten.
Siden lastbalansererne kan inspisere headere, s?rger vi ogs? for ? ta en del grep p? denne fronten. Dette inkluderer b?de ? s?rge for at moderne best practices f?lges, ? begrense un?dvendig tilgang og informasjonslekkasje, ? optimalisere caching, og ? gj?re en rekke sikkerhetstiltak knyttet til f.eks. cookies. Vi ?nsker ikke ? publisere detaljer rundt hvilke tiltak vi benytter ?pent p? Internet, men svarer gjerne p? sp?rsm?l p? www-drift@usit.uio.no.
V?re lastbalanserere er satt opp med b?de IPv4 og IPv6 (s?kalt "dual-stack"), og som f?lge av dette blir alle tjenester bak lastbalanserer tilgjengelig ogs? over IPv6. Dette har siden 2023 v?rt et krav for offentlig sektor for alle eksternt publiserte tjenester, gjennom Forskrift om IT-standarder i offentlig forvaltning. Ved ? plassere en webtjeneste bak lastbalanserer s?rger man dermed for at den etterlever dette kravet, uavhengig av om webserveren i seg selv er satt opp med IPv6. N?r webserver er satt opp med IPv6 vil trafikk fra lastbalanserer til webserver g? over IPv6, men hvis ikke vil den g? over IPv4. Selve tjenesten vil uansett v?re tilgjengelig for brukere over b?de IPv6 og IPv4 - helt uavhengig av oppsett p? webserver.
Avslutningsvis er det verdt ? presisere igjen at selv om vi konsekvent omtaler denne l?sningen som lastbalansering, s? er den like hensiktsmessig ogs? der det ikke er behov for ? balansere trafikk mellom flere webservere. Med andre ord, selv om en tjeneste kun betjenes av én enkelt webserver, vil man alts? likevel f? alle fordelene lastbalanseringstjenesten gir - utenom redundans og balansering av innkommende trafikk.
Har du sp?rsm?l som ikke ble besvart av denne guiden, er du hjertelig velkommen til ? ta kontakt p? www-drift@usit.uio.no.