Senior (L5)
⚡ÖZET VE TEKNİK CEVAP
Pek çok mühendislik takımı AWS RDS veya Google Cloud SQL'de 'Multi-AZ / Yüksek Erişilebilirlik' kutucuğunu işaretledikleri için veritabanlarının asla çökmeyeceğine inanır. Oysa gece saat 03:00'te gerçek bir donanım arızası yaşandığında, otomatik failover neredeyse her zaman ikinci bir felakete yol açar: Uygulama bağlantı havuzları (HikariCP / PgBouncer) kopan ölü TCP soketlerinde sonsuza kadar asılı kalır, DNS önbellekleri eski IP adresini 15 dakika boyunca bırakmaz veya replika gecikmesi yüzünden yedek sunucu liderliğe geçemez. Olgun SRE organizasyonları Planlı Canlı Veritabanı Failover Tatbikatları (3 Ayda Bir Mesai Saatinde) yapar:
1
Kontrollü Arıza Enjeksiyonu: Mesai saatinde bilerek
aws rds reboot-db-instance --force-failover komutu çalıştırılır.2
Bağlantı Havuzu Doğrulaması: Mikroservislerin kopan bağlantıyı 2 saniyede fark ettiği ve yeni lider veritabanına sorunsuz bağlandığı test edilir.
3
Sıfır Kesinti Standardı: Otomatik yeniden deneme (retry) mekanizmaları sayesinde tüm geçiş 30 saniyenin altında kullanıcıya sıfır hata yansıtılarak tamamlanmalıdır.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
MekanizmaCanlı veritabanı failover tatbikatı 4 aşamalı bir süreçle yürütülür:
1
Tatbikat Öncesi Sağlık Kontrolü: Replika gecikmesinin sıfır olduğu ve PgBouncer limitleri doğrulanır.
2
Failover Tetikleme: AWS RDS zorunlu lider değişimi API ile başlatılır.
3
İzleme Doğrulaması: PromQL grafikleri izlenir: Geçici hata artışları, yeniden bağlanma eğrileri ve p99 gecikmesi takip edilir.
4
TCP Zaman Aşımı Doğrulaması: TCP keepalive ayarlarının (
tcp_keepalives_idle = 10s) ölü bağlantıları 15 dakika bekletmeden 10 saniyede düşürdüğü teyit edilir.5
Eksiklerin Kapatılması: Çöken veya elle yeniden başlatma gerektiren servislere P0 öncelikli düzeltme bileti açılır.
🎯2. Doğru Kullanım Senaryosu
Kapsam3 aylık SRE dayanıklılık testleri, Multi-AZ veritabanı mimarisi, büyük indirim günlerine hazırlık ve bulut veritabanı taşıma doğrulama süreçleri.
⚠️3. Prodüksiyon Arıza Modları
Kritik Risk- ✓Replika gecikmesi 2 saat gerideyken failover tetikleyip kalıcı veri kaybına yol açmak
- ✓mikroservislerin eski ölü sunucuya bağlı kalıp tüm yeni yazma işlemlerinde (INSERT/UPDATE) hata vermesi
📡4. Teşhis ve Telemetri Sinyalleri
Metrikler- ✓Veritabanı failover'ından sonra Kubernetes pod'ları elle yeniden başlatılana kadar sistemin 30 dakika boyunca HTTP 500 vermesi
- ✓iç veritabanı DNS süresinin (TTL) 300 saniyede kalması
- ✓bağlantı cümlelerinde TCP keepalive ayarlarının bulunmaması
🛡️5. Önleme ve Mimari Bariyerler
Bariyerler- ✓Veritabanı DNS adresleri için süreyi (TTL) 5 saniyeye indirin
- ✓agresif TCP keepalive ayarları yapın
- ✓her 3 ayda bir mesai saatinde canlı veritabanı lider değişimi tatbikatını zorunlu kılın
⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimDüzenli canlı failover tatbikatları gerçek felaketlerde veritabanının ayakta kalmasını garanti eder; ancak 10-20 saniyelik geçiş anını hissettirmemek için uygulamada güçlü yeniden deneme (retry) mekanizmaları gerektirir.
📋
GERÇEK DÜNYA TELEMETRİSİVaka İncelemesi (TinyCTO Saha Örneği)
Bir online borsa platformunda AWS RDS veritabanı donanım arızası yüzünden otomatik failover yaptı. AWS yeni sunucuyu 28 saniyede açmasına rağmen, uygulamanın Java bağlantı havuzları kopan soketlerde asılı kaldı ve sistem 45 dakika boyunca açılmadı (tüm pod'ları elle yeniden başlatmak zorunda kaldılar). SRE ekibi agresif TCP keepalive ayarları yaptı ve araya AWS RDS Proxy kurdu. Salı günü saat 11:00'de canlı tatbikat yaptılar: RDS Proxy geçişi hissettirmeden göğüsledi, mikroservisler 1.4 saniyede yeni lidere bağlandı ve sıfır işlem kaybıyla tatbikat tamamlandı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaQ1
Otomatik veritabanı failover'ından sonra uygulama bağlantı havuzları neden sıklıkla yeni sunucuya bağlanamaz?
Çünkü varsayılan işletim sistemi TCP ayarları kopan soketleri 15-30 dakika boyunca açık tutar; agresif TCP keepalive veya soket zaman aşımı ayarlanmadığı sürece bağlantı havuzu sorguları ölü sunucuya göndermeye devam eder.
Q2
Bir SRE ekibi canlı ortamda veritabanı failover tatbikatlarını hangi sıklıkla yapmalıdır?
3 ayda bir (çeyreklik olarak), tüm mühendislik ekibinin masada olduğu ve sistemin kendini toparlamasını doğrulayabileceği normal mesai saatleri içinde.
Direnç Tatbikatları: Canlı Veritabanı Failover Testleri ve Replikasyon Gecikmesi Doğrulama — Sıkça Sorulan Sorular
Veritabanı failover'ı sırasında RDS Proxy veya PgBouncer gibi bağlantı havuzlayıcıların rolü nedir?
15-30 saniyelik lider değişimi sırasında gelen uygulama sorgularını hafızada tutan ve istemci bağlantılarını koparmadan yeni lider veritabanına otomatik yönlendiren bir tampon katman görevi görür.
İç veritabanı DNS adresleri için önerilen TTL (yaşam süresi) nedir?
5 saniye veya daha az; böylece uygulama sunucuları lider değiştiğinde yeni IP adresini saniyeler içinde çözer.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Multi-AZ kutucuğunu işaretlemek uygulamanın yeni veritabanına bağlanacağını garanti etmez.
- ▸Agresif TCP keepalive ayarlanmazsa ölü soketler 15 dakika boyunca kilitli kalır.
- ▸Sorguları tamponlamak ve lideri hissettirmeden değiştirmek için RDS Proxy kurun.
- ▸Mesai saatlerinde 3 ayda bir canlı veritabanı failover tatbikatını zorunlu kılın.
Yaygın Yanılgılar
- ✗Yanılgı: Veritabanı failover testleri sadece test ortamında yapılmalıdır (Gerçek: Test ortamlarında gerçek bağlantı havuzu yükü ve replikasyon ölçeği yoktur).
- ✗Yanılgı: Veritabanı lider değiştirdiğinde birkaç dakikalık kesinti kaçınılmazdır (Gerçek: Proxy ve yeniden deneme katmanlarıyla geçiş 2 saniyede sıfır hatayla tamamlanır).
Karar Kılavuzu & Önceliklendirme
Sessiz bağlantı kilitlenmelerini yok etmek için agresif TCP keepalive ayarları yapın, veritabanı proxy katmanları kurun ve 3 ayda bir mesai saatinde canlı failover tatbikatları düzenleyin.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]Amazon RDS Multi-AZ Deployments: Automated Failover & TCP Timeout Best Practices— Amazon Web Services Documentation
