Hopp til innhold

Fagstoff

Når servere arbeider sammen

Én enkelt fysisk server har ofte for lite systemressurser til å drifte større systemer med mange samtidige brukere alene. Å sette flere maskiner til å arbeide sammen er derfor i mange tilfeller nødvendig. Flere maskiner gir ikke bare økt kapasitet, men også bedre feiltoleranse.
Flere høye metallskap med perforerte dører foran og bak. I metallskapene er servere stablet oppover. En mann står bøyd og kobler kabler til en svitsj i et av skapene. Foto.
Åpne bilde i et nytt vindu

En enkelt datamaskin har en begrenset mengde systemressurser som prosessorkraft, arbeidsminne og lagringsplass. Internt i maskinen er det også begrenset hvor mye og hvor raskt informasjon kan flyttes mellom komponentene (I/O).

På serversida i større systemer vil derfor én enkelt servermaskin sjelden være nok for å dekke behovet. Bruk av én enkelt server gir også lav feiltoleranse for systemet, siden en enkeltstående feil som får den serveren til å stoppe, også vil resultere i at hele systemet stopper opp.

Å sette flere servere til å samarbeide er derfor vanlig innen serverdrift og gjøres på forskjellige måter avhengig av behovet som skal dekkes. En server som er del av et større system, kalles ofte for en servernode. Dette gjenspeiler at den er en liten del av det totale systemet.

Når maskiner arbeider sammen for å gjøre oppgaver, brukes som oftest én av de tre metodene

  • regneklynge (cluster)

  • grid

  • sky (cloud computing)

Disse er strukturert forskjellig fra hverandre og har forskjellige bruksområder.

Regneklynge (cluster)

Grid

Sky (cloud computing)

Kort beskrivelse

Servernodene har rask tilgang til felles ressurser, som lagring og noen ganger arbeidsminne. Dette gjør det mulig for dem å arbeide parallelt med den samme arbeidsoppgaven.

Arbeidsoppgavene som skal løses, deles opp i mindre selvstendige deloppgaver som fordeles ut til de tilgjengelige servernodene.

Servernodene blir tildelt virtuelle maskiner eller konteinere de skal kjøre fra et håndteringssystem (orchestration system).

Hvordan økt kapasitet oppnås

Servernodene fungerer som deler av en større sammenhengende maskin. Dette gjør dem spesielt nyttige for bearbeidelse av store og komplekse oppgaver som må løses i en lineær rekkefølge.

Hver deloppgave inneholder alle data som trengs for å bli løst. Så lenge det er ugjorte deloppgaver og håndteringssystemet som sender disse ut og tar imot endelig resultat har kapasitet, kan det bare legges til flere servernoder for mer kapasitet.

Ved behov kan virtuelle maskiner eller konteinere kopieres og kjøres på flere samtidige fysiske servere. Dette gir en kapasitet utover det som én enkelt fysisk server kan levere.

Plassering av utstyr

Behovet for rask kommunikasjon og lav forsinkelse mellom servernodene gjør at disse må være plassert nært hverandre.

Kommunikasjon over Internett er nødvendig, men utstyret kan være plassert hvor som helst.

Eksterne skyleverandører har ofte datasentre rundt omkring i verden og hver av disse har mange servernoder.

Krav til servernoder

Servernodene som er en del av en regneklynge, må ha lik maskinvare.

Maskinene som fungerer som servernoder, kan ha helt forskjellig maskinvare.

Bruk av lik maskinvare på kryss av mange servernoder er praktisk og vanlig, men ikke påkrevd for skyoppsett.

Eksempler på bruk

Forskningsprosjekter, værvarsel

Forskningsprosjekter, desentraliserte tjenester som torrent, cryptovaluta

Skytjenester som IaaS, Paas og SaaS

Arbeidsoppgaver for regneklynger og grid

Arbeidsoppgaver som kan deles opp

Noen arbeidsoppgaver kan deles i mindre deloppgaver. Et eksempel på dette kan være eksportering av en dataanimert film.

Hver bilderute (frame) i den dataanimerte filmen må rendres til stillbilde. Stillbildene blir så satt sammen til ei videofil. For en lengre animasjonsfilm kan dette raskt være over 200 000 bilderuter (frames).

Storyboard for animasjonsserien Masha og Mishka. Illustrasjon.
Åpne bilde i et nytt vindu

Med komplekse figurer, animasjon, lyssetting og bakgrunner ville rendringen ha tatt år å gjøre på én enkelt datamaskin.

Heldigvis er det mulig å dele opp animasjonsfilmen i scener eller mindre grupper av bilderuter (mellom keyframes). Disse kan eksporteres ut uavhengig fra hverandre. Kun til slutt må alle stillbildene settes sammen i riktig rekkefølge, og eksporteringen er fullført.

Andre eksempler på arbeidsoppgaver som passer til gridoppsett er store forskningsprosjekter som seti@home og folding@home.

Arbeidsoppgaver som ikke kan deles opp

Noen arbeidsoppgaver må gjøres lineært, altså i rekkefølge. Komplekse simuleringer er et typisk eksempel. Her tas data inn og blir bearbeidet gjennom flere simuleringssteg. Hver steg er ressurskrevende og krever resultatet fra det foregående steget som inndata for å fungere. Dette gjør at stegene ikke kan gjøres parallelt (samtidig) eller i en annen rekkefølge enn den som er planlagt.

Tre bokser merket med steg 1, 2 og 3. Fra boksen steg 1 går det ei pil til boksen steg 2, og fra boksen steg 2 går det ei pil til boksen steg 3. Illustrasjon.
Åpne bilde i et nytt vindu

Sky og egne serverklynger

Regneklynger og grid brukes for store spesialiserte arbeidsoppgaver, ofte relatert til forskning. For drifting av systemer ute i ordinære bedrifter er det vanlig å bruke sky og egne serverklynger. Servernodene der samarbeider om kjøre nødvendige virtuelle maskiner eller konteinere for å dekke behovet til systemet.

Et eksempel på dette kan være driften av ei større nettside. Hver deltjeneste som nettsida avhenger av (som backend, frontend, database, nettbutikk og så videre) er skilt ut i separate konteinere. Én eller flere kopier (instanser) av hver konteiner kjører så på én eller flere fysiske servere, avhengig av behovet akkurat da. Dette kan for eksempel være som i modellen under.

Modell av fire servere, én fungerer som konteinerkontroller, de tre andre er noder med forskjellige konteinere på de forskjellige maskinene. Noen konteinere finnes det flere kopier av. Illustrasjon.
Åpne bilde i et nytt vindu

Relatert innhold

Serverkonteinere (containers) er en virtualiseringstype som brukes mye både i driftsmiljøer og utvikling. Hver konteiner inneholder ofte en tjeneste.

CC BY-SASkrevet av Tron Bårdgård.
Sist faglig oppdatert 04.05.2021

Læringsressurser

Virtualisering av IT-ressurser