Docker Backup'ın Benzersiz Challengelarını Anlayın

Docker konteynerleri doğanın özlediği ve devletsiz olması için tasarlanmıştır.Her konteyner örneği, bir okuma / yazma katmanının üst kısmından başlar, yani konteyner içinde yazılmış herhangi bir veri kalıcıdır - ancak bu durum taze yedekleme zorluklarını oluşturur.

Ayrıca, üretim ortamları genellikle Docker Swarm tarafından yönetilen kümeler arasında konteynerler çalıştırıyor, Kubernetes veya bulut orkestration hizmetleri.Bu ayarlarda, sadece uygulama verileri değil, aynı zamanda orkestrasyon katmanının durumu da – sırların, yapılandırın haritaları ve hizmet tanımları da dahil olmak üzere. [FONTDÜSTR:0recovery speed ve 03:2data tutarlılık) otomatik olarak farklı düğümlere geri dönülebilir.

Başka bir boyut veri türleri: 03.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.D.

Docker konteynerleri için Core Backup Strategies

Etkili Docker yedeklemesi, kendi araçları ve prosedürleri ile her biri üç ayrı kategoriye ayrılabilir:

  1. [FONT:0)Data Volumes[[Dönetici:0)[Döneticiler, yüklemeler, loglar) içinde kalıcı depolama.
  2. [FONT:0]Container Images[[Döntgen: 1)[Döneticiler) - inşa ettiğiniz hem de bağlı olduğunuz temel görüntüler.
  3. [FONT=0]Uygulama veamp; Altyapı Devleti[Dönem: 1) Docker Boş dosyalar, çevre değişkenleri, sırları, orkestrasyon açıkları ve hizmet tanımları.

Güçlü bir DR planı, üç tane ele almalıdır. Aynı zamanda, [Uygun Zaman Hedefi, RTO) ile bir RTO ile saatli yedekler ve statik bir varlık günlük yedeklemelere ve bir saatlik geri yükleme penceresini ele alalım.[Dönetici Zaman Objektifi, RTO) Örneğin, bir üretim veritabanı, 15 dakika altında bir RTO ile saatli yedekler gerektirebilir.

Up Docker Volumes için en iyi uygulamalar

Docker Volume'ı tar ile kullanın

Bir hacmi geri dönmenin en basit yolu, hacmi ve arşivlerini kullanarak içeren geçici bir konteyner çalıştırmaktır:0)tar).

docker run --rm -v my_volume:/data -v $(pwd):/backup alpine \
 tar czf /backup/my_volume_backup_$(date +%Y%m%d).tar.gz -C /data .

Bu tek komut, tüm hacmin sıkıştırılmış bir arşiv oluşturur.Balıkta yazan herhangi bir konteyner görüntüsü ile çalışır (Alpine en az ve hızlı).Her zaman )Kaçı durdurur[Döneticileri 1 ), tutarlı bir devlet sağlamak için, özellikle de veritabanına özel olarak kullanılan aletler için, dosya sistemi seviyesindeki anlık görüntüler (örneğin:0)

Aminal Backups with rsync

Sık sık değişen hacimler için, tam bir dolum yedekleri, yığın ve yavaş olabilir. artırılmış yaklaşım [[Dönetici) SSH veya yerel bir arsa noktasından en aza indirmek için bir konteynere başlayabilirsiniz. Örneğin:0.

docker run -d --name rsync_agent -v my_volume:/data alpine \
 sh -c "apk add rsync && rsync --daemon --config /etc/rsyncd.conf"

Ardından, yedeklemede senkronize edilen periyodik rsync cron işlerini senkronize edin.Bunu 444D:0)hard bağlantıları ) veya [[Dönetici:2))) KAYNAKLARA (Sbtrfs snapshots) verimli bir noktaya kadar anlık görüntüler oluşturmak için varış noktası üzerinde.

Veritabanı-Specific Backup Methods

