Migrasjonsplan for nytt produksjonsmiljø

Cerebrum skal over på nytt produksjonmiljø med RHEL 7 og Python 2.7. Dette dokumentet beskriver en test- og migrasjonsplan for overgang til det nye miljøet.

1   Forbededelser

1.1   Nytt miljø

Cerebrum-drift har ansvar for å bestille og sette opp nytt produksjonmiljø. Dette er dokumentert på drift sitt web-område.

1.2   Migrasjon av kodebase

I forbindelse med overgang til Python 2.7, er det blitt avdekket en del ukompatibel eller utdatert kode som må fikses, i tillegg til en del endringer som er ønsket ved overgang til nytt produksjonsmiljø. Disse endringene er Cerebrum-utvikling sitt ansvar.

Hittil har følgende blitt identifisert:

CRB-728
Advarsler fra Python - bedre ivaretaelse (og oppfølging) av warnings
CRB-727
cElementTree - Rydde opp i bruk av ElementTree og lxml
CRB-725
Psycopg2-modul – Fikse patching av PsycoPG2 som ikke er støttet i nyere versjoner
CRB-722
Fjern json frå extlib – Overgang til Pythons innebygde JSON-modul
CRB-721
Erstatt popen2 med subprocess – popen2 er foreldet
CRB-720
object __init__ – Kall til object.__init__ med argumenter er frarådet
CRB-719
String exceptions – raise "string" er ikke lenger støttet
CRB-723
Fjern argparse frå extlib – argparse er en del av standardbiblioteket i PY27
CRB-726
M2Crypto – Vedlikehold av biblioteket M2Crypto er ikke ønsket
lxml-modul
Generell opprydding i bruk av xml/lxml vurderes

Det har blitt opprettet en egen branch for utvikling av disse endringene, origin/python-27-pseudo-master. Før migrasjon startes, bør endringer fra origin/master taes inn i denne branchen.

2   Sleggetest

Så snart et produksjonsmiljø er oppe å kjøre, vil vi ha mulighet for å sette i gang en «sleggetest». Dette er en test hvor vi kjører gjennom de vanligste batch-jobbene i Cerebrum, og sammenligner resultat.

Fremgangsmåten vil være relativ lik en lignende «sleggetest» som ble utført i forbindelse med overgang til GIT i første kvartal 2014. Dokumenter som beskriver fremgangsmåte og uførelse av «sleggetest» i forbindelse med denne migrasjonen ligger på UAIT sine aktivitets-sider.

2.1   Overordnet test

I praksis vil man utføre følgende:

  1. Sette opp miljø * Installere siste versjon av Cerebrum (branch origin/python-27-pseudo-master)
  2. Ta kopi av produksjonsdatabase * Konfigurere Cerebrum-installasjonen til å benytte database-kopi.
  3. Kjøre alle importer * Kun importer som ikke tilbakefører data til kildesystem. * Ingen jobber som sender ut e-post eller SMS.
  4. Kjøre alle eksporter * Ikke eksporter som kommuniserer direkte med målsystem
  5. Sammenligne eksporter med eksporter fra gammelt produksjonsmiljø
  6. Starte tjenester, verifisere at disse fungerer som forventet

3   Akseptansetest

Før overgang til nytt produksjonsmiljø, bør endringer i kode og miljø testes over en lengre periode for å luke ut eventuelle feil som har blitt oversett.

Dette kan gjøres ved å sette opp nytt produksjonsmiljø så langt som mulig, og la dette kjøre en periode, mens det holdes øye med logger.

Dette vil innebære:

  1. Sette opp miljø * Installere siste versjon av Cerebrum (branch origin/python-27-pseudo-master)
  2. Ta kopi av produksjonsdatabase * Konfigurere Cerebrum-installasjonen til å benytte database-kopi.
  3. Sette opp job_runner/scheduled_jobs til å kun kjøre jobber som ikke kommuniserer direkte med andre system. * Ingen importer som tilbakefører data til kildesystem * Ingen jobber som sender ut e-post eller SMS * Ingen jobber som gjør endringer i andre system (ad-sync i dry-run).

Arbeidet som gjøres med å sette opp akseptanse-test vil også kunne benyttes videre i et evt. oppsett av staging-miljø for Cerebrum.

4   Forslag

Ved overgang til nytt produksjonsmiljø, vil vi i praksis ha to miljøer kjørende parallellt. Inntil den endelige overgangen til nytt miljø, vil det gamle miljøet være gjeldene Cerebrum-miljø. Dette betyr:

  • Inntil vi migrerer til nytt produksjonsmiljø, vil det nye produksjonsmiljøet være å anse som et testmiljø.
  • Det nye testmiljøet vil kunne kjøre alle jobber som ikke påvirker andre system.

Videre vil «sleggetest», akseptansetest og en implisitt «smoke test» ha nok til felles til at disse kan utføres samtidig.

Dette kan utnyttes, og det foreslåes at vi setter opp et miljø med:

  • Modifisert cereconf (ugyldig mail-tjener og sms-gateway)
  • Begrenset passordtilgang (ingen passord til FS-database)
  • Begrenset innloggingsmulighet (ingen ssh-nøkler til andre system)
  • Modifisert scheduled_jobs (ingen jobber som endrer andre system)

