Citrix Xen Sanal Makinelerini Xen-pocalypse (Bash) ile Nasıl Yedeklersiniz?
Citrix Xen Sanal Makinelerinizi (VM'ler) yedeklemeniz gerekti mi, ancak bunu yaparken bankayı kırmak istemediniz mi? HTG, Xen-pocalypse ile sadece sizin için bash betiğine sahiptir.
Özel ve Hotfortech içinde sıkışmış h.koppdelaney tarafından resim.
Citrix Xen'deki güzel şeylerden biri, özelliklerinin çoğunun ücretsiz ücret Bununla birlikte, “Otomatik VM koruma ve kurtarma” özelliğini istiyorsanız, “Advance” lisansı için ödeme yapmaya başlamanız gerekir. O zaman bile, yalnızca Active Directory, Veritabanları ve Etc gibi birçok iş yükü türü için yeterli olmayan disk düzeyinde yedeklemeler için ödeme yapıyorsunuzdur. RAM içeriği de dahil olmak üzere makine durumu. Ancak, bu özellik daha da pahalı olan “Enterprise” ve “Platinum” basımlarının bir parçasıdır. HTG'deki gerçek bir yedekleme yazılımının değerini reddettiğimizden değil, ancak sıkı bir bütçeniz varsa ve yedekleme işlemi için bir süre durmamanın sakıncası yoksa, Xen-pocalypse 'in kusursuz bir çözüm olduğunu düşünebilirsiniz. bütçe taahhüdünü yapmadan önce.
genel bakış
“Kullanım Durumu”: Yedekleme gerektiren birkaç sanal makineniz var. Sağ tıklama kullanarak “Xen Center” dan “bir VM'i kapatmak ve bir dosya olarak dışa aktarmak” iyi çalışır, ancak bu işlemin otomatik olarak ve bir zamanlamada gerçekleşmesini istiyorsunuz. Bu Bash betiği, görevlerini yerine getirmek için “XE” komutunu kullanır. XE, “Xen Center” da “sağ tıklamaları” vermek için otomatik olarak eşdeğer olan Xen komut satırı arayüzüdür (CLI). Senaryoyu “zamanlama” kısmını sağlayacak olan Cron'dan arayacağız. En basit şekliyle, yedekleme akışı:
- Hedef VM'yi kapatın.
- Sanal Makineyi bir dosya olarak yedekleme konumuna aktar.
- Sanal Makine açılmışsa, yedekleme başlamadan önce tekrar açılacaktır..
Hadi çatlayalım :)
Senaryoyu al
Xen-pocalypse, düzenli git yöntemleri kullanılarak github'tan serbestçe elde edilebilir. Bununla birlikte, eğer git içinde henüz bilgili değilseniz, zip dosyasını bu linkten alabilirsiniz. Komut dosyasının Xen sunucularınızdan birinde çalışması gerektiğinden, yürütme izinlerinin korunabilmesi için orada ayıklamanız gerekir..
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master
Yukarıdakilerin işe yaramasına rağmen, gelecekteki güncellemelerden faydalanabilmeniz için GIT yöntemini kullanmanız önerilir..
SendEmail'i alın (isteğe bağlı)
SendEmail perl programı hakkında geçmişte yazdık, bu yüzden burada tekrar etmeye gerek yok. Bunu söylemek yeterli, Linux'ta Windows'ta olduğu gibi çalışıyor.
E-postayı etkinleştirmek isteğe bağlı olsa da, komut dosyası şunları yapabileceği için şiddetle önerilir:
- Çalışmaya başladığında ve bitmesi konusunda sizi bilgilendirir.
- Algıladığı ve işleyebildiği hatalar konusunda sizi uyarır.
- Alan sorunlarından dolayı yedekleme diskalifikasyonlarını bildirin. (İstenmiyorsa bu davranış devre dışı bırakılabilir)
Xen sunucusuna indirin ve ayıklayın.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz gönder
Çıkardığınız yeri not alın. Ayarlar dosyası için buna ihtiyacınız olacak.
Etiketleri Tanımlama
Citrix Xen, filtreleme yetenekleri için “Özel Alanlar” ı yapılandırma yeteneği sağlar. Alanları oluşturacağız ve bunları Xen-pocalypse tarafından kullanılan bilgilerle dolduracağız. Xen-pocalypse, yedekleme için etiket adını ve ana-çocuk ilişkilerini belirleyen 3 kontrol TAG'ı tanır. Dosya giriş yöntemini kullanmak istemiyorsanız, en azından yedek etiket adı alanı oluşturmalısınız..
Bunu yapmak için, sunucunun veya hatta bir VM'nin özelliklerini açın. Gezinti bölmesinde “Özel Alanlar” ı seçin.
Bir ilişkiyi ilk kez tanımlıyorsanız (yukarıdaki örnekte olduğu gibi), verileri girmek için hiçbir alanınız olmaz, bu yüzden onları oluşturmanız gerekir. Bunu yapmak için, açılan iletişim kutusundaki “Özel Alanları Düzenle” üzerine tıklayın, “Ekle…” üzerine tıklayın.
Üç (3) “Metin” tipi alan oluşturun. Biri “BackupTAG”, diğeri “Ebeveyn” ve “Çocuklar” olarak adlandırılacak..
Not: Özel alanların adları, komut dosyasına "zor şekilde kodlanmıştır", bu nedenle ilgili kodu da değiştirmediğiniz sürece yukarıdaki yazımdan sapmamalısınız.
Tüm alanlar oluşturulduktan sonra görmelisiniz:
Pencereyi kapatın. Şimdi aşağıdaki resimde olduğu gibi doldurmanız gereken “BackupTAG”, “Parent” ve “Children” alanlarına sahip olmalısınız..
Şimdi yapmanız gereken tek şey, hangi VM'lerin hangi BackupTAG'a ait olduğunu belirlemek..
Örneğin, senaryonun büyüdüğü şirkette, Atlassian ürün VM'lerimiz için bir takvim ve bazılarının sadece aylık olarak yedekleneceği bir program, Perşembe ve Cuma günleri haftalık olarak yedeklenecek VM'lerimiz vardı. Böylece genel bakışımız şöyle görünüyordu:
Örneğin, “haftalık-fri” nin “BackupTAG” “Özel Alan” alanına girdiğimiz metin olduğu yer. Düzgün ha? :)
Ebeveynler ve Çocuklar (isteğe bağlı)
Bu senaryonun asıl güzelliği, “ebeveyn” den “çocuk” ilişkilerini desteklemesidir. Yani, ebeveynden önce kapatılacak ve yedeklenecek bir “çocuk” VM listesi ayarlamak mümkündür ve bu çocuklar yalnızca ebeveyn yedeklemesini tamamlayıp geri döndüğünde açılacaktır. üzerinde. Bu, ana VM'in kapatılmasının çocuktaki hizmetin kullanılamaz duruma gelmesine neden olacağı durumlarda faydalıdır. Böyle bir şey, çocuk VM'deki hizmetin iki kez kullanılamayacağı, bir kez çocuğun yedekleme işlemi için ve bir kez ebeveynin için kullanılamayacağı anlamına gelir. Bu ilişkiyi oluşturmak bu sorunun üstesinden gelir.
Örneğin, tüm Atlassian VM'lerimiz, yedeklenecek şekilde ayarlanmış tek bir DataBase (DB) VM kullandılar. Böylece, DB VM'nin diğer VM'ler için bir “Ebeveyn” olduğunu belirterek, uygun bir kapatma -> yedekleme -> başlatma sırası sağlanabilir..
Bu yazının yazıldığı sırada, bu işlevin birkaç uyarısı vardır:
- Böyle bir ilişkiye sahip olan VM'lerin adları boşluk içeremez. VM adlarınızdaki boşlukları kaldırmanız gerekecek, çünkü aşağıdaki örnekte olduğu gibi boşlukla ayrılmış olacaklar.
- Sadece bir ebeveyn olabilir. Birden fazla tasarım yapılması bile planlanmadı, testten söz etme.
Bu ilişkiyi oluşturmak için, VM'nin özelliklerine gidin. Eğer bu bir “ebeveyn” ise, çocuklarının kim olduğunu ve bu bir “çocuk” ise, ebeveyninin kim olduğunu yazın. Örneğin:
Not: Bir Çocuğa bir Ebeveyn atamamak, çocuğun ebeveyni hazır olmadan başlamasına neden olabilir ve iki kez yedeklenmesine neden olabilir.
DOSYA yöntemi (isteğe bağlı)
Tarihsel nedenlerden dolayı, Xen-pocalypse ayrıca VM'lerin listesinin bir metin dosyası olarak yedeklenmesini de destekler. “Kod” hala orada olmasına rağmen, işlevsellik TAG yönteminden oldukça düşüktür ve bu nedenle önerilmemektedir. Bununla birlikte, liste yöntemini bir nedenden dolayı kullanmayı tercih ederseniz, aşağıdaki kısıtlamalar geçerlidir:
- VM'lerin adları boşluk veya özel karakter içeremez.
- Satır başına yalnızca bir VM adı olabilir..
- Boş satırlara izin verilmiyor.
Listeyi oluşturmak için, VM'nin adını Xen merkezinden kopyalayın veya bir Xen ana bilgisayarında yürütün:
xe vm listesi | grep ad etiketi | awk
'$ 4 yazdır | çeşit
Yukarıdaki listeyi normal bir metin dosyasına kopyalayın.
Yedekleme yeri
Citrix Xen'de rastgele dolaşırken, UUID'in SR'nin benzersiz tanımlayıcısı olduğu “/ var / run / sr-mount /% UUID%” altında Depolama Depolarının (SRs) kullanılabileceğini buldum. GUI'den elde edildi.
Bu, montajı istenen yedekleme konumuna oluşturmak için normal “Sonraki -> Sonraki -> Son” sihirbazını kullanabileceğimiz anlamına gelir ve komut dosyasının bu yolu kullanmasını sağlayabilirsiniz (komut satırından montaj ile uğraşırken) bu kılavuzun kapsamı dışında.
Yeni bir "mount" oluşturmak için sunucu adına sağ tıklayın ve Yeni SR'yi seçin..
Bu örnekte, Xen'i bir Windows paylaşımına işaret edeceğiz, bu nedenle “Windows Dosya Paylaşımı (CIFS)” öğesini seçin:
İleriyi Tamamla -> İleri -> Son.
SR'nin UUID'sini edinin
Bir SR'nin UUID'sini edinmek için, Xen Center'daki ismine tıklamanız ve “Genel” sekmesine gitmeniz yeterlidir..
UUID'yi kopyalamak için, sağ tıklayın ve bir "kopya" seçin.
Bu bilgi elinizde iken, ayar dosyasını düzenlemeye hazırsınız.
Ayarlar dosyasını yapılandırın.
Xen-pocalypse projesi bir “ayarlar” dosya şablonu ile birlikte gelir. Bu şablon, kurulumunuzu yansıtacak şekilde düzenlenmeli ve komut dosyasına ilk argüman olarak iletilmelidir. Ayarlar dosyası aşağıdakileri belirtir:
yöntem yedeklenecek VM'lerin elde edilmesi için - Varsayılan yöntem TAG'dir. Bunu FILE olarak değiştirebilirsiniz, ancak bu önerilmez.
Konum Yedekleme hedefinin hedefi - Kılavuzu bu noktaya kadar izlediyseniz, yalnızca% UUID% 'i SR ile değiştirmek zorundasınız..
SendEmail'in konumu - E-postayı etkinleştirmeyi seçtiyseniz, perl dosyasını buradan çıkardığınız yere girmeniz gerekir..
Email detayları - Yine, e-postayı etkinleştirdiyseniz, aşağıdaki gibi ayrıntıları tanımlamanız gerekir: Kime, Kimden, Sunucu Adı / IP ve vb..
Sıkıştırma - Bu, varsayılan olarak “Hayır” olarak ayarlanmıştır, çünkü daha küçük bir yedekleme dosyası oluştururken, yedekleme prosedürünün de oldukça uzun bir süre çalışmasına neden olur..
Boş alanı kontrol et Hedefte - Bu komut dosyası, VM'nin yedeğini almanın yedekleme yerinin boş alanının 10 GB altına düşmesine neden olmayacağını kontrol edecektir. Bu, yalnızca çok büyük bir VM yerine en çok VM'nin yedeklenmesini sağlamak için yapılır. Hesaplama, VM ile ilişkilendirilmiş tüm HD'lerin toplamı brüt disk büyüklüğü kullanılarak yapılır..
Hata ayıklama - Varsayılan ayar, hata ayıklamanın “0” (sıfır) değeriyle kapatılmasıdır. Bunu açmanız gerekmez, ancak yaparsanız, sorun giderme bölümünde daha fazla bilgi not edilir..
Yürütme / Planlama
En basit haliyle, bir Xen-pocalypse çağrısı şöyle olurdu:
./Xen-backup.sh settings.cfg haftalık-cs
Yukarıdaki durumda, komut dosyasını ve ayarlar dosyasını içeren dizinin içindeyiz. Senaryonun arayacağı “Tag” ise “haftalık-kurnaz”..
Yukarıda belirtildiği gibi, yürütmeyi planlamak için Cron kullanacağız. Konfigürasyona girmeden önce, şiddetle tavsiye edilir Xen sunucunuzda önceden kurulmuş SSMTP paketini yapılandırdığınızdan Bu isteğe bağlı bir adım olsa da, bunu yapmak size geri yıkama kollektörü verecektir. Böyle bir “geri yıkama kollektörüne” sahip olmak sizi betiğin yapamadığı şeyler konusunda uyarabilir.
Düzenleyerek daha fazla cron düzenlemesine girin:
crontab -e
Yukarıdaki talimatları uyguladıysanız ve Cuma günleri 18:01 (18:01) de zamanlanmış bir yedekleme eklemek istiyorsanız, aşağıdakileri girin:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg haftalık-cs
Yukarıdakiler, betiğinizin ve ayarlarınızın her ikisinin de “/ root / Xen-pocalypse-master /” altında olduğu varsayımıyla doğru.
Sorun giderme
Senaryoyu mümkün olduğunca kolay ve kusursuz hale getirmek için çok çaba sarf etmeme rağmen, “Dünya daha büyük bir laboratuvardır”. Aşağıdaki bilgiler sorunlarınızın kaynağının ne olduğunu belirlemenize yardımcı olabilir.
İlerleme
Bu astarı, devam etmekte olan tüm işleri hızlı bir şekilde “izlemek”, gerçekten de ilerleme gösterip göstermediklerini veya gerçekte sıkışıp kalmadıklarını görmek isteyebilirsiniz..
[-e / dev / null] iken; VM için "$ (xe görev listesi | grep uuid | awk 'print $ 5')" 'de yapın; xe task-param-get param-name = ilerleme = uuid = $ VM; uyku 1; yapılan; tamam
İzlemeyi durdurmak için “while döngüsü” frenlemek için Ctrl + C tuşlarını kullanın.
Günlüğü
Tüm "kayıt", komut dosyasını syslog mekanizmasında çalıştıran Xen sunucusu tarafından toplanır. Bu elbette ile izlenebilir:
daha az + F / var / log / mesajlar
“Xen-pocalypse” anahtar kelimesini arıyorsun..
Not: Citrix, sunucularının syslog'ları için iki (2) günlük saklama politikası belirlemiştir. Postmortemler için bunu aklınızda tutmak isteyebilirsiniz..
Hata ayıklama
Ayarlar dosya bölümünde belirtildiği gibi, hata ayıklamayı etkinleştirmek için bir yönerge vardır. Hata ayıklamayı etkinleştirmek, betiğin konsolda ayrıntılı günlük kaydı çıktısını almasına ve e-postaları göndermesine ve ilgili bayraklar ayarlanmadıkça dışa aktarımı gerçekleştirmesine neden olur. Olası bayraklar ayarlar dosya şablonunda belirtilir ve hata ayıklamak istediğinizi ayrıntılı bir şekilde tanımlamanıza olanak tanır.
Umarım hiçbir hata ayıklamaya gerek duymazsınız ve emeğimin meyvelerini toplarsınız :)
Thrust, adamım, bir numaralı decepticon olmak üzeresin ...