การวิเคราะห์หลังเหตุการณ์: เกตเวย์ไม่ดี
รายงานเหตุการณ์สำหรับการหยุดชะงักของบริการ Logto ในวันที่ 2024-01-11 เนื่องจากความล้มเหลวในการต่ออายุโดเมน
รายงานเหตุการณ์สำหรับการหยุดชะงักของบริการ Logto ในวันที่ 2024-01-11 เนื่องจากความล้มเหลวในการต่ออายุโดเมน
ในวันที่ 2024-01-11 บริการของ Logto ประสบปัญหาการหยุดชะงักของบริการโดยมีข้อผิดพลาด 502 Bad Gateway จำนวนมาก
logto.app หมดอายุและการต่ออายุไม่สมบูรณ์logto.app อาจหมดอายุ เราตรวจสอบผู้รับจดทะเบียนโดเมนและพบว่ามันต่ออายุไม่สำเร็จและโดเมนหมดอายุโดเมนของเรามักจะต่ออายุอัตโนมัติผ่านผู้รับจดทะเบียนโดเมนของเรา อย่างไรก็ตาม ในกรณีนี้ กระบวนการต่ออายุล้มเหลวเนื่องจากการตั้งค่าที่อาจผิดพลาด ส่งผลให้โดเมน logto.app หมดอายุ และบันทึก DNS ถูกอัปเดตให้ชี้ไปที่หน้าจอดผู้รับจดทะเบียน
ขณะนี้ บริการยืนยันตัวยังคงทำงานอยู่ แต่คำขอส่วนใหญ่ไม่สามารถเข้าถึงได้ ข้อยกเว้นคือ Logto admin tenant ที่ผูกกับโดเมน auth.logto.io และไม่ได้รับผลกระทบจากการหมดอายุ
นอกจากบริการยืนยันตัวตนแล้ว เรายังมีบริการคลาวด์ที่จัดการกับ Logto tenants และให้บริการ Logto Cloud Console (แอปหน้าฟร้อนต์)
เมื่อผู้ใช้ใช้งาน Cloud Console แอปจะไม่เรียกใช้บริการยืนยันตัวตนโดยตรง แต่จะเรียกใช้บริการคลาวด์สำหรับการจัดการทั้งหมด
เพื่อให้สอดคล้องกับ Logto Management API เราได้ออกแบบปลายทาง "Management API proxy" เพื่อส่งต่อคำขอไปยังบริการยืนยันตัวตน กระบวนการทั้งหมดมีลักษณะดังนี้:
เนื่องจากโดเมน *.logto.app มีปัญหาความไม่ตรงกันของใบรับรอง บริการคลาวด์ (Node.js) ปฏิเสธคำร้องและโยนข้อผิดพลาดออกมา
ปกติแล้วข้อผิดพลาดในการขอจะถูกจับเพื่อป้องกันไม่ให้บริการทั้งระบบล่ม อย่างไรก็ตาม เนื่องจากข้อผิดพลาดถูกแพร่กระจายมาจากโมดูลพร็อกซี ท่ามกลางตรรกะการจัดการข้อผิดพลาดที่มีอยู่จึงไม่สามารถจับได้ ทำให้บริการล่ม
แม้ว่าแต่ละบริการของ Logto จะมีอย่างน้อยสามเครื่องสำรอง ทุกเครื่องเกิดการล่มได้ง่ายจากข้อผิดพลาดที่เกิดขึ้นในแทบทุกคำขอจาก Cloud Console ใช้เวลาให้กลไกการกู้คืนอัตโนมัติเริ่มทำงาน ทำให้บริการไม่สามารถใช้งานได้สักระยะ
นี่คือเหตุผลที่ผู้ใช้เห็น 502 Bad Gateway เมื่อ Cloud service กลับมาใช้งานได้ คำขอใหม่และคำขอ retry ของ Cloud Console จะไหลเข้ามา และทำให้วงจรการล่มดำเนินต่อไป
เมื่อบริการคลาวด์ดาวน์ มันจะส่งผลกระทบต่อบริการยืนยันตัวตนสำหรับปลายทางบางอย่าง ส่วนมากคือ /api/.well-known/sign-in-exp ซึ่งปลายทางนี้ใช้ดึงการกำหนดค่า sign-in experience ซึ่งรวมถึงข้อมูลตัวเชื่อมต่อที่ต้องดึงจากบริการคลาวด์
logto.app