Vi vil da kunne starte job-runner og kjøre alle gjenværende jobber parallellt med eksisterende produksjonsmiljø. Vi slipper da å vente på jobber, eller kjøre jobber manuelt for å skaffe testgrunnlag. Vi kan i stedet sammenligne eksport-filer fortløpende.

4.1   Kontroll av resultat

Ved differanse i eksport-filer, vil vi måtte undersøke årsak. Dersom jobber kjører med samme data-grunnlag skal ikke eksporter ha differanse.

4.2   Konfigurasjon

For å hindre utilsiktet utsending av e-post eller SMS, samt annen utilsiktet kommunikasjon med systemer, bør nytt produksjonsmiljø settes opp uten nødvendig informasjon til å utføre disse oppgavene.

4.2.1   SMS-utsending

Den enkleste måten å unngy utilsiktet utsending av SMS, vil være å sette en ugyldig SMS-gateway (SMS_URL) i cereconf.

SMS vil kunne sendes ut av bl.a. bofhd, send_welcome_sms, mm.

4.2.2   E-postutsending

Mange jobber forsøker å sende e-post. For å unngå utilsiktet utsending av e-post, kan man sette ugyldig SMTP_HOST i cereconf.

4.2.3   FTP/SSH/WinRM

For å unngå utilsiktet oppkobling mot eksterne system, bør det opprettes et nye nøkler for SSH-innlogging i de nye produksjonsmiljøene. Nøkkelen bør kun legges inn på maskiner som vi snakke med i test.

Tilsvarende bør det ikke finnes brukernavn/passord for innlogging med WinRM mot AD-kontrollere som ikke skal benyttes under testing.

4.2.4   scheduled_jobs

For samtlige instanser, kan oversikten over jobber som ble benyttet i «sleggetest» våren 2014 benyttes. Det må sees over om nye jobber har blitt lagt til, eller gamle jobber har blitt tatt bort.

Oppdatert oversikt over jobber finnes for:

5   Migrasjon

Migrasjon vil kunne utføres når vi er sikre på at nytt produksjonsmiljø fungerer som forventet.

Overgangen vil medføre:

For UiO:

  1. Backup av produksjonsdatabase.
  2. Legge ut driftsmelding.
  3. Sette opp full konfigurasjon av nytt produksjonsmiljø.
  4. Stopp job-runner.
  5. Oppdater DNS-pekere til nytt miljø.
  6. Stopp bofhd.
  7. Kjør DNS-eksport.
  8. Stanse Service Guard-pakke.
  9. Oppdatere driftsmelding når DNS er oppdatert og nytt miljø er live.

For andre instanser:

  1. Backup av produksjonsdatabase.
  2. Legge ut driftsmelding.
  3. Sette opp full konfigurasjon av nytt produksjonsmiljø.
  4. Stanse Service Guard-pakke.
  5. Oppdater DNS-pekere til nytt miljø.
  6. Oppdatere driftsmelding når DNS er oppdatert og nytt miljø er live.

5.1   Instanser

Det foreslås at vi flytter en og en instans over i nytt produksjonsmiljø. Rekkefølgen er ikke fastslått, med det foreslås å starte med WebID, etterfulgt av UiO.

WebID er et godt startpunkt, da eventuelle feil ikke vil ha innvirkning på samarbeidspartnere, samt minst innvirkning av instansene på UiO.

UiO er en av de mer kompliserte instansene, og vil derfor kunne bidra til å oppdage eventuelle feil før vi fortsetter med instanser som driftes for samarbeidspartnere.

De resterende instansene vil kunne migreres fortløpende etter at eventuelle feil som blir oppdaget i løpet av testing og migrasjon har blitt rettet.

5.2   Tidsplan

For hver instans som migreres, bør testfasen startes minst tre dager før migrasjonen til nytt produksjonsmiljø utføres. Dette gir nok tid til å utføre en sleggetest av de største eksporter og importer, samt akseptansetest av den kjørende løsningen.

5.3   Estimert tidsbruk

Følgende tid er estimert brukt av èn drifter per instans. UAIT bør stille (minst) en utvikler per instans til disposisjon for å fikse eventuelle feil/utrede differanse på eksporter.

Overgang til nytt miljø for en instans:

>>> tpe = lambda a, m, b: (a + 4*m + b)/6.0
>>> tpe(3.875, 7.75, 15.5)
8.395833333333334

Sjekk for differanse i *LDIF etter SAP- og FS-import, samt differanse av DNS-eksport:

>>> tpe(2, 3, 5)
3.1666666666666665
>>>

I tillegg til estimater ovenfor kommer lesing av logg meldinger fra akseptansetesten. Dette er en oppgave som går løpende, og kan fortrinnsmessig bli utført av både drift og utvikling. 1 time per dag av akseptansetesten bør være nok til å utføre dette.

Av fhl
Publisert 19. mars 2015 11:20 - Sist endret 13. jan. 2023 15:24