Jälkiraportti: Huono yhdyskäytävä
Tapahtumaraportti Logto-palvelun käyttökatkosta 2024-01-11 johtuen verkkotunnuksen uusimisen epäonnistumisesta.
Yhteenveto
2024-01-11 Logto-palvelut kokivat käyttökatkoksen, jossa esiintyi paljon 502 Bad Gateway -virheitä.
- Aloitusaika: Noin 2024-01-11 15:28 UTC
- Ratkaisuaika: Noin 2024-01-12 00:49 UTC
- Kesto: Noin 9 tuntia
- Vaikuttavat palvelut: Logto-todennuspalvelu, Logto Cloud -palvelu
- Vaikutustaso: Kriittinen
- Perimmäinen syy:
logto.app
-verkkotunnus vanheni, ja uusiminen epäonnistui.
Aikajana
- 2024-01-11 15:28 UTC Käyttäjä raportoi 502 Bad Gateway -virheestä, kun hän yritti käyttää Logto-todennuspalvelua.
- 2024-01-11 15:42 UTC Useammat käyttäjät raportoivat samasta asiasta.
- 2024-01-11 15:50 UTC Tiimin jäsenet alkavat tutkia asiaa ja soittavat toisille tiimin jäsenille. Koska joillakin tiimin jäsenistä oli myöhäinen ilta, normaalit puhelut eivät olleet tarpeeksi voimakkaita herättämään heitä.
- 2024-01-12 23:54 UTC Havaitsemme, että pilvipalvelu lähettää pyyntöjä todennuspalveluun, mutta pyyntö epäonnistui ERR_TLS_CERT_ALTNAME_INVALID-virheen vuoksi.
- 2024-01-12 00:36 UTC Tyhjennämme DNS-välimuistin nähdäksemme, auttaako se. Se ei auttanut.
- 2024-01-12 00:38 UTC Uudelleenjulkaisemme TLS-sertifikaatteja nähdäksemme, auttaako se. Se ei auttanut.
- 2024-01-12 00:45 UTC Huomasimme, että
logto.app
-verkkotunnus saattaa olla vanhentunut. Tarkistimme verkkotunnuksen rekisteröijän ja huomasimme, että verkkotunnus ei uusiutunut onnistuneesti ja oli vanhentunut. - 2024-01-12 00:49 UTC Verkkotunnuksen uusiminen saatiin päätökseen. Palvelut palaavat vähitellen normaaliksi.
Tapahtuman analyysi
Mitä tapahtui?
Verkkotunnuksemme uusitaan yleensä automaattisesti verkkotunnuksen rekisteröijän kautta. Tässä tapauksessa uusimisprosessi epäonnistui mahdollisen väärän konfiguraation vuoksi. Tämän seurauksena logto.app
-verkkotunnus vanheni, ja DNS-tietueet päivitettiin osoittamaan rekisteröijän pysäköintisivulle.
Tällä hetkellä todennuspalvelu pysyy toiminnassa, mutta suurin osa pyynnöistä ei pääse siihen. Poikkeuksena on Logto:n ylläpidon vuokralaisten, jotka on sidottu auth.logto.io
-verkkotunnukseen ja jotka ovat vanhenemisen ulkopuolella.
Todennuspalvelun lisäksi meillä on myös pilvipalvelu, joka ohjaa Logto-vuokralaisia ja palvelee Logto-pilvipalvelun konsolia (frontend-sovellus).
Kun käyttäjä käyttää Cloud Consolea, sovellus ei kutsu suoraan todennuspalvelua; sen sijaan se kutsuu Cloud-palvelua kaikissa hallintatoiminnoissaan.
Logto:n Management API:n mukaisesti suunnittelimme "Hallinnan API:n välityspäätepisteen" delegoimaan pyynnöt todennuspalvelulle. Koko virtaus näyttää tältä:
Koska *.logto.app
-verkkotunnuksella on serfitikaattivirhe, Cloud-palvelu (Node.js) hylkää pyynnön ja heittää virheen.
Normaalisti pyyntövirheet käsitellään, jotta koko palvelu ei kaadu. Koska virhe kuitenkin välitettiin välitysmuodulista, nykyinen virheenkäsittelylogiikka ei pystynyt nappaamaan sitä, mikä johti palvelun kaatumiseen.
Vaikka jokaisella Logto-palvelulla on vähintään kolme replikaa, kaikki replikat kaatuivat helposti, koska virhe tapahtui melkein jokaisessa Cloud Consolen pyynnössä. Automaattisen palautumismekanismin käynnistymiseen kuluu aikaa, mikä aiheuttaa palvelun tilapäistilanteen.
Tästä syystä käyttäjät näkevät 502 Bad Gateway -virheitä (kaikki replikat kaatuivat). Kun Cloud-palvelu on ylhäällä, uudet ja uudelleen yrittävät Cloud Consolen pyynnöt tulevat, ja kaatumissilmukka jatkuu.
Kun Cloud-palvelu on poissa käytöstä, se vaikuttaa myös todennuspalveluun tietyille päätepisteille, enimmäkseen /api/.well-known/sign-in-exp
. Tätä päätepistettä käytetään hakemaan kirjautumiskokemuksen kokoonpanoa, johon sisältyy liittimen tiedot, jotka on noudettava Cloud-palvelusta.
Ratkaisu
- Uusi verkkotunnus manuaalisesti.
Opitut asiat
- Aseta aina verkkotunnuksen vanhenemiselle valvonta tai osta pidemmäksi ajaksi.
- Ota huomioon, että aikavyöhykkeiden erot voivat aiheuttaa viivettä tapausten käsittelyssä.
- Varmista, että valvonta kattaa kaikki verkkotunnukset.
- Ole varovainen vuorovaikutuksessa heitettävien modulien kanssa, varmistaen, että virheet voidaan napata ja käsitellä oikein.
Korjaavat ja ehkäisevät toimenpiteet
- ✅ Lisää kuukausittainen valvonta verkkotunnuksen vanhenemista varten, onko automaattinen uusiminen käytössä.
- ✅ Lisää valvonta
logto.app
-sovellukselle. - ✅ Päivitä pilvipalvelun virheenkäsittelylogiikka nappamaan ja käsittelemään välitysvirheitä oikein.
- ✅ Ota käyttöön vahvempia hälytyksiä, jotka voivat herättää tiimin tapausten vuoksi ennen kuin sinulla on kaikille aikavyöhykkeille kattava SRE-tiimi.