Ağ döngüsünün MongoDB süreçlerimiz üzerindeki etkisi ve buna nasıl yanıt verdiğimiz
Ağ döngüsü sırasında MongoDB süreçlerimiz normal şekilde bağlanamadığından her biri ilgili tüm süreçleri çevrimdışı olarak işaretledi. Yani, her mongoS işlemi, ilişkili tüm mongoD işlemlerini çevrimdışı olarak işaretledi ve her mongoD işlemi, ilgili kopya kümesi üyelerini çevrimdışı olarak işaretledi. Ancak fiziksel sunucularımıza Rackspace tarafından ağ bağlantısı yeniden sağlandıktan sonra bile ne mongoS ne de mongoD işlemleri çevrimdışı olarak işaretlenen diğer işlemlerle tüm bağlantıları yeniden kurmadı.
Bu noktada, Rackspace veritabanı yöneticisi (DBA) ekibimizin iyileştirme çabalarına yardımcı olmak amacıyla Braze DevOps ekipleri, bu bağlantıyı geri yüklemeye yönelik yöntemleri hızla hata ayıklamaya ve test etmeye başladı. Araştırmamız, mevcut tek seçeneğin sanallaştırılmış konteynerlerdeki yaklaşık 16.000 mongoD ve 6.000'den fazla mongoS işleminin her birini yeniden başlatmak olduğunu belirledi. Bu girişimin büyüklüğü ve bu kadar çok konteyneri hızlı bir şekilde yeniden başlatacak otomasyonun mevcut olmadığı gerçeği göz önüne alındığında, Rackspace mühendisleri, olay sırasında anında otomasyon yeteneği oluşturmak için yeni kod yazdılar.
Ne yazık ki, yeniden başlatma süreci hızlandıkça Etki Alanı Adı Sistemi (DNS) sisteminde başka bir sorun ortaya çıktı. MongoS ve mongoD işlemleri çevrimiçi hale geldikçe, DNS araması olarak bilinen bir süreçte DNS çözümleyicilerden bilgi isterler. Yeniden başlatma hızı nedeniyle sürekli DNS aramaları yapıldığında, DNS sunucuları ağır yük altına girdi ve mongoS katmanlarında mongoD işlemlerine yeniden bağlanırken bağlantı zaman aşımlarına yol açtı. Bu artan yükü karşılamak için Rackspace ekibimiz DNS CPU kapasitesini artırdı, ancak daha sonra her mongoS'tan ilgili mongoD süreçlerine sağlıklı bağlantılar oluşturmak için mongoS katmanını ikinci kez yeniden başlatmak zorunda kaldı.
17:05 UTC civarında, yeniden başlatma süreci bazı kümelerin tekrar çevrimiçi olmaya başlamasına olanak sağladı. Veritabanı performansı iyileştikçe ve kümeler istikrar kazandıkça Braze, veri işleme ve mesajlaşma gönderme kapasitesini artırmaya devam etti; ancak bu çaba, daha önce mevcut olmamasından kaynaklanan büyük birikmiş iş nedeniyle karmaşık hale geldi.
Yüzlerce farklı veritabanından oluşan Rackspace veritabanı ortamımızın ölçeği ve karmaşıklığı, kesintinin uzunluğu ve bunun sonucunda ortaya çıkan biriktirme hacmimiz (milyarlarca mesajı ve milyarlarca alınan veri noktasını temsil eden) göz önüne alındığında, Normal iyileşme süreçlerimizin anlık adaptasyonu. Bu, çok büyük miktarda genel işleme kapasitesinin devreye sokulması da dahil olmak üzere, veritabanı kaynaklarının devam eden işleme talepleriyle dengede kalmasını sağlamak için gerekliydi.
Ancak bunu yaparken Braze, tedarik edebildiğimiz sanal CPU sayısı açısından bir AWS sınırına ulaştı ve herhangi bir ek sunucu kapasitesi eklememizi engelledi. Braze ekibi, bu durumu hızla AWS ekibimizle birlikte ele aldı ve bir artış elde ederek mühendislerimizin sunucu işleme kapasitemizi, Black'te ulaşılan önceki maksimum kapasitemizden %50 daha yüksek olan rekor bir seviyeye yükseltmesine olanak tanıdı. Cuma 2023.
UTC 20:30 itibariyle, US 01, US 03 ve US 08 dışındaki tüm ABD kümelerimiz birikmiş iş yığınlarını işlemeyi bitirmişti ve geri kalan kümeler olaydan önceki günden itibaren en yüksek hızlarda veya bu oranların üzerinde işlem yapıyordu. Birkaç saat içinde tüm kümeler gerçek zamanlı işlemeye alındı ve olayın çözüldüğünü ilan ettik.