Tilføyelse 19.08.2013 kl 1106: SOLR ute av drift ca en times tid, oppe igjen ca 1130.
TILFØYELSE 15.08.2013 kl 0942: Alt virker igjen nå!
Kortversjonen er at vi har gjort noen brutale erfaringer med hvordan man IKKE skal oppgradere SOLR søkeindeks hvis man skal unngå driftsavbrudd — og ikke minst betydningen av presis dokumentasjon på slike rutiner. Vi har nettopp rullet ut en ny versjon av vegkart og NVDB api’et. Disse tjenestene kjører på flere servere (noder) med lastbalansering. Alt er tilrettelagt for at vi kan oppgradere en node av gangen og dermed ha en ny versjon i gang uten at brukerne merker noe som helst.
Ved denne oppgraderingen har det vært flere ting som har gått galt:
- Oppgradering av SOLR versjon ble gjort på alle noder samtidig (ikke en av gangen).
- Vi opprettet nye datastore, men uten å sikre oss at det var 100% samsvar mellom konfigurasjonsfil for søkeindeks og ny datastore. Når (noen av) søkefunksjonene ikke finner et gyldig datastore så returneres 0 treff.
- Indeksering av NVDB fra scratch er tidkrevende, det tar opp mot halvannet døgn. (Men dette pleier vi gjøre uten at brukerne merker noe annet enn at dataene er litt ferskere og oppdatert — det er en av grunnene til å ha drift på flere noder samtidig.). Men fordi ny SOLR versjon ble rullet ut på samtlige noder samtidig var vi nødt til å kjøre prosessen fra scratch — på samtlige noder, samtidig. Kombinert med de andre problemene (og litt feilretting og sånn) blir dette fort vekk et driftsavbrudd på flere døgn.
En annen måte å si det på er at vi har brukt beta-perioden aktivt for å perfeksjonere driftsrutiner… Episoder som denne er svært lærerike, og både dokumentasjon og rutiner er nå svært mye mer skuddsikre enn de var på mandag.
Det ironiske er at det er nettopp denne versjonen av api’et som skal sikre at du har ferskest mulige data til enhver tid! Med inkrementell (kontinuerlig) oppdatering av søkeindeksen går det ikke mange sekundene fra oppdatering i NVDB orginaldatabasen til dataene er indeksert og tilgjengelig i nvdb api’et. (Eksakt hvor mange sekunder avhenger av hvor store datamengder vi snakker om, kanskje 10-30 sekunder i de fleste tilfellene og opp mot noen minutter hvis det må re-indekseres mange objekter samtidig).