Bir Availability Zone’u günlerce boşaltmak: ARC Zonal Shift ile N-1 tatbikatı
Running multi-day AZ evacuation drills with ARC Zonal Shift · Antoine Boucherie
‘Bir AZ düşerse ayakta kalırız’ cümlesi, bunu gerçekten denemedikçe bir varsayımdır. AWS’nin yazısı, bir Availability Zone’u 48-72 saat boyunca trafikten çıkarıp sistemi N-1 kapasiteyle (bir zone eksik) çalıştıran tatbikatları anlatıyor. Kısa bir tatbikat anlık sorunları yakalar; günlerce süren tatbikat ise zamanla ortaya çıkan sorunları yakalar.
Tatbikatların açığa çıkardığı hata türleri öğretici: otomatik ölçekleme (kapasite kalan zone’larda yeterince hızlı büyüyor mu), eski DNS kayıtları (istemciler boşaltılmış zone’a hâlâ gidiyor mu), nöbet ve rotasyon süreçleri (insanlar ve runbook’lar çok günlük bir durumu kaldırıyor mu) ve sabitlenmiş veritabanı bağlantıları (bağlantılar eski zone’daki örneğe yapışık kalıyor).
Mekanizma tarafında ARC Zonal Shift, Kubernetes (EKS) üzerinde ilgili zone’daki düğümleri yeni pod’lara kapatıyor (cordon) ve o zone’daki uç noktaları EndpointSlice’tan çıkarıyor; böylece trafik kalan zone’lara akıyor.
Öne çıkanlar
- Yedekliliği test etmeyen sistem, yedekliliği olduğunu varsayan sistemdir.
- Günlerce süren tatbikat, saatlik tatbikatın göremediği zamanla biriken sorunları gösterir.
- Sorunların çoğu kodda değil çevrede: DNS, bağlantı havuzu, ölçekleme ve insan süreçleri.
- N-1 kapasite planı, kalan zone’ların tüm yükü kaldırabildiğini ölçmeden anlamsızdır.
Neden önemli?
Çok-AZ mimari çizmek kolay, çalıştığını kanıtlamak zor. Tatbikat, ‘olursa ne olur’ sorusunu planlı bir deneye çevirir ve gerçek kesintiden önce hataları ucuza bulur.
Sende karşılığı
Bu desenin küçük ölçekli hâli bugün senin elinde: Tradebot ya da Mobit’i docker-compose ile çalıştırıyorsan, veritabanı konteynerini bilerek durdur ve uygulamanın ne kadar sürede toparlandığına bak. Bağlantı havuzun (HikariCP) ölü bağlantıyı tespit edip yeniden bağlanıyor mu? maxLifetime ve connectionTimeout ayarlarının anlamı tam burada ortaya çıkar. Sonucu bir RESILIENCE.md dosyasına ‘ne denedim, ne bozuldu, ne düzelttim’ diye yaz: mülakatta ‘dayanıklılığı test ettim’ diyebilmenin somut kanıtı.
Sözlük
- Availability Zone (AZ) erişilebilirlik bölgesi
- Bir bulut bölgesi içinde fiziksel olarak ayrı, bağımsız arızalanabilen veri merkezi grubu.
- zonal shift zone kaydırma
- Trafiği sorunlu ya da boşaltılan bir zone’dan diğer zone’lara yönlendirme.
- N-1 N-1 kapasite
- Bir bileşen (örneğin bir zone) kaybedilse bile yükü taşıyabilecek kapasite planı.
- cordon düğümü kapatma
- Kubernetes’te bir düğüme yeni pod atanmasını engelleme.