Veritabanı içeren hacimler için, yalnızca ham hacim dosyalarının üstüne güvenmeyin. Çoğu üretim veritabanı aENFLT:0)consist olmayan yedekleme[[Döneticileri 1) veritabanının kendi aracı aracılığıyla alınan. Örneğin:

  • [FONT:0)PostgreSQL:[Dönetici:[Dönetici: · 1) UseurFLT:5) veya [[FONTC'ye bağlı geçici bir konteyner içinde, çalışan DB konteynerine bağlanır.
  • [FONT=0)MySQL/MariaDB: RunurFLT:7 veya Percona XtraBackup'ı sıcak yedeklemeler için kullanın.
  • [FONT:0)Redis:[[Dönetici: [Dönetici: · 9) veya [[Döntilmiş veya sonra çöp dosyasını kopyalayın.
  • [FONT:0)MongoDB:[DÜDÜT:1) mantıksal yedeklemeler veya dosya sistemi anlıkleri için [[DÜDÜDÜSTÜSİAD: KAYNAKLAR ► ► · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

Bu senaryoları bir yankar konteyneri içinde veya bir yedekleme programının bir parçası olarak otomatikleştirin. Borular doğrudan sıkıştırılmış bir arşive dönüştürülür ve canlı hacminden ayrı olarak depolanır.

Şifreleme ve Tesis Dışı Depolama

Tüm hacim yedekleri - tam veya artımlı olsun - Docker ev sahibinden ayrılmadan önce şifreli olmalıdır.En azından bir kopyayı kullanabilirsiniz (bulut nesne depolama veya uzaktan sunucu) site içi afetlere karşı korumak için. Örneğin, bir fil yedekleme oluşturmaktan sonra, gpg ve yükleme yoluyla:

tar czf - -C /data . | gpg --encrypt --recipient [email protected] | aws s3 cp - s3://my-backups/volume_$(date +%Y%m%d).tar.gz.gpg

Düzenli olarak bu arşivleri ayrı bir ev sahibi veya bölgeye geri getirebileceğinizi test edin.

Yukarı Docker Görüntüleri ve Yapılandırma

Görüntüler: Özel Resimler Kurtarın, Restuksiyonu Yeniden Yapın

Docker görüntüleri iki kaynaktan geliyor: kamu kayıtları (Docker Hub, Quay.io) ve kendi özel yapılarınızı ) Kamu taban görüntülerinin ayrı yedeklere ihtiyaç duymaması gerekir). Ancak, herhangi bir zamanda tekrar çekilebilirsiniz.

  1. [FONT:0)Version- kontrollü Dockerfiles + CI yeniden inşa[[Dönetici: 1 ) – En iyi uygulama, Dockerfilenizi, bağlamı inşa etmek ve bir sürüm kontrol sisteminde herhangi bir senaryoyu yeniden kurmaktır (Git).
  2. [FONT:0]Image Export viaFLT:13] – Bu, kayıt kimlik doğrulama veya görüntü etiketlerinin temiz bir şekilde işlenmesini sağlayan görüntüler için; çevrimdışı arşiv için en uygun olanıdır.
[[D:0)Tip: Eğer görüntü ihracata güvenirseniz, her inşadan sonra otomatik olarak yayınlanır ve aynı yer depolama için kullandığınız ihracatın hacmi yedeklemeleri için kullandığı aynı depolamaya itilir.Kaynakdan kaçınmak için eski ihracat çıkarın.

).

Yapın: Boş dosyalar, .env ve Sırlar

Bir Docker komplike uygulaması bir veya daha fazla YAML dosyaları tarafından tanımlanır ([Dönemli dosyalar), çevre dosyaları ([Dörtüncü veya Kubernetler) ve muhtemelen tüm uygulama yoluyla monte edilir ([Döneticileri geri almak için, bu dosyaların bir kopyasını almak zorundasınız.) Buna ek olarak, Docker Swarm sırları veya Kubernetes sırları kullanıyorsanız, bunları ilgili olarak diğer bazı yükler.$)

Docker Çevreleri için Afet Kurtarma Planlaması

RTO ve RPO'yu Tanımlayın

DR planı yazmadan önce, her organizasyon, kaybetmeye değer verir:0)Recovery Time Objektif) ve OSPT:2)Recovery Point Objektif) (nasıl bir konteynerli e-ticaret sitesi için para kazanabileceğiniz veriler bir saat ve RPO beş dakika olabilir; bir gelişim ortamı için RPO 24 saat boyunca, RTO sekiz saat ve RPO 24 saat sürebilir.Bu rakamlar yedekleme frekansı, depolama stratejisi ve kurtarma ortamı için kaynak sağlama.

Çok fazlaBölge Deployment ve Orkestrasıtion

Modern bulutlu DR, birden fazla kullanılabilir bölge veya hatta coğrafi bölge boyunca konteyner toplama platformuna sahiptir.Itployments, Services, ConfigMaps) veya [[Düzücü DR:2)Docker Swarm[Döneticileri / Mağazalar) ile birlikte farklı bir şekilde yeniden şarj edilebilir.Vesaireler[Döneticiler, Hizmetler, ConfigMaps)

Volume Snapshot ile Devletli Afet Kurtarma ve Geri Döndü

Devletli iş yükleri için, en sağlam yaklaşım, Kubernet'te CSIT:0) Buluta uygun hacim anlık görüntüler birçok bulut sağlayıcısı (AWS EBS snapshots, Azure managed Disk anlıkları, Google Persiste Disk anlık görüntüler) doğrudan Kubernet'te CSID sürücüleri ile entegre edilir.

Recovery Runbook Otomasyon

Tüm ortak başarısızlık senaryolarını kapsayan bir adım kurtarma runbook yazın:

  • [FONT:0) Tek konteyner kazasından ve yeniden başlatma[Dönetici: 1) orkestrasyon kontrolörlerini kullanın; manuel müdahale.
  • [FONT:0]Volume yolsuzluk[[Dönemli konteyneri durdurun, en son arşivden hacmi geri yükleyin ve yeniden başlayın.
  • [FONT:0] Başarısızlık[Dönem: 1) Hayır, yeniden yükleme Docker ve yenidenschedule konteynerleri (veyachestrator bunu idare eder).
  • [FONT:0)Complete küme veya bölge kaybı) - Orta bir bölgede yeni bir küme inşa etmek, IaC (Terraform, Pulumi), geri yükleme hacmi yedeklemeleri ve yapılandırlar, sonra uygulamayı CI/CD ile dağıtın.

Kurtarmanın çoğu mümkün olduğu kadar Automate. Docker ağlarını yeniden kurmak için Ansible gibi senaryolar veya araçları kullanın, hacimleri toplayın ve yeniden konteynerler. Hedef bir olay sırasında manuel karar vermeyi azaltmaktır.

Automating and monitoring Backups

CronBased Otomasyon

Ev sahibinin cron daemon veya sistemli zamanlayıcılarını kullanarak program yedeklemeleri. Tipik bir yedekleme senaryosu, tüm çalışan konteynerleri üzerinde çalışan bir Docker host işi olarak çalışır, hacim topları tanımlar ve uygun yedeklemeyi gerçekleştirir.Gerekli yedeklemeler veya yapılandırma dosyası kullanın.

0 2 * * * /usr/local/bin/docker-backup-volumes.sh && /usr/local/bin/docker-backup-images.sh

Senaryonun merkezi bir yere giriş yaptığını ve başarısızlık hakkında bir bildirim gönderir (örneğin, Slack, e-posta veya PagerDuty aracılığıyla).

Özelleştirilmiş Backup Tools

Birkaç açık kaynak araçları Docker yedekleme otomasyonu basitleştirir:--

  • [FONT:0]docker-backup – scripts, Docker ile birlikte hacimleri ve görüntüleri geri döndürdü.
  • [FONT:0)BorgBackup - Docker hacimleri ile iyi çalışan şifreli yedekler.
  • [FONT:0]restic[Dönetici:0)[Dönetici:0)[Dönetici[Dönetici: 1 ) – Herhangi bir POSIX-kompli dosya sistemi geri yüklemeye destek, yerleşik şifreleme ve bulut depolama geri uçları ile.
  • [FONT:0)Velero[Dönemli Heptio Ark) - Kubernetes yedekleme ve geri yükleme, iş yükleri, kalıcı hacimler ve küme kaynakları kapsayan.

Takip Et Backup Health Health Health

Backups, başarılı olup dinlenilemeyecekleri için sadece değerlidir. Aşağıdaki ölçümleri izleyin:

  • [FONT:0)Exit kodu[[[Döneticileri)[Dönder:0)
  • [FONT:0]Son yedeklemenin Agesi[[Dönetici: 1 ) - bir hacim beklenen aralığın iki katında desteklenmediğini uyarı.
  • [0]Size göre, [Dönetici:0)[Dönetici:0)
  • [FONT:0]Restore test sonuçları [[Dönetici:0)[Dönetici 1] - bütünlüğü doğrulamak için izole bir ortamda periyodik geri yüklemeler çalıştırın.

Bu kontrolleri mevcut izleme yığınınıza entegre edin (Prometheus, Datadog, Nagios) gerçek zamanlı bir yedekleme sağlığı görüşü almak için.

Kurtarmanızın Yeteneklerini Test Etmek

Disk üzerinde yedekler yeterli değil - çalışmalarını kanıtlayan gerekir[Dönetici:0)En az çeyrekte otomatik geri yükleme testleri otomatik olarak geri yükleme testleri en az bir kez. For Docker Compose ortamları için, bir test senaryosu yaz:

  1. Yeni bir Docker ev sahibine başlayın (veya ayrı bir VM).
  2. En son Dockerfiles'i kur ve görüntüler inşa ediyor veya yedek arşivlerden gelen görüntüler.
  3. Geçici hacimlere hacim yedekleri geri yüklemeler.
  4. Uygulama yığınını başlatın ve duman testleri (örneğin API endpoint 200 döndürür).
  5. Bu verilerin bütünlüğüne sahip olduğunu kontrol edin (örneğin, geri yükleme veritabanında bir test kaydı var).

Kubernetes için, Velero'nun test yeteneklerini veya bir CI boru hattını kullanarak bir geri yüklemeyi ve geçerliliği çalıştırın. Sonuçlar ve bunları RPO / RTO varsayımlarını güncellemek için kullanın.Eğer bir geri yükleme testi başarısız olursa, hemen araştırma yapın - bu, veri kaybına karşı son savunma hattınızdır.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Docker'in kusursuzluğu ve ephemerality gelişim için güçlü, ancak her ikiyüzlülük de yedekleme ve felaket kurtarmaya disiplinli bir yaklaşım talep ediyorlar. - Endişelenmek için hacimleri uygun tutarlı yöntemlerle, görüntüleri kod veya ihracat arşivleri olarak depolamak, çok yönlü dosyalar olarak yapılandırmak ve planlamak - her ikiniz de güvenli bir şekilde geri yüklemeniz gerekir.