Kısıtlı Amazon EC2 Yedekleme Stratejisi (çok az veya hiç resim çekilemez mi?)


9

Benzer sorular yöneltildi, ancak EC2 kullanma anlayışımda bir şey eksik olup olmadığımı bilmek için koşullar altında ne önerileceğini bilmem gerekiyor.

Küçük bir girişim işlerini EC2 ağında çalıştırıyor ve benden yedekleme seçenekleri hakkında bazı tavsiyeler istedi. Şu anda kendi kendini finanse ediyorlar ve mümkün olduğunda maliyetleri kurtarmak için ellerinden geleni yapıyorlar. Sistemlerinin yapılandırmasını çok fazla araştırmadan, örnek olarak bir web sunucusu vereceğim; veritabanına sahip basit bir web sunucusudur. Ovmak onlar sunucu aşağı almak istemiyorum olmasıdır.

Kurulumu yapan kişi, veritabanının periyodik dökümlerini yapmaları ve S3'te depolamaları gerektiğine veya yapılandırma bilgilerini tutan belirli klasörleri yedekleyerek gerektiğinde Amazon'da yeni bir sunucu oluşturacak komut dosyaları oluşturmaları gerektiğine inanır. . Sunucunun anlık görüntülerini oluşturmanın boşa gideceğini, çünkü çok fazla disk alanı kapladığını ve aslında büyük veri dökümleri arasında veri çürümesi olacağını ve böylece anlık görüntünün hızlı bir şekilde modası geçmiş olacağını önerdi.

Benim düşüncem VM'nin bir anlık görüntüsünü almak ve daha sonra S3'te veritabanı ve mağazanın periyodik dökümlerini yapmaktı. EC2 örneğini kaybedeceklerse veya güncelleme gibi bir şey kullanılamaz hale getirirlerse, sunucuyu tamamen yeni bir örnek oluşturmak için sıfırdan başlamak yerine en son veritabanı dökümü ile nispeten hızlı bir şekilde yedeklemek için anlık görüntüyü kullanabilirler. yeni AMI.

Anladığım kadarıyla, bir EC2 örneğinin (veya EBS deposunun) anlık görüntüsünü almanın, durmak zorunda oldukları bir şey olan kesinti süreleri gerektireceği. Anlık görüntü çekildiğinde dosya sistemini tutarlı tutmak için sunucuyu kapatmanız gerektiğini de okudum. Henüz dengeleyicinin arkasında bir küme bulunmadığından, bunlar anlık görüntüleri içeren seçenekleri sınırlar.

Bilinmeyen bir Amazon olmadığı sürece sunucu oluşturmak için komut dosyaları oluşturmak, EC2'de ilişkili rolleriyle yeni sunucuları dağıtabilecek bir Şef veya Kukla sunucusu oluşturmayı içerir. Şu anda başlangıçta bu tür bir sunucuyu kanatlarda tutmak için fon yok ve şu anda bu kadar çok sunucuyu dağıtmaları gerekmiyor.

İdeal olarak, sanal bir dengeleyici veya Amazon'un dengeleyici hizmetinin arkasında bir dizi sunucu oluşturmak için finansmana sahip olacak, ardından güncellemeleri veya anlık görüntüleri gerçekleştirmek için sunucuları birer birer kaldıracaklardı. Şu anda güncellemeleri yapma konusunda endişeliyim çünkü veritabanının dökümlerini yapıyorsanız, bir sistem güncellemesinin uygulamalarının dayanacağı ve hizmetin çöktüğü bir kütüphaneyi değiştirmesi yardımcı olmaz.

Ayrıca başka bir seçenek, EBS birimi oluşturan, bağlayan bir komut dosyası çalıştırmak ve sunucuda EBS birimine dosya sistemi bilgilerinin çoğunu yakalamak için rsync gibi bir şey çalıştırmak sonra içeriği S3'e sıkıştırmak ve kopyalamak olduğunu varsayalım ve depolama maliyetinden tasarruf etmek için imha ettikten sonra, aksi takdirde tutarsız olabilecek uçuş verilerini yakalamak için bir veritabanı dökümü yapın. Bazı sunucuları için, veritabanı ihtiyaçları büyüdükçe geçici EBS birimlerine kaydetmek büyük olasılıkla gerekli olacaktır.

Ağ sistemlerini, Amazon'daki üretim sistemlerine uygulamadan önce güncellemelerin önceden test edilebileceği bir ortamda yeniden oluşturmak için bir VMWare korumalı alanı oluşturulmaktadır. Bir sistem güncellemesinin uygulamalarını öldürme olasılığını en aza indireceğini umuyorum.

Bu nedenle ... sistemde veritabanı ve uygulama sunucusu ile bir sunucuyu çalıştırmanın kısıtlamaları göz önüne alındığında, mümkün olduğunca kesinti süresine yakın olmamak (anlık görüntülerin kullanımını kısıtlamak ve yedekleme işlemini mümkün olduğunca "sıcak" yapmak ( sunucu aşağı çekmeden canlı oluşturulan), ben çalışma durumunda EC2 örneği bir anlık görüntü oluşturmak için bir zamanlama önermek için yanlış yolda mıyım ve oradan S3 kopyalamak için veritabanı dökümleri yapıyor? Takip etmek için daha iyi bir strateji var mı görüntüler kesinti süresi yaratacaksa bir sunucunun canlı bir yedek oluşturma?


2
Duruş sürelerine duyarlı ancak yalnızca bir sunucuda mı çalışıyorlar?
ceejayoz

1
Kümeleri yürütmek için finansman elde edene kadar, evet. Bir dengeleyicinin arkasında bir küme çalıştırmayı biliyorlar ve hedefliyorlar ... şu anda masada bir seçenek değil.
Bart Silverstrim

Amazon, örnek hatalarını beklemek için şiddetle uyarıyor. Önemli kesinti süresi ve bazı verilerin kaybı ne kadar pahalı olacak?
ceejayoz

Bazen durumun sizi ne kadar krediye çektiğinden dolayı yapmak zorundasınız, yerinde düzgün bir kurulum elde etmek için çalışıyorlar.
Bart Silverstrim

Yanıtlar:


18

Bu soru hakkında ilginç bir şey var - özellikle kesinti süresi fikri ile ilgili. Bir uygulama, kesinti süresine karşı hassassa, kurtarma süresinin de hesaba katılması gerektiği fikrinin bir parçasıdır. (Aşırı bir argüman olarak, bu yedeklemelere ihtiyaç duymamanız durumunda hiçbir yedekleme kesinti gerektirmez, bu durumda kesinti süresi sonsuza yaklaşabilir ).

EBS hakkında biraz

EBS hacimleri ve anlık görüntüleri blok düzeyinde çalışır - bunun sonucu, bir örnek çalışırken anlık görüntülerin EBS birimi kullanımda olsa bile çekilmesine izin verir. Bununla birlikte, anlık görüntüye yalnızca diskte bulunan (yani bir dosya önbelleğinde bulunmayan) veriler dahil edilir. Tutarlı anlık görüntüler fikrini doğuran ikinci sebep budur.

  • Önerilen yol, sesi ayırmak, anlık görüntü almak ve yeniden takmaktır - genellikle pratik değildir.
  • Bir sonraki en iyi seçenek yazma önbelleklerini diske temizlemeyi, dosya sistemini dondurmayı ve anlık görüntünüzü almayı içerir

Burada ilginç bir nokta, yukarıdaki her iki durumda da, anlık görüntünün yeniden bağlanması / çözülmesi ve diske yazmaya devam etmesi için anlık görüntünün bitmesini beklemeniz gerekmemesidir - anlık görüntü başlatıldıktan sonra verileriniz bu nokta ile tutarlı olacaktır. Genellikle bu, diskinizin yazma kilitli olduğu sadece birkaç saniye gerektirir. Ayrıca, çoğu veritabanı, disk üzerindeki dosyalarını makul bir şekilde yapılandırdığından - eklerin mevcut blokları minimum etkiye sahip olma şansı vardır - bu da anlık görüntüye eklenen verileri en aza indirir.

Yedekleme noktasını düşünün

EBS birimleri zaten bir kullanılabilirlik bölgesi içinde çoğaltılmıştır - bu nedenle yerleşik bir fazlalık derecesi vardır. Örneğiniz sona ererse, EBS birimini yeni bir örneğe ekleyebilir ve (tutarlılık eksikliğini geçtikten sonra) hariç tutulmuş. Birçok açıdan bu, EBS hacmini erişebilmeniz koşuluyla tutarsız bir anlık görüntü gibi yapar. Bununla birlikte, çoğu EC2 kullanıcısı muhtemelen 2011'in başından itibaren EBS hacimlerinin kademeli başarısızlıklarını hatırlıyor - hacimler birkaç gün boyunca erişilemedi ve bazı kullanıcılar da veri kaybetti.

raıd1

Bir EBS diskinin arızalanmasına karşı koruma sağlamaya çalışıyorsanız (gerçekleşir), bir RAID1 kurulumunu düşünebilirsiniz. EBS hacimleri blok cihazlar olduğundan, istediğiniz yapılandırmaya ayarlamak için mdadm'u kolayca kullanabilirsiniz. EBS birimlerinizden biri spesifikasyona göre performans göstermiyorsa, manuel olarak başarısız olması (ve daha sonra başka bir EBS birimiyle değiştirilmesi) kolaydır. Tabii ki, bunun dezavantajları var - her yazma için daha fazla zaman, değişken performansa karşı daha fazla duyarlılık, G / Ç maliyetini (performans açısından akıllıca değil) ikiye katlayın, daha yaygın bir AWS hatasına karşı gerçek bir koruma yok (geçen yıl yaygın bir sorun vardı) kilitli durumdaki EBS birimlerinin ayrılmaması) ve elbette, diskin arıza durumunda tutarsız durumu.

S3FS

Belirli uygulamalar için bir seçenek (kesinlikle veritabanları için DEĞİLDİR) S3'ü yerel bir dosya sistemi olarak monte etmektir (örn. S3fs aracılığıyla). Bu yavaştır, bir dosya sisteminden bekleyebileceğiniz bazı özelliklerden yoksundur ve beklendiği gibi davranmayabilir (nihai tutarlılık). Bununla birlikte, yüklenen dosyaları örnekler arasında kullanılabilir hale getirmek gibi basit bir amaç için, liyakat gösterebilir. Açıkçası iyi okuma / yazma performansı gerektiren herhangi bir şey için değil.

MySQL bin günlüğü

MySQL'e özgü bir başka seçenek bin-log'un kullanımı olabilir. Bin günlüğünüzü depolayacak ikinci bir EBS birimi ayarlayabilir (eklenen yazma işlemlerinin veritabanınız üzerindeki etkisini en aza indirmek için) ve bunu, aldığınız veritabanı dökümleriyle birlikte kullanabilirsiniz. Bunu, performansın tolere edilebilir olması durumunda gerçekten hak sahibi olabilen s3fs ile bile yapabilirsiniz (rsync, s3fs'yi doğrudan kullanmaya çalışmaktan daha iyi olur ve kesinlikle yapabildiğinizi sıkıştırmak isteyeceksiniz).

Yine de, amaç fikrine geri dönüyoruz. Yukarıdaki önerilerle neler olacağını düşünün:

  • EBS hacimlerine erişilemiyor:
    • RAID1 - işe yaramaz, çünkü verilere ulaşamazsınız
    • bin-log - S3'e aktarmazsanız işe yaramaz - muhtemelen bir gecikme
  • Eşgörünüm beklenmedik şekilde sonlanıyor:
    • RAID1 - diskleriniz kullanılabilir, ancak tutarlı değil, veritabanınız kendi başına tutarsızlıktan kurtulabilir
    • bin-log - son birkaç etkinliği incelemeniz gerekebilse de verilerinize erişilebilir olmalıdır
  • Birisi DROP DATABASE'i root olarak çalıştırır:
    • RAID1 - var olmayan bir veritabanının iki mükemmel kopyası var
    • bin-log - olayları komuttan hemen önce tekrar oynatabilirsiniz, bu yüzden iyi olmalısınız

Yani gerçekten, RAID1 çoğunlukla işe yaramaz ve bin günlüğü çok uzun sürer - her ikisinin de belirli koşullar altında değeri olabilir, ancak fikir yedeklemesinden uzaktır.

Anlık

Anlık görüntülerin farklı olduğunu ve yalnızca veri içeren (ve sıkıştırılmış) gerçek blokları saklamak önemlidir. Bir EBS biriminden farklı olarak, 20GB'lık bir biriminiz varsa, ancak yalnızca 1GB kullanıyorsanız, yine de 'sağlanan' depolama (20GB) için ücretlendirilirsiniz. Anlık görüntü ile yalnızca kullandığınız kadar ücretlendirilirsiniz. Anlık görüntüler arasında veri değişmezse, (teorik olarak) herhangi bir ücret alınmaz. (Anlık görüntüler PUTS / GETS ve kullanılmış depolama alanı için ücretlendirilir).

Bir yana, uygulama verilerinizin (veritabanları dahil) kök biriminizde (zaten ayarlamış olabilirsiniz) saklanmamasını şiddetle tavsiye ederim. Avantajlardan biri, umarım, kök hacminizin minimum bir değişiklik görmesidir - bu, anlık görüntülerinin maliyeti ve kullanım kolaylığını azaltan daha az sıklıkta (veya minimum bir değişime sahip olabileceği) anlamına gelir.

Ayrıca, eski anlık görüntüleri istediğiniz zaman silebileceğinizden bahsetmek de önemlidir - farklı olmalarına rağmen diğer anlık görüntüleri etkilemezler. Bununla birlikte, bir anlık görüntüye atanan her blok, yine de o bloğa başvuran bir anlık görüntü kalmayana kadar bırakılmaz.

Periyodik dökümlerle ilgili sorun öncelikle dökümler arasındaki süredir (muhtemelen MySQL'in bin-log'u kullanılarak ele alınmaktadır) ve aynı zamanda iyileşmenin zorluğudur. Büyük bir dökümü içe aktarmak ve bir bin günlüğündeki tüm olayları yeniden oynatmak zaman alır. Ayrıca, bir döküm oluşturmak performans sonuçları olmadan değildir. Muhtemelen, bu tür dökümler muhtemelen bir anlık görüntüden çok daha fazla depolama gerektirir. Bir EBS hacminin sadece veritabanları ve çoğu durumda tercih edilebilecek anlık görüntü için ayarlanması (bir anlık görüntü çekmenin de biraz performans etkisi olduğu anlamına gelir).

Anlık görüntülerin ve EBS hacimlerinin güzelliği, diğer durumlarda kullanılabilmeleridir. Örneğin önyükleme yapamazsa, sorunu tanılamak ve gidermek veya yalnızca verilerinizi kopyalamak için kök birimini başka bir örneğe ekleyebilirsiniz ve kök birimlerini yalnızca birkaç dakikalık kesinti süresi ile değiştirebilirsiniz (örneği durdurun, ayırın kök birimi, yeni bir kök birimi ekleyin, örneği başlatın). Aynı fikir, verilerinizin ikinci bir EBS biriminde bulunması için de geçerlidir. Temel olarak, özel AMI'nizden yeni bir örnek oluşturur ve mevcut EBS biriminizi buna bağlarsınız - arıza süresini en aza indirmeye yardımcı olur.

(Biri iki EBS birimi kullanarak aynı sunucuda (Master-slave) MySQL'in iki kopyasını kurabileceğinizi iddia edebilir (ve muhtemelen bunu tavsiye etmem) ve sonra bir anlık görüntüsünü almak için slave'inizi kapatabilirsiniz EBS hacmi - kesinti olmadan tutarlı olacaktır - ancak performans maliyetleri muhtemelen buna değmez).

AWS, otomatik olarak ölçeklendirmeye sahiptir - bu, sabit sayıda örneği koruyabilir (bu sayı 1 olsa bile) - bir anlık görüntüden dağıtabilirsiniz - bu yüzden anlık görüntünüz kullanışlı değilse, öncül çok fazla kullanılmaz .

Başka bir çift nokta - tek bir anlık görüntüden istediğiniz kadar çok örnek dağıtabilirsiniz (herhangi bir zamanda yalnızca tek bir örneğe eklenebilen bir EBS biriminin aksine). Ayrıca, EBS birimlerinin kullanılabilirlik bölgesi içinde kullanımı kısıtlanırken, anlık görüntüler bir bölge içinde kullanılabilir.

İdeal olarak, bir anlık görüntü ile, sunucunuz kapanırsa, yalnızca son anlık görüntüyü kullanarak yeni bir tane başlatabilirsiniz - özellikle kök hacminizi verilerinizden ayırırsanız, kötü bir güncelleme minimum kesinti süresine neden olur ( verilerinizi içeren EBS birimini aktarın ve tutarsızlık nedeniyle bozulabilecek her şeyi korumak için anlık görüntüsünü alın).

Bir yan not olarak, Amazon, son anlık görüntüden bu yana değiştirilen veri miktarı ile EBS hacimlerinin başarısızlık oranının arttığını belirtiyor.

Son öneriler

  • Anlık görüntüler kullanın - harikalar - arıza süresini nedenlerinden çok daha fazla azaltırlar
  • Veriyi ve kök birimini ayırın, hatta veritabanlarını kendi birimlerine bile koyun ve gerekirse güncellemelerden önce anlık görüntü alın
  • Mümkün olduğunca sıcak kalmak için bin günlüğünü kullanın - bunu (sıkıştırılmış) S3'e yükleyin
  • Verileri örnekten gerçekten aldığınızdan emin olun (veriler bir EBS biriminde bozulmamış olsa bile, birimin kendisine geçici olarak erişilemeyebilir).

Önerilen Kaynaklar:

(Çok fazla yazdığımı düşünüyorum, ama yeterince söylemedim - ama umarım okumaya değer bir şey bulursunuz).


Harika bilgi ve EBS Anlık Görüntülerinin nasıl çalıştığına dair açıklama.
bwight

Evet, orada harika bilgiler vardı. Her iki cevap (özellikle yorumlarla birlikte) yardımcı oldular, her ikisi de kabul edebilseydim!
Bart Silverstrim

4

Canlı bir EBS biriminin anlık görüntüsünü almak mümkündür , ancak anlık görüntü başlatılırken dosya sisteminin tutarlı bir durumda olduğundan ve sonra dondurulduğundan emin olmalısınız. Kesinlikle mümkündür ve kendi yedekleme çözümümüzün temeli olsa da, tüm dosya sistemleri buna izin vermez.

EBS anlık görüntüleri de sadece değiştirilen veriler için ücret aldıkları için oldukça ucuzdur ve veri ücretleri kendi içinde ve dışında çok makuldür. Bununla birlikte, bunun bir blok seviyesi değişikliklerine dayandığını, bu nedenle oldukça hızlı bir şekilde değişebileceğini unutmayın. Bu, anlık görüntüler arasında da geçerlidir, yalnızca anlık görüntüler arasında değiştirilen veriler ücretlendirilir. Maliyetler hakkında bir fikir vermek için, anlık görüntü depolama için ayda <10 ABD doları ödüyoruz ve günlük anlık görüntüleri alıyoruz, son 7 günlük ve son ayların haftalık anlık görüntülerini koruyoruz ve bu şemayı takip eden 2 sunucumuz var (~ 20 anlık görüntü, 20 GB sabit sürücüler).


Sunuculardaki dosya sistemi ne yazık ki xfs değil. Her ne kadar XFS olarak biçimlendirilmiş bir EBS birimi monte edip bunu örneğe iliştirip, var olan verileri o bağlama noktasına taşıdılarsa yapılabilirdi. Şu an kesinti için gideceklerini ve bunun için ücretler ekleyeceklerini sanmıyorum.
Bart Silverstrim

@Bart: Bir veya iki saatlik kapalı kalma süresine katlanmak istiyorsanız, mevcut bir anlık görüntüyü XFS'ye geçirmek mümkündür. Ayrıca, bunun yerine bu dosya sisteminde iseniz ext4'ün tutarlı bir anlık görüntü çalışması yapmak için gerekli olan şeyleri desteklediğine inanıyorum.
Matthew Scharley

Yanıtın da belirttiği gibi, hizmetleri durdurmadan veritabanını durdurmadan bir anlık görüntü alabilirsiniz. Anlık görüntü yaparken tutarlı olmayabilme olasılığı vardır , ancak bu durumda yine de veritabanı dökümü olur.
Javier Constanzo

@javierConstanzo - Canlı bir anlık görüntü almayı ve tutarsız durumu riske atmayı ve dosya sisteminin tutarlılığındaki olası karışıklıkları düzeltmek için veritabanı dökümlerini kullanmayı mı öneriyorsunuz?
Bart Silverstrim

@Bart: Anlık görüntülerin alacağınız kadar 'sıcak' bir yedek olduğunu ve ayrıca rsync veya benzerlerinden çok daha iç tutarlı olduğunu da öneririm. Diğerleri aktarırken dosyalar değişebilir, bu da bazı durumlarda işe yaramaz bir yedekle sonuçlanabileceğiniz anlamına gelir. Kişisel olarak, anlık görüntülerin çalışmasını sağlamak için dosya sistemlerini (gerekirse) değiştirmek için birkaç saatlik kesinti süresi yemenizi öneririm. EBS anlık görüntülerinin bir yedekleme çözümünün ne kadar esnek olduğu şaşırtıcı, geri yüklemek için çalışan örneğinize monte edebilirsiniz.
Matthew Scharley

1

Zmanda Cloud Backup gibi ucuz ve ucuz bir yedekleme çözümüne ne dersiniz? Yaklaşık 6 sunucuyu ve 1 SQL Server'ı yedeklemek için kullanıyoruz ve ayda sadece 10 $. Verilerinizi kendinden imzalı bir sertifika ile şifreleyebilirsiniz ve verileri saklamak için s3 kullanırlar (böylece EC2'den yedekleme yapıyorsanız veri aktarım ücreti yoktur).


Bağlı mısın? Eğer EBS enstantanesi için ~ 1 $ / ay bahara çıkmayacaklarsa ...
ceejayoz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.