ScaleWP:n käyttökatko 29.7.-30.7.2024
Resolved
Jul 30 at 04:07am EEST
Post mortem
Mikronin automatiikka huomasi scalewp.mikroni.fi-demon olevan alhaalla maanantain ja tiistain välisenä yönä 30.7. klo. 03:36. Koska ScaleWP on harrastusprojekti, ei sen seurantaan oltu aktivoitu ilmoituksia. Ylläpitäjä kuitenkin sattumalta osui hallintapaneeliin klo. 03:44, sillä hän halusi testata palvelun post mortem-toiminnallisuutta, mutta yllätyksekseen huomasi ilmoituksen alhaalla olevasta sivustosta. Innoissaan päästäkseen testaamaan post mortem -toiminnallisuutta käytännössä, ylläpitäjä aloitti ongelman tutkimisen välittömästi.
Katkon tiedot
Comet-välityspalvelin ei ollut saavutettavissa. Palvelu oli saatavilla koko katkon ajan toisen välityspalvelimet (orbit) kautta. Kuitenkin mikäli ns. "DNS round robin"-järjestelmän takia käyttäjälle tarjoiltiin comet-palvelimen IP-osoitteen, ei verkkosivustoon voinut yhdistää. Round robin-järjestelmän luoteen vuoksi noin joka toiselle kävijälle sivusto on ollut alhaalla.
Käyttökatko alkoi arviolta klo. 17:41 ja päättyi seuraavana päivänä yöllä klo. 04:07. Täten katkon pituudeksi tulee noin 10,5 tuntia. Mikäli tämä olisi kuukauden ainut käyttökatkos, olisi kuukauden saavutettavuus 98,5%.
Katkon syy
Katkoksen syyksi paljastui epäonnistunut päivityksen julkaisu. Docker-konttien kuvia (image) säilytetään Githubin ylläpitämässä ghcr.io-palvelussa, mutta sinne luotu tunnistautumisavain oli vanhentunut edellisenä päivänä. Täten kun ongelman huomaamista edeltävänä päivänä 29.7. illalla klo. 17:41 Suomen aikaa suoritettiin palvelinympäristön "kova päivitys", jossa vain poistettiin vanhat kontit ja käynnistettiin uudet sen sijaan että olisi käytetty mahdollista "rolling updates"-toimintoa, jossa konttien rinnalle olisi luotu uusi päivitetty kontti ja sen käynnistyttyä olisi vanha kontti sammutettu. Klusteria hallitaan "orbit"-hallintapalvelimelta (manager node), joka onnistui käynnistämään välityspalvelimen kontin ongelmitta. Käytössä ollut kontin kuva oli kasattu kyseisellä palvelimella, joten sitä ei tarvinnut hakea ghcr.io-palvelusta. Ongelma koitui vasta "comet"-palvelimella, joka yritti hakea kontin kuvaa ghcr.io-palvelusta siinä onnistumatta vanhentuneen tunnistautumisavaimen takia.
ScaleWP-demossa on käytössä ns. "DNS round robin"-kuormanjakojärjestelmä, jossa nimipalvelimen avulla käyttäjälle tarjotaan samalla useampi kohdepalvelin, joista loppukäyttäjän tietokone useimmiten valitsee sattumanvaraisesti yhden. Mikäli käyttäjälle osui comet-palvelimen IP-osoite, ei palveluun yhdistäminen onnistunut. Seurantapalvelu todennäköisesti välimuistitti kohdepalvelimen osoitteen.
Mitä tästä opimme?
ScaleWP on vasta rakenteilla oleva järjestelmä, mutta jo tämä pieni katkos osoittaa että parannettavaa on paljon.
- Automaattisen seurannan on tulevaisuudessa tarkastettava kaikkien DNS-pyynnössä annettujen IP-osoitteiden tila. Mikäli nykyinen ratkaisu ei tähän taivu, on mietittävä toisen ratkaisun hankkimista tulevaisuudessa.
- Päivitykset tulee jatkossa pyrkiä toteuttamaan aina käyttäen rolling updates-taktiikkaa eikä raa'asti poistamalla vanha ympäristö ja käynnistämällä uusi.
- Docker-konttikuvat tulee jatkossa olla valmiiksi ladattuna ja saatavilla niillä palvelimilla, jotka niitä käyttävät
- Tilanteessa jossa yksi välityspalvelin ei syystä tai toisesta käynnisty tai pysy käynnissä, pitäisi pyynnöt sen IP-osoitteeseen pystyä ohjaamaan toiselle palvelimelle tarvittaessa.
- Tämä pitää toteuttaa joko ohjelmistotasolla tai siirtymällä käyttämään edustapalvelimien IP-osoitteina kiinteiden laitekohtaisten osoitteiden sijaan ns. "leijuvia IP-osoitteita", jotka voidaan virhetilanteessa pikaisesti siirtää toiselle palvelimelle.
- Tulevaisuudessa tärkeistä API-avaimista ja muista vastaavista tulee pitää kirjaa ja varmistaa että ne päivitetään niiden vanhetessa automaattisesti. Pitkät voimassaoloajat eivät myöskään ole tietoturvan kannalta oikea ratkaisu.
- Automaattista seurantaa palvelintasolla on lisättävä. Lokirivejä tuli yli 50 tuhatta kappaletta kontin kuvan haun epäonnistumisesta, joista ongelma oltaisiin voitu helposti huomata. Muitakin failover-keinoja on lisättävä palvelintasolle.
Affected services
Created
Jul 29 at 05:41pm EEST
Käyttökatko on alkanut.
Affected services