مراجعة الحادثة: بوابة سيئة
تقرير حادثة لانقطاع خدمة Logto في 2024-01-11 بسبب فشل تجديد النطاق.
تقرير حادثة لانقطاع خدمة Logto في 2024-01-11 بسبب فشل تجديد النطاق.
في 2024-01-11، تعرضت خدمات Logto لانقطاع الخدمة مع العديد من أخطاء بوابة 502 سيئة.
logto.app وفشل تجديد النطاق.logto.app قد يكون منتهي الصلاحية. قمنا بفحص المسجل ووجدنا أنه لم يتم تجديده بنجاح وكان النطاق منتهي الصلاحية.عادة ما يتم تجديد نطاقاتنا تلقائيًا من خلال المسجل الخاص بنا. ومع ذلك، في هذه الحالة، فشلت عملية التجديد بسبب احتمالية وجود خلل في الإعدادات. ونتيجة لذلك، انتهت صلاحية نطاق logto.app وتم تحديث سجلات DNS للإشارة إلى صفحة الوقوف الخاصة بالمسجل.
في الوقت الحالي، تظل خدمة التوثيق قيد التشغيل، لكن معظم الطلبات لا يمكنها الوصول إليها. الاستثناء هو المستأجر الإداري لـ Logto، الذي يرتبط بنطاق auth.logto.io ويظل غير متأثر بانتهاء الصلاحية.
بالإضافة إلى خدمة التوثيق، لدينا أيضًا خدمة السحابة التي تنظم مستأجري Logto وتخدم واجهة Logto Cloud Console (تطبيق أمامي).
عندما يقوم المستخدم بتشغيل Cloud Console، فإن التطبيق لا يقوم بالدعوة مباشرة إلى خدمة التوثيق؛ بل يقوم بالاتصال بخدمة السحابة لجميع عمليات الإدارة.
لتتماشى مع API إدارة Logto، صممنا نقطة نهاية "وكيل API الإدارة" لتولي الطلبات إلى خدمة التوثيق. الموجة الكاملة تبدو هكذا:
بما أن نطاق *.logto.app يعاني من مشكلة عدم تطابق الشهادات، فإن خدمة السحابة (Node.js) ترفض الطلب وتُلقي خطأ.
عادةً ما تُلتقط أخطاء الطلبات لمنع الخدمة بأكملها من التعطل. ومع ذلك، نظرًا لأن الخطأ تم نشره من وحدة الوكيل، فإن المنطق الحالي لمعالجة الأخطاء لم يكن قادرًا على التقاطه، مما أدى إلى تعطل الخدمة.
على الرغم من أن كل خدمة Logto لديها على الأقل ثلاث نسخ، إلا أن جميع النسخ تعطل بسهولة نظرًا لحدوث الخطأ في كل طلب تقريبًا من Cloud Console. يستغرق الأمر وقتًا حتى تدخل آلية الاسترداد التلقائي حيز التنفيذ، مما يتسبب في عدم توفر الخدمة لفترة.
هذا هو السبب في أن المستخدمين يرون أخطاء بوابة سيئة 502 (جميع النسخ تعطل). بمجرد استعادة خدمة السحابة، تأتي الطلبات الجديدة وطلبات Cloud Console المحاولة مرة أخرى، وتستمر دورة التعطل.
عندما تكون خدمة السحابة معطلة، يؤثر ذلك أيضًا على خدمة التوثيق لنقاط نهاية معينة، معظمها /api/.well-known/sign-in-exp. تُستخدم نقطة النهاية هذه لجلب تكوين تجربة تسجيل الدخول الذي يتضمن معلومات الموصل التي تحتاج إلى استردادها من خدمة السحابة.
logto.app.