Hjalmar skal starte en container for å kjøre HAproxy lastbalansereren.
Containeren skal kjøre på en virtuell maskin i OpenStack som skal være tilgjengelig fra utsiden via en såkalt Floating IP.
Her er et utdrag fra haproxy.cfg
```
frontend web
mode http
bind *:80
default_backend webservers
listen stats
bind *:1936
stats enable
stats uri /
stats hide-version
stats auth someuser:password
backend webservers
mode http
balance
roundrobin
server server1 192.168.132.3:80
server server2 192.168.132.4:80
```
Han bruker følgende kommando (på én linje): `docker run -d -p 2080:80 -p 80:1936 -v ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg -- name=haproxy haproxy:latest`
Hvilken port må Hjalmar åpne i Security Groups i OpenStack, slik at andre skal kunne nå webserverne? 1
Hjalmine tester ut en versjon av bookface som en Docker container. Hun starter containeren slik:
```
docker run -P --name=bookface -d bookface:v1
```
Deretter kjører hun følgende for å se hvilket portnummer den fikk: `docker ps -a`
Den fikk port 49167.
Så tester hun bookface for å se om siden fungerer: ` curl localhost:49167`
Siden svarer, men hun ser umiddelbart at noe er feil i config.php, som betyr at hun må bygge en ny container.
Hun gjør følgende:
```
cd /home/ubuntu/bookface
nano config.php ( her endrer hun det som var feil )
docker build -t bookface:v2 .
docker run -P --name=bookface -d bookface:v2
```
Dessverre får hun feilmelding når hun kjører den siste kommandoen. Hva er galt? 2
I følgende oppgave, vises alle kommandoer som kjøres, men utskriften fra dem er skjult. Du kan
anta, at ingen andre kommandoer har blitt kjørt enn de som er vist.
Hjalmine har fire webservere, www1 til www4. Hun har satt opp DNS, slik at hun kan gjøre
følgende:
```
ubuntu@manager:~$ ssh ubuntu@www1
ubuntu@www1:~$ exit
ubuntu@manager:~$
```
Hun ønsker å automatisere installasjon av pakken "net-tools" på alle fire servere. For å slippe å
logge seg inn på hver av dem, vil hun automatisere dette fra manager. Hun prøver følgende:
```
ubuntu@manager:~$ ssh ubuntu@www1 apt-get -y install net-tools
```
Dette fungerer forsåvidt, men hun får feilmelding fordi man jo være root for å installere pakker. Hun
vet at til dette bruker man sudo. Hun kjører følgende:
```
ubuntu@manager:~$ sudo ssh ubuntu@www1 apt-get -y install net-tools
```
Nå får hun plutselig "Permission denied".
a) Forklar for Hjalmine hva som er feil.
b) Hva kan hun gjøre for å til det hun ønsker? 3
Hjalmar vil starte en Docker container som skal kjøre bookface siden. Han ønsker imidlertid å ha alle PHP-filene på utsiden av selve Docker imaget. PHP filene ligger nå i mappen /opt/bookface på serveren. Han har bygget imaget og er klar for å starte en container for å teste. Hvilken kommando er den riktige? 4
Det er tre databaseservere med IP addressene 192.168.130.11, 192.168.129.28 og 192.168.129.147 som sammen utgjør en cockroachDB klynge. For å overvåke databasen, har man laget et script, /home/ubuntu/checkdb.sh, som sjekker om cockroach prosessen kjører.
Scriptet skriver hhv. ut "<HOSTNAME> UP" og "<HOSTNAME> DOWN" dersom prosessen er der eller ikke. '<HOSTNAME>' vil da være byttet ut med navnet på serveren. Scriptet ligger foreløpig på manager. Det må kjøres på hver server for å fungere.
Skriv kommandoene som sender dette scriptet fra manager til samme sted på de tre serverne. 5
Det er tre databaseservere med IP addressene 192.168.130.11, 192.168.129.28 og 192.168.129.147 som sammen utgjør en cockroachDB klynge. For å overvåke databasen, har man laget et script, /home/ubuntu/checkdb.sh, som sjekker om cockroach prosessen kjører.
Scriptet skriver hhv. ut "<HOSTNAME> UP" og "<HOSTNAME> DOWN" dersom prosessen er der eller ikke. '<HOSTNAME>' vil da være byttet ut med navnet på serveren. Scriptet ligger foreløpig på manager. Det må kjøres på hver server for å fungere.
Vi skrev tidligere kommandoene som sender dette scriptet fra manager til samme sted på de tre serverne. Det er mulig å starte scriptet på en server fra manager slik:
ubuntu@manager:~$ ssh ubuntu@IP-TIL-SERVER /home/ubuntu/checkdb.sh
Det blir imidlertid litt slitsomt å skrive hele kommandoen, og samtidig sørge for at man har riktig IP adresse.
Forklar hvordan man kan bruke et alias til å forenkle jobben. Vis et eksempel. 6
Det er tre databaseservere med IP addressene 192.168.130.11, 192.168.129.28 og 192.168.129.147 som sammen utgjør en cockroachDB klynge. For å overvåke databasen, har man laget et script, /home/ubuntu/checkdb.sh, som sjekker om cockroach prosessen kjører.
Scriptet skriver hhv. ut "<HOSTNAME> UP" og "<HOSTNAME> DOWN" dersom prosessen er der eller ikke. '<HOSTNAME>' vil da være byttet ut med navnet på serveren. Scriptet ligger foreløpig på manager. Det må kjøres på hver server for å fungere.
Vi skrev tidligere kommandoene som sender dette scriptet fra manager til samme sted på de tre serverne. Det er mulig å starte scriptet på en server fra manager slik:
ubuntu@manager:~$ ssh ubuntu@IP-TIL-SERVER /home/ubuntu/checkdb.sh
Det blir imidlertid litt slitsomt å skrive hele kommandoen, og samtidig sørge for at man har riktig IP adresse.
Vi lagde tidligere et alias til å forenkle jobben, men det er litt slitsomt å skrive flere kommandoer. Vis hvordan du kunne forenklet det ytterligere, slik at man kan se status på alle tre servere med én kommando. 7
Det er tre databaseservere med IP addressene 192.168.130.11, 192.168.129.28 og 192.168.129.147 som sammen utgjør en cockroachDB klynge. For å overvåke databasen, har man laget et script, /home/ubuntu/checkdb.sh, som sjekker om cockroach prosessen kjører.
Scriptet skriver hhv. ut "<HOSTNAME> UP" og "<HOSTNAME> DOWN" dersom prosessen er der eller ikke. '<HOSTNAME>' vil da være byttet ut med navnet på serveren. Scriptet ligger foreløpig på manager. Det må kjøres på hver server for å fungere.
Vi skrev tidligere kommandoene som sender dette scriptet fra manager til samme sted på de tre serverne. Det er mulig å starte scriptet på en server fra manager slik:
ubuntu@manager:~$ ssh ubuntu@IP-TIL-SERVER /home/ubuntu/checkdb.sh
Det blir imidlertid litt slitsomt å skrive hele kommandoen, og samtidig sørge for at man har riktig IP adresse.
Vi lagde tidligere et alias og en funksjon til å forenkle jobben til kun en kommando. Selv om det er nyttig å kunne sjekke status på alle tre servere med kun én kommando, er dette fortsatt en manuell handling man må gjøre når man selv aktivt lurer på om noe er galt. Det ville vært enda bedre å gjøre dette automatisk med jevne mellomrom. Skulle cockroach ikke kjøre på én eller flere av serverne, så blir det sendt melding et sted.
Foreslå hvordan dette kunne bli løst basert på det du allerede har vist. Du trenger ikke være helt nøyaktig, men det er fint om du kan "skissere" løsningen din rent teknisk. Du kan anta at det allerede finnes en kommando for å sende en melding. 8
Du har begynt å jobbe i Middelalderarkivet, en statsfinansiert organisasjon som skal offentliggjøre digitale versjoner av historiske dokumenter fra fortiden på Internett. Dette er altså scannede bilder av originalene fra forskjellige museer, arkiver og private samlinger i Norge. Tjenesten er ikke lansert enda, men mye av arbeidet er gjort og man nærmer seg den store dagen.
Dere er delt inn i to tekniske team. Det første teamet jobber med brukerflaten av tjenesten, og kalles frontend teamet. Det andre har ansvar for oppbevaringen av de digitale versjonene av dokumentene og dette teamet kalles backend teamet. Din rolle er å gi råd til begge team.
Backend teamet har satt opp en stor lagringsklynge ved hjelp av GlusterFS. Det er i alt fem servere som sammen leverer et stort GlusterFS volum til frontend teamet sine løsninger. Da man lagde volumet brukte man følgende kommando:
gluster volume create arkiv replica 3 gluster1:/brick gluster2:/brick gluster3:/brick gluster4:/brick
gluster5:/brick
gluster volume start arkiv
Forklar hva kommandoen over betyr med tanke på robusthet 9
Frontend teamet opplever tidvis treg tilgang til de scannede bildene. Hvilken parameter kan du justere i GlusterFS for å potensielt bedre lesehastigheten? 10
Backend teamet ønsker å overvåke tilstanden til GlusterFS-klyngen. Hvilket verktøy kan brukes for å overvåke GlusterFS-klyngen og dens ytelse? 11
Backend teamet ønsker å gjøre backup av dataene på GlusterFS-volumet. Hva er en anbefalt metode for å ta backup av et GlusterFS-volum? 12
Foreslå en løsning på at websiden automatisk tas ned dersom GlusterFS-volumet ikke er montert. 13
Nå er det én måned til den planlagte lanseringen av tjenesten. For å "beta-teste" tjenesten, har man valgt å invitere forskjellige historielag i landet til å teste ut tjenesten først. Det viste seg å være et klokt valg, fordi det gikk skikkelig galt. Det var stor interesse blandt de hundrevis av brukerne som gikk inn på siden og etter noen minutter begynte tjenesten å stoppe opp. Testen ble
avbrutt etter en time.
Årsaken til problemet var måten søkeresultatene ble presentert på. Websiden er laget slik, at for hvert bilde i resultatene genereres en mindre versjon av det, en såkalt "thumbnail", som vises på websiden. Tjenesten gikk rett og slett i bakken fordi den var så opptatt med å lage thumbnails hele tiden, for hvert bilde som skulle vises. Thumbnails blir heller ikke lagret, så samme Thumbnail blir
generert hver gang bildet skal vises som en del av et søkeresultat.
Man tenker seg to løsninger for å fikse dette: Enten så lager man thumbnails "utenfor" tjenesten, og lagerer den i samme volum, eller så bruker man memcache på en ny server til å mellomlagre thumbnails i en liten periode etter at de er generert.
Diskuter de to forslagene, hvor du kommer med ett argument for og ett mot hvert av forslagene. 14