تأثير حلقة الشبكة على عمليات MongoDB وكيفية استجابتنا لها
أثناء حلقة الشبكة، نظرًا لعدم تمكن عمليات MongoDB الخاصة بنا من الاتصال بشكل طبيعي، قامت كل واحدة منها بوضع علامة على جميع العمليات المرتبطة بها على أنها غير متصلة بالإنترنت. وهذا يعني أن كل عملية mongoS قامت بوضع علامة على جميع عمليات mongoD المرتبطة بها على أنها غير متصلة بالإنترنت، كما قامت كل عملية mongoD بوضع علامة على أعضاء مجموعة النسخ المتماثلة ذات الصلة على أنهم غير متصلين. ومع ذلك، حتى بعد استعادة اتصال الشبكة بخوادمنا الفعلية بواسطة Rackspace، لم تقم عمليات mongoS أو mongoD بإعادة تأسيس جميع الاتصالات بالعمليات الأخرى التي تم وضع علامة عليها في وضع عدم الاتصال.
في هذه المرحلة، ومن أجل المساعدة في جهود الإصلاح التي يبذلها فريق مسؤول قاعدة بيانات Rackspace (DBA)، بدأت فرق Braze DevOps في تصحيح الأخطاء واختبار طرق استعادة هذا الاتصال بسرعة. توصل تحقيقنا إلى أن الخيار الوحيد المتاح هو إعادة تشغيل كل عملية من عمليات mongoD التي يبلغ عددها حوالي 16000 وما يزيد عن 6000 عملية mongoS في حاوياتها الافتراضية. نظرًا للحجم الهائل لهذا المشروع وحقيقة أن الأتمتة لم تكن موجودة لإعادة تشغيل العديد من الحاويات بسرعة، كتب مهندسو Rackspace تعليمات برمجية جديدة أثناء الحادث لإنشاء قدرة أتمتة سريعة.
لسوء الحظ، مع تكثيف عملية إعادة التشغيل، ظهرت مشكلة أخرى في نظام نظام أسماء النطاقات (DNS). عندما تصبح عمليات mongoS وmongoD متاحة عبر الإنترنت، فإنها تطلب معلومات من محللي DNS في عملية تُعرف باسم بحث DNS. مع عمليات البحث المستمرة لنظام أسماء النطاقات (DNS) المدفوعة بسرعة عمليات إعادة التشغيل، تعرضت خوادم DNS لحمل ثقيل، مما أدى إلى انتهاء مهلة الاتصال على طبقات mongoS أثناء إعادة اتصالها بعمليات mongoD. لاستيعاب هذا الحمل المتزايد، قام فريق Rackspace لدينا بزيادة سعة وحدة المعالجة المركزية لنظام أسماء النطاقات (DNS)، ولكنه اضطر بعد ذلك إلى إعادة تشغيل طبقة mongoS مرة ثانية من أجل إنشاء اتصالات سليمة من كل mongoS إلى عمليات mongoD المرتبطة بها.
حوالي الساعة 17:05 بالتوقيت العالمي، سمحت عملية إعادة التشغيل لبعض المجموعات بالبدء في العودة إلى الإنترنت. ومع تعافي أداء قاعدة البيانات واستقرار المجموعات، واصلت Braze زيادة قدرة معالجة البيانات وإرسال الرسائل؛ ومع ذلك، فقد تعقدت هذه الجهود بسبب التراكم الهائل الناتج عن عدم التوفر مسبقًا.
نظرًا لحجم وتعقيد بيئة قاعدة بيانات Rackspace الخاصة بنا، والتي تتكون من مئات قواعد البيانات المتميزة، وطول فترة الانقطاع، وحجم الأعمال المتراكمة الناتجة (التي تمثل مليارات الرسائل ومليارات نقاط البيانات المستوعبة)، فإن عملية الاسترداد المطلوبة في - التكيف الفوري لعمليات التعافي الطبيعية لدينا. وكان هذا ضروريًا لضمان بقاء موارد قاعدة البيانات متوازنة مع متطلبات المعالجة المستمرة، بما في ذلك إدخال قدر هائل من قدرة المعالجة الإجمالية.
ومع ذلك، من خلال القيام بذلك، وصل Braze إلى حد AWS لعدد وحدات المعالجة المركزية الافتراضية التي تمكنا من توفيرها، مما يمنعنا من إضافة أي سعة خادم إضافية. قام فريق Braze بتصعيد هذا الظرف بسرعة مع فريق AWS لدينا وحصل على زيادة، مما سمح لمهندسينا برفع سعة معالجة الخادم لدينا إلى مستوى قياسي، والذي كان أعلى بنسبة تزيد عن 50% من السعة القصوى السابقة لدينا، والتي تم الوصول إليها على Black الجمعة 2023.
بحلول الساعة 20:30 بالتوقيت العالمي، كانت جميع مجموعاتنا في الولايات المتحدة باستثناء US 01 وUS 03 وUS 08 قد انتهت من معالجة الأعمال المتراكمة، وكانت تلك المجموعات المتبقية تعالج بمعدلات الذروة أو أعلى من اليوم السابق للحادث. وفي غضون ساعات قليلة، تمت إعادة جميع المجموعات إلى المعالجة في الوقت الفعلي وأعلنا أن الحادث قد تم حله.