Snapshot'lar
Snapshot, Consul cluster'ının tam bir yedeğidir. KV store, ACL'ler, session'lar ve catalog bilgilerini içerir. Guardian, snapshot'ları zamanlanmış olarak alıp farklı depolama altyapılarına kaydedebilir.
Snapshot İçeriği
Bir Consul snapshot şu verileri içerir:
- KV Store: Tüm key-value çiftleri
- ACL'ler: Token, policy ve role tanımları
- Session'lar: Aktif session bilgileri
- Catalog: Servis ve node kayıtları
- Config Entry'leri: Service mesh yapılandırmaları
Snapshot, Consul'un kendi binary formatında saklanır (Raft snapshot). consul snapshot inspect komutuyla içeriği inceleyebilirsin.
Watch özelliği sadece KV değişikliklerini Git'e commit eder. Snapshot ise tüm cluster durumunu (ACL'ler dahil) yedekler. İkisi birbirini tamamlar:
- Git sync: Key bazında geçmiş, hızlı geri yükleme
- Snapshot: Tam cluster kurtarma, disaster recovery
Snapshot Alma
CLI ile tek seferlik
# Yerel dosya sistemine
consul-guardian snapshot save --storage local --path /backups/
# S3'e
consul-guardian snapshot save \
--storage s3 \
--bucket consul-backups \
--prefix dc1/ \
--region eu-west-1
Zamanlanmış snapshot
Yapılandırma dosyasında cron ifadesi ile zamanla:
snapshot:
enabled: true
schedule: "0 */6 * * *" # Her 6 saatte bir
storage:
type: "s3"
bucket: "consul-backups"
prefix: "dc1/"
region: "eu-west-1"
retention:
count: 30
max_age: "720h" # 30 gün
Dashboard çalıştırıldıysa zamanlanmış snapshot otomatik aktif olur.
Depolama Altyapıları
Guardian şu depolama backend'lerini destekler:
Yerel Dosya Sistemi
snapshot:
storage:
type: "local"
path: "/data/consul-snapshots"
Basit ve hızlı. Tek sunucuda çalışıyorsan yeterli, ama sunucu çökerse snapshot'lar da gider. Production için uzak depolama öner.
AWS S3
snapshot:
storage:
type: "s3"
bucket: "consul-backups"
prefix: "dc1/"
region: "eu-west-1"
Kimlik doğrulaması için IAM role (önerilen) veya environment değişkenleri kullan:
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
Google Cloud Storage
snapshot:
storage:
type: "gcs"
bucket: "consul-backups"
prefix: "dc1/"
Service account key dosyası:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/sa-key.json
MinIO (S3 uyumlu)
snapshot:
storage:
type: "s3"
bucket: "consul-backups"
endpoint: "http://minio.internal:9000"
force_path_style: true
On-premise ortamlar için ideal.
Saklama Politikaları
Snapshot'lar zamanla birikir ve depolama maliyetini artırır. Retention (saklama) politikası ile eski snapshot'ları otomatik sil:
snapshot:
retention:
count: 30 # Son 30 snapshot'ı sakla
max_age: "720h" # 30 günden eski olanları sil
Her iki koşul da aynı anda geçerlidir. Örnek:
- 30'dan fazla snapshot varsa en eskileri silinir
- 30 günden eski snapshot'lar silinir
Retention çalışma mantığı
- Yeni snapshot alındıktan sonra retention kontrolü yapılır
- Önce
max_agekontrolü: belirtilen süreden eski olanlar silinir - Sonra
countkontrolü: belirtilen sayıdan fazla olanlar silinir (en eskiden başlanarak) - Silinen snapshot'lar loglanır
Snapshot Doğrulama
Her snapshot alındıktan sonra SHA-256 hash ile doğrulama yapılır:
Snapshot saved: consul-dc1-20260404-143000.snap
Size: 2.4 MB
SHA-256: a1b2c3d4e5f6...
Keys: 247
Datacenter: dc1
Varolan bir snapshot'ı doğrulamak için:
consul snapshot inspect consul-dc1-20260404-143000.snap
Gerçek Senaryo: Haftalık Backup Stratejisi
Bir e-ticaret şirketinde Consul cluster'ını yönetiyorsun. Backup stratejin:
# consul-guardian.yaml
snapshot:
enabled: true
schedule: "0 */4 * * *" # Her 4 saatte bir snapshot
storage:
type: "s3"
bucket: "acme-consul-backups"
prefix: "production/dc1/"
region: "eu-west-1"
retention:
count: 42 # 7 gün x 6 snapshot/gün
max_age: "168h" # 7 gün
watch:
prefixes:
- "config/"
- "env/"
- "feature-flags/"
Bu yapılandırmayla:
- Her 4 saatte S3'e tam snapshot alınır
- Git repo'sunda her KV değişikliği anlık commit edilir
- Son 7 günün snapshot'ları saklanır (42 adet)
- Key bazında geri yükleme Git'ten, tam cluster kurtarma snapshot'tan yapılır