Kullanılabilirlik Bölgeleri ve Çapraz Bölgeler
1) Şartlar ve hedefler
Kullanılabilirlik bölgesi (AZ) - bölge içinde izole bir veri merkezi (kendi kapasitesi/ağı).
Bölge - Ortak coğrafya ve gecikmelere sahip AZ grubu.
- RTO (Recovery Time Objective - Kurtarma Süresi Hedefi): Bir hizmeti ne kadar sürede sağlayamazsınız?
- RPO (Recovery Point Objective - Kurtarma Noktası Hedefi): Ne kadar veri kaybedilebilir?
Genellikle: bölgede RTO ≤ 5-15 dakika, RPO ~ 0-1 dakika, bölgeler arası - RTO ≤ 1 saat, RPO ≤ 5 dakika (ürüne ve bütçeye bağlı olarak) hedefliyoruz.
2) Mimari modeller
2. 1 Bölgenin içinde (çok AZ)
Durumsuz katman: AZ üzerinden dağıtılır; dengeleme - sağlık kontrolleri ile L4/L7.
Durumsal katman: AZ arasında eşzamanlı çoğaltma (veya çekirdek) olan kümeler.
Önbellek/kuyruklar: AZ sharding ve otomatik yük devretme ile kümelenmiş.
2. 2 Bölgelerarası (çok bölgeli)
Aktif-Aktif: Her iki bölge de trafik alır.
Minimum kullanıcı gecikmesi, hızlı kurtarma, − tutarlılık ve çatışma karmaşıklığı
Aktif-Pasif (sıcak/sıcak): Ana bölge hizmet eder, ikincisi - sıcak/sıcak beklentisinde.
Daha basit veri, daha ucuz; − daha yüksek RTO.
Pilot-Light: Minimum "ışık" (veriler senkronize edilir, bir kaza durumunda hesaplamalar yapılır).
DR-yedekleme: yalnızca yedeklemeler ve kurtarma senaryosu (en ucuz ve en yavaş).
3) Veri ve tutarlılık
3. 1 Veritabanları
Senkron çekirdek (RPO≈0, ↑latentnost): Bölge içinde senkron standbys ile PostgreSQL; Yerel quorum (Local Quorum) ve AZ balancing ile dağıtılmış veritabanları (CockroachDB/Cassandra).
Asenkron bölgeler arası (RPO> 0, ↓latentnost): mantıksal çoğaltma Postgres/MySQL; KV/NoSQL в "global tablolar"; CDC - başka bir bölgeye strim.
Çakışan girişler: Etkin-etkin için, anahtar/kiracı başına CRDT/sürüm oluşturma veya lider bölge kullanın.
3. 2 Olay kaynağı ve kuyruklar
Kuyruklar/akışlar (Kafka/Pulsar/SQS benzeri): ayna konuları veya bölgeler arası çoğaltıcılar; anahtar - tüketici idempotency ve anahtar kilitlenme.
Webhooks ve harici ortaklar: her iki bölgede de oturum açın, tekrar oynatın, ofset/kontrol noktaları saklayın.
3. 3 Nakit
Bölge başına yerel önbellekler (yazma/yenileme öncesinde); Yalnızca dayanıklı KV'ler için global paylaşılan önbellek (diğer adıyla split-brain). Etkinlikle devre dışı bırakma (pub/sub), TTL - muhafazakar.
4) Küresel trafik ve ağ döngüsü
GSLB/DNS: Geo-/Gecikme tabanlı yönlendirme, sağlık kontrolleri, kanaryalar ve kazalar için trafik ağırlıkları.
Anycast/Edge: Girişi kullanıcıya daha yakın, daha sonra en yakın sağlıklı bölgeye getiriyoruz.
Yük devretme politikaları: bölgesel yukarı akış havuzları, kritik yollarda 0-RTT yasağı, bölgeler arası bağımlılıklara düşük zaman aşımları.
Retray politikaları: üstel geri dönüş + jitter, toplam son tarih kısıtlaması, 'Idempotency-Key'ile idempotent PUT/POST.
5) Kubernetes ve servis ağı
5. 1 Bir kümede Multi-AZ
Topoloji yayılma kısıtlamaları по topolojisi. Kubernetes. io/zone '.
PodDisruptionBudget и öncelik sınıfları.
NodeAffinity/Anti-Affinity - Çoğaltma ortak konumundan kaçının.
Depolama alanları: AZ replikasyonlu PV veya dağıtılmış hacim sistemleri.
5. 2 Çok bölgeli (çok kümeli)
Bildirimsel senkronizasyon için bölge başına ayrı kümeler + GitOps (Argo CD/Flux).
Servis Ağı (Istio/Linkerd): Bölgeler arasında yerelliğe duyarlı yük dengeleme ve yük devretme; mTLS, paylaşılan kimlik.
Trafik kaydırma: Yavaş yavaş %1 - %10 - %50 yeni bir bölgeye; Anında "%0 koy" kolu.
6) RTO/RPO seçimi ve desen bağlama
7) Hata tolerans testi (DR)
GameDays: Üç aylık tam ölçekli "bölge/AZ out" senaryosu.
Kaos enjeksiyonları: ağ gecikmeleri, paket kayıpları, bir AZ'de broker/baz bağlantısı kesilmesi.
RTO/RPO fiili: anahtar süresini ve veri kaybını ölçün, rapor yayınlayın.
Runbooks: adım adım talimatlar ve anahtarlama için "kırmızı düğmeler" (DNS ağırlıkları, özellik bayrakları, ağır özellikleri devre dışı bırakma).
8) Gözlemlenebilirlik ve yönetim
Bölgeye göre metrik dilimler/AZ/kiracı; P95/p99 rota gecikmesi.
Bölge ve küresel havuz başına SLO ve Hata Bütçeleri.
Uyarılar: Bir bölgenin bozulması, ikincisi trafiği normal şekilde taşıyorsa, sayfalama "sıkışmamalıdır".
Трейсы: bagaj 'bölge', 'az', 'yük devretme = doğru/yanlış'; "Kaç isteğin failover'a gittiğini rapor eder".
9) Güvenlik ve uyumluluk
Veri ikameti: PII/ödeme verilerini belirli bölgelere bağlama (yargı alanı).
Sırlar: Bölgeler arası tuşlara ve rotasyona sahip KMS/akıllı HSM; Bölge başına ayrı anahtar malzemeler.
mTLS ve bölgeler arası karşılıklı güven; Bölgeler arası çıkışı ACL ile sınırla.
10) Maliyet ve tasarruf
Kenar önbelleği + SWR - bölgelerarası çıkışta azalma.
Farklı depolama sınıfları (sıcak/sıcak/soğuk) ve altörnekleme metrikleri/günlükleri.
Bölgelere göre otomatik ölçekli profiller (gece minimum).
Görüntü kimliği + ortam değişkenleri/Dümen değerleri aracılığıyla farklılaştırılmış yapılandırma.
11) Antipatterns
Sistem başına bir Stateful master; Yeterli çoğunluk olmadan bölünmüş beyin.
Tek bir RDBMS'ye bölgeler arası eşzamanlı yazma (dayanılmaz gecikme).
CRDT olmadan güçlü tutarlılığa sahip global önbellek - tıkanıklık ve fantomlar.
Idempotency olmadan Retrays - yinelenen işlemler/ödemeler.
Tek bir "küresel" SLO - bir bölgenin başarısızlığını gizler.
Düzenli DR egzersizleri yoktur - planlar savaşta çalışamaz.
12) iGaming/Finansın Özellikleri
Ödeme sağlayıcıları/CCP'ler bölgesel olarak seçilir; Sağlık sinyalleri ile PSP üzerinden akıllı yönlendirme yapın, yedeğe aktarım yapın.
Yargı yetkisi: PII ve ülke/bölge içi işlem günlüklerini tutmak; çapraz bölge - yalnızca kümeler/anonim.
Sınırlar/sorumlu oyun: yerel kurallar ve saatler - bölgeler arasında "kafa kafaya" çoğaltmayın, olay tutarlılığını kullanın.
Bonuslar/denge: idempotent anahtarlar ve kiracı/bölge başına "gerçeğin kaynağı"; DR'den sonra uzlaştırma işleri
13) Mini tarifler (sahte rakamlar)
13. 1 Elçi yerellik bilincine sahip + yük devretme
yaml load_assignment:
endpoints:
- locality: { region: eu, zone: eu-a }
lb_endpoints: [{ endpoint: { address:... } }]
- locality: { region: eu, zone: eu-b }
lb_endpoints: [{ endpoint: { address:... } }]
- locality: { region: us, zone: us-a } # failover target lb_endpoints: [{ endpoint: { address:... } }]
common_lb_config:
zone_aware_lb_config: {}
locality_weighted_lb_config: {}
outlier_detection:
consecutive_5xx: 5 base_ejection_time: 30s
13. 2 Kubernetes topoloji yayılımı
yaml spec:
topologySpreadConstraints:
- maxSkew: 1 topologyKey: topology. kubernetes. io/zone whenUnsatisfiable: DoNotSchedule labelSelector: { matchLabels: { app: api } }
13. 3 DNS Ağırlık Feilover (fikir)
'weight (eu) = 90', 'weight (us) = 10' - 'eu' otomatik olarak'biz'e geçtiğinde. Sağlık kontrolleri ve düşük TTL'ler (ancak çok agresif değil, 30-120 s).
14) Prod Hazırlık Kontrol Listesi
- Tanımlanan ve iş ile kabul edilen hizmet başına RTO/RPO.
- AZ genelinde dağıtılan vatansız; stateful, quorum/replication ve net bir tutarlılık modeline sahiptir.
- Bölgeler arası çoğaltma (asynchron/CDC), çakışma/veri tekilleştirme testleri.
- GSLB/Anycast yapılandırılır, sağlık kontrolleri ve ağırlıklar otomatiktir.
- Kubernetes: topoloji-yayılma, PDB, anti-afinite; Çok kümeli GitOps.
- jitter ile Retrai, yazma üzerinde idempotency; Bölgesel olarak kısa süreler.
- Gerçek RTO/RPO ölçülen DR egzersizleri; şu anki runbook.
- Bölgelere göre gözlemlenebilirlik/AZ, SLO ve bölümlerde yanma oranı, uyarılar normal çalışmayı "sıkıştırmaz".
- Veri ikametgahı/sırları/anahtarları yasal gerekliliklere uygundur.
- Ekonomi: çıkış, depolama, otomatik ölçek profilleri kontrol altında.
15) TL; DR
Temel katman olarak multi-AZ, iş sigortası olarak multi-region oluşturun. RTO/RPO ve maliyet için bir model (aktif-aktif/bekleme) seçin, verileri bilinçli olarak çoğaltın (quorums/CDC/CRDT), küresel trafiği GSLB/Anycast ve konuma duyarlı dengeleme yoluyla yönetin. Zorunlu: Idempotency, kısa zaman aşımları, düzenli DR egzersizleri, bölge/AZ dilimleri üzerinde SLO/metrikler. IGaming/Finans için bölgesel PSP/KYC, veri gereksinimleri ve yargı yetkisine göre bölünmüş SLO'lar ekleyin.