Pernahkah Anda perlu mem-backup Citrix Xen Virtual Machines (VMs) Anda tetapi tidak ingin merusak bank yang melakukannya? HTG hanya memiliki skrip bash untuk Anda dengan Xen-pocalypse.
Gambar oleh h.koppdelaney, Stuck di Custom dan Hotfortech.
Salah satu hal yang menyenangkan di Citrix Xen adalah banyak fiturnya bebas biaya. Dengan demikian, jika Anda menginginkan fitur "Perlindungan VM otomatis dan pemulihan", Anda harus mulai membayar untuk lisensi "Muka". Bahkan kemudian, Anda hanya membayar untuk cadangan tingkat disk, yang tidak cukup untuk banyak jenis beban kerja seperti direktori Aktif, Database & Dll. Untuk mengatasi ini, Anda mungkin ingin "Live snapshot memori dan kembali", yang dapat menyimpan seluruh keadaan mesin, termasuk isi RAM. Namun, fitur itu adalah bagian dari edisi "Perusahaan" dan "Platinum", yang bahkan lebih mahal. Bukannya kami di HTG mengabaikan nilai dari perangkat lunak cadangan yang sebenarnya, tetapi jika Anda pada anggaran yang ketat dan tidak keberatan beberapa downtime untuk operasi cadangan, Anda mungkin menemukan Xen-pocalypse menjadi solusi yang masuk akal. sebelum Anda membuat komitmen anggaran.
The "use case": Anda memiliki beberapa VM yang membutuhkan cadangan. "Mematikan VM dan mengekspornya sebagai file" dari "Xen Center" menggunakan klik kanan berfungsi dengan baik, tetapi Anda ingin proses ini terjadi secara otomatis dan sesuai jadwal. Skrip Bash ini menggunakan perintah "XE" untuk menjalankan tugasnya. XE adalah antarmuka baris perintah Xen (CLI), otomatis setara untuk mengeluarkan "klik kanan" di "Xen Center". Kami akan memanggil skrip dari Cron yang akan menyediakan bagian "penjadwalan". Dalam bentuk yang paling sederhana, aliran cadangan adalah:
Ayo dapatkan cracking :)
Xen-pocalypse dapat diperoleh dengan bebas dari github, menggunakan metode git biasa. Dengan demikian, jika Anda belum menguasai git, Anda dapat mengambil file zip dengan tautan ini. Karena skrip perlu dijalankan di salah satu server Xen Anda, Anda harus mengekstraknya di sana agar izin eksekusi dipertahankan.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master
Sementara hal di atas akan berhasil, Anda disarankan untuk menggunakan metode GIT, sehingga Anda dapat memperoleh manfaat dari pembaruan di masa mendatang.
Kami telah menulis tentang program perl SendEmail di masa lalu, jadi tidak perlu mengulangi di sini. Cukuplah untuk mengatakan, ia bekerja dengan cara yang sama di Linux seperti halnya pada Windows.
Meskipun mengaktifkan email adalah opsional, sangat disarankan karena skrip akan dapat:
Unduh ke server Xen dan ekstrak.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Perhatikan lokasi tempat Anda mengekstraknya. Anda akan membutuhkannya untuk file pengaturan.
Citrix Xen memberi Anda kemampuan untuk mengkonfigurasi "Custom Fields" untuk kemampuan penyaringan. Kami akan membuat Fields dan kemudian mengisinya dengan informasi yang digunakan oleh Xen-pocalypse. Xen-pocalypse mengenali 3 TAG kontrol yang menunjuk nama tag untuk cadangan dan hubungan induk ke anak. Jika Anda tidak berniat menggunakan metode input file, Anda HARUS membuat setidaknya bidang nama tag cadangan.
Untuk melakukan ini, buka server atau bahkan properti VM. Di panel navigasi, pilih "Bidang Kustom".
Jika ini adalah pertama kalinya Anda menentukan hubungan (seperti pada contoh di atas), Anda tidak akan memiliki bidang apa pun untuk memasukkan data, jadi Anda perlu membuatnya. Untuk melakukan ini, klik "Edit Bidang Kustom" di kotak dialog yang muncul, klik "Tambah ..."
Buat tiga (3) bidang jenis "Teks". Satu akan disebut "BackupTAG" dan yang lainnya "Induk" dan "Anak-anak".
catatan: Nama-nama bidang khusus, telah "dikodekan keras" ke dalam skrip, jadi Anda TIDAK HARUS menyimpang dari ejaan di atas, kecuali Anda mengubah kode yang relevan juga.
Setelah semua bidang dibuat, Anda akan melihat:
Tutup jendelanya. Sekarang Anda harus memiliki kolom "BackupTAG", "Induk", dan "Anak-anak" untuk diisi, seperti pada gambar di bawah.
Sekarang yang harus Anda lakukan hanyalah menunjuk VM mana yang termasuk dalam "BackupTAG".
Sebagai contoh, di perusahaan tempat skrip ditumbuhkan, kami memiliki VM yang akan dicadangkan mingguan pada hari Kamis dan Jumat, jadwal untuk VM produk Atlassian kami dan beberapa yang akan dicadangkan hanya setiap bulan. Jadi gambaran umum kami tampak seperti:
Di mana misalnya "mingguan-fri" adalah teks yang kami masukkan ke "BackupTAG" "Bidang Kustom". Rapi ya? :)
Orangtua & Anak-anak (opsional)
Keindahan nyata dari skrip ini adalah bahwa ia mendukung hubungan "orang tua" dengan "anak". Yaitu, dimungkinkan untuk menetapkan daftar VM “anak” yang akan dimatikan dan dicadangkan sebelum orang tua, dan bahwa anak-anak ini hanya akan dihidupkan kembali setelah orang tua menyelesaikan cadangannya dan telah dikembalikan di.Ini berguna dalam kasus di mana mematikan VM induk akan menyebabkan layanan pada anak menjadi tidak tersedia. Hal seperti itu berarti layanan pada VM anak tidak akan tersedia dua kali, satu kali untuk proses pencadangan anak dan satu kali untuk orang tua. Menciptakan hubungan ini mengatasi masalah itu.
Sebagai contoh, semua dari Atlassian VM kami menggunakan VM DataBase (DB) tunggal, yang juga diatur untuk dicadangkan. Jadi dengan mencatat bahwa DB VM adalah "Induk" untuk VM lain, urutan shutdown yang tepat -> cadangan -> startup, dapat dipastikan.
Pada saat penulisan ini, fungsi ini memiliki beberapa peringatan:
Untuk membuat hubungan ini, masuki properti VM. Jika ini adalah "orang tua", tulislah siapa anak-anaknya dan jika ini adalah "anak", tulislah siapa orang tuanya. Sebagai contoh:
Catatan: Tidak menunjuk Orangtua untuk seorang anak dapat menyebabkan anak tersebut dimulai sebelum induknya siap, dan dapat menyebabkannya dicadangkan dua kali.
Untuk alasan historis, Xen-pocalypse juga mendukung daftar VMs untuk dicadangkan sebagai file teks. Sementara "kode" masih ada di sana, fungsinya sangat inferior dengan metode TAG dan oleh karena itu tidak disarankan. Dengan demikian, jika Anda lebih suka menggunakan metode daftar karena beberapa alasan, pembatasan berikut berlaku:
Untuk menghasilkan daftar, salin nama VM dari pusat Xen, atau jalankan pada host Xen:
xe vm-list | label-nama grep | awk
'cetak $ 4' | menyortir
Salin daftar di atas ke file teks biasa.
Sementara secara acak mengaduk-aduk Citrix Xen, saya telah menemukan bahwa Storage Repositories (SRs) tersedia untuk digunakan di bawah "/ var / run / sr-mount /% UUID%" di mana UUID adalah pengidentifikasi unik dari SR, yang dapat diperoleh dari GUI.
Ini berarti kita dapat menggunakan wizard "Next -> Next -> Finish" biasa untuk membuat mount ke lokasi backup yang diinginkan, dan kemudian memiliki skrip yang menggunakan path tersebut (sebagaimana disarankan untuk mengacaukan pemasangan dari baris perintah), tetapi melakukan demikian di luar lingkup panduan ini.
Untuk membuat "mount" baru, klik kanan nama server dan pilih SR Baru.
Dalam contoh ini kita akan mengarahkan Xen ke share windows, jadi pilih "Windows File Sharing (CIFS)":
Lengkapi Berikutnya -> Berikutnya -> Selesai.
Dapatkan UUID SR
Untuk mendapatkan UUID SR, cukup klik namanya di Xen Center dan buka tab "General".
Untuk menyalin UUID, cukup klik kanan dan pilih "copy".
Dengan informasi ini di tangan, Anda siap untuk mengedit file pengaturan.
Proyek Xen-pocalypse datang dibundel dengan template file "pengaturan". Template ini harus diedit untuk mencerminkan pengaturan Anda dan lulus sebagai argumen pertama pada skrip. File pengaturan menunjukkan yang berikut:
Metode untuk mendapatkan VM yang akan dicadangkan - Metode defaultnya adalah TAG. Anda dapat mengubahnya ke FILE, tetapi ini tidak disarankan.
Lokasinya tujuan cadangan - Jika Anda telah mengikuti panduan ke titik ini, Anda hanya perlu mengganti% UUID% dengan SR seperti yang diperoleh dari atas.
Lokasi SendEmail - Jika Anda memilih untuk mengaktifkan Email, Anda perlu memasukkan di mana Anda telah mengekstrak perl dieksekusi di sini.
Detail email -Sekali lagi, jika Anda telah mengaktifkan email, Anda perlu menentukan detail seperti: Ke, Dari, Servername / IP & dll '.
Kompresi - Ini disetel ke "Tidak" secara default, karena ketika mengaktifkannya akan menghasilkan file cadangan yang lebih kecil, ini juga akan menyebabkan prosedur pencadangan berjalan untuk waktu yang jauh lebih lama.
Periksa ruang kosong pada tujuan - Ini akan memiliki pemeriksaan skrip yang membuat backup VM tidak akan menyebabkan ruang bebas lokasi cadangan jatuh di bawah 10GB. Ini dilakukan untuk memastikan jumlah VM paling banyak di-backup, bukan hanya satu VM yang sangat besar. Perhitungan dilakukan menggunakan total ukuran disk bruto dari semua HD yang terkait dengan VM.
Debugging - Defaultnya adalah memiliki debugging yang dimatikan dengan nilai "0" (nol). Anda tidak perlu mengaktifkan ini, tetapi jika Anda melakukannya, informasi lebih lanjut dicatat dalam segmen pemecahan masalah.
Dalam bentuk yang paling sederhana, sebuah doa Xen-pocalypse akan terlihat seperti:
./Xen-backup.sh settings.cfg weekly-fri
Di mana dalam kasus di atas, kita berada di dalam direktori yang menyimpan script & file pengaturan. "Tag" yang akan dicari skrip adalah "mingguan-fri".
Seperti disebutkan di atas, kami akan menggunakan Cron untuk menjadwalkan eksekusi. Sebelum kita masuk ke konfigurasi, itu sangat dianjurkan Anda mengkonfigurasi paket SSMTP yang sudah diinstal di server Xen Anda. Meskipun ini merupakan langkah opsional, tindakan ini akan memberi Anda kolektor backwash. Memiliki "kolektor backwash" seperti itu dapat mengingatkan Anda tentang hal-hal yang skripnya tidak bisa.
Masuk ke dalam pengeditan cron lainnya dengan menerbitkan:
crontab -e
Jika Anda telah mengikuti petunjuk di atas dan Anda ingin menambahkan cadangan terjadwal untuk hari Jumat pukul 18:01 (18:01), masukkan di bawah ini:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg mingguan-fri
Di atas benar dengan asumsi skrip dan file pengaturan Anda keduanya di bawah “/ root / Xen-pocalypse-master /”.
Meskipun saya sudah berusaha keras membuat skrip mudah digunakan dan sesederhana mungkin, "Dunia adalah lab yang lebih besar". Informasi di bawah ini dapat membantu Anda memastikan apa sumber masalah Anda.
Kemajuan
Anda mungkin ingin menggunakan liner satu ini untuk secara cepat “mengawasi” semua tugas yang sedang berlangsung, untuk melihat apakah mereka benar-benar maju atau jika mereka benar-benar terjebak.
sementara [-e / dev / null]; lakukan untuk VM di "$ (daftar tugas xe | grep uuid | awk 'print $ 5')"; lakukan xe task-param-get param-name = progress uuid = $ VM; sleep 1; selesai; selesai
Untuk berhenti menonton, gunakan Ctrl + C untuk mengerem “while loop”.
Logging
Semua "logging" dikumpulkan oleh host Xen menjalankan skrip dalam mekanisme syslog. Ini tentu saja dapat dilihat dengan:
less + F / var / log / messages
Anda mencari kata kunci "Xen-pocalypse".
Catatan: Citrix telah menetapkan kebijakan penyimpanan dua (2) hari untuk syslog servernya. Anda mungkin ingin mengingatnya untuk postmortem.
Debugging
Seperti yang tercatat di segmen file pengaturan, ada petunjuk untuk mengaktifkan debugging. Mengaktifkan debugging akan menyebabkan skrip untuk menampilkan pencatatan log verbose ke konsol dan mengebornya dari mengirim email dan benar-benar melakukan ekspor, kecuali bendera yang relevan juga ditetapkan. Flag-flag yang memungkinkan dicatat dalam template file pengaturan dan mereka memungkinkan Anda untuk menentukan secara rinci apa yang ingin Anda debug.
Ini adalah harapan saya bahwa Anda belum membutuhkan debugging dan Anda sedang menuai hasil kerja saya :)
Dorong, laki-laki saya, Anda akan menjadi nomor satu decepticon ...