Dampak loop jaringan pada proses MongoDB kami dan cara kami meresponsnya
Selama loop jaringan, karena proses MongoDB kami tidak dapat terhubung secara normal, masing-masing proses menandai semua proses terkait sebagai offline. Artinya, setiap proses mongoS menandai semua proses mongoD terkait sebagai offline, dan setiap proses mongoD menandai anggota kumpulan replika terkait sebagai offline. Namun, bahkan setelah konektivitas jaringan dipulihkan ke server fisik kami oleh Rackspace, baik proses mongoS maupun mongoD tidak membangun kembali semua koneksi ke proses lain yang telah ditandai offline.
Pada titik ini, untuk membantu upaya remediasi tim Rackspace database administrator (DBA), tim Braze DevOps mulai melakukan debug dengan cepat dan menguji metode untuk memulihkan konektivitas tersebut. Investigasi kami menentukan bahwa satu-satunya opsi yang tersedia adalah memulai ulang setiap proses dari hampir 16.000 mongoD dan 6.000+ mongoS dalam wadah virtualnya. Mengingat besarnya skala upaya ini dan fakta bahwa otomatisasi tidak ada untuk memulai kembali begitu banyak kontainer dengan cepat, para insinyur Rackspace menulis kode baru selama kejadian tersebut untuk menciptakan kemampuan otomatisasi on-the-fly.
Sayangnya, seiring dengan semakin intensifnya proses restart, masalah lain muncul pada sistem Sistem Nama Domain (DNS). Saat proses mongoS dan mongoD online, mereka meminta informasi dari penyelesai DNS dalam proses yang dikenal sebagai pencarian DNS. Dengan pencarian DNS berkelanjutan yang didorong oleh kecepatan restart, server DNS mengalami beban berat, menyebabkan batas waktu konektivitas pada lapisan mongoS saat mereka terhubung kembali ke proses mongoD. Untuk mengakomodasi beban yang terus bertambah ini, tim Rackspace kami meningkatkan kapasitas CPU DNS, namun kemudian terpaksa memulai ulang tingkat mongoS untuk kedua kalinya guna membuat koneksi yang sehat dari setiap mongoS ke proses mongoD terkait.
Sekitar pukul 17:05 UTC, proses restart memungkinkan beberapa cluster mulai kembali online. Ketika kinerja basis data pulih dan klaster menjadi stabil, Braze terus meningkatkan kapasitas pemrosesan data dan pengiriman pesan; namun, upaya tersebut dipersulit oleh tumpukan besar-besaran yang diakibatkan oleh ketidaktersediaan sebelumnya.
Mengingat skala dan kecanggihan lingkungan basis data Rackspace kami, yang terdiri dari ratusan basis data berbeda, lamanya pemadaman, dan volume simpanan kami yang dihasilkan (mewakili miliaran pesan dan miliaran titik data yang diserap), proses pemulihan diperlukan dalam -adaptasi saat ini dari proses pemulihan normal kita. Hal ini diperlukan untuk memastikan bahwa sumber daya database tetap seimbang dengan tuntutan pemrosesan yang sedang berlangsung, termasuk penggunaan kapasitas pemrosesan keseluruhan dalam jumlah besar.
Namun, saat melakukan hal tersebut, Braze mencapai batas AWS pada jumlah CPU virtual yang dapat kami sediakan, sehingga menghalangi kami untuk menambahkan kapasitas server tambahan. Tim Braze dengan cepat meningkatkan keadaan ini dengan tim AWS kami dan menerima peningkatan, sehingga teknisi kami dapat meningkatkan kapasitas pemrosesan server kami ke tingkat rekor, yang lebih dari 50% lebih tinggi dari kapasitas maksimum kami sebelumnya, yang telah dicapai pada Black Jumat 2023.
Pada pukul 20:30 UTC, semua klaster AS kami kecuali US 01, US 03, dan US 08 telah selesai memproses backlog mereka, dan klaster lainnya memproses pada atau di atas kecepatan puncak dari hari sebelum kejadian. Dalam beberapa jam, semua cluster berhasil diproses secara real-time dan kami menyatakan bahwa insiden tersebut telah teratasi.