Cara Mencadangkan Citrix Xen VMs Gratis dengan Xen-pocalypse (Bash)
Pernahkah Anda perlu membuat cadangan Mesin Virtual Citrix Xen (VM) Anda, tetapi tidak ingin bank melakukannya? HTG memiliki skrip bash untuk Anda dengan Xen-pocalypse.
Gambar oleh h.koppdelaney, Stuck in Custom and Hotfortech.
Salah satu hal yang menyenangkan di Citrix Xen adalah banyak fitur-fiturnya bebas biaya. Dengan itu, jika Anda menginginkan fitur "Perlindungan VM otomatis dan pemulihan", Anda harus mulai membayar lisensi "Advance". Bahkan kemudian, Anda hanya membayar untuk backup level disk, yang tidak cukup untuk banyak jenis beban kerja seperti direktori Aktif, Database & Dll. Untuk mengatasinya, Anda mungkin menginginkan "Live memory snapshot and revert", yang dapat menyimpan keseluruhan status mesin, termasuk isi RAM. Namun, fitur itu adalah bagian dari edisi “Enterprise” dan “Platinum”, yang bahkan lebih mahal. Bukan berarti kami di HTG menolak nilai perangkat lunak cadangan yang sebenarnya, tetapi jika Anda memiliki anggaran yang ketat dan tidak keberatan dengan waktu henti untuk operasi pencadangan, Anda mungkin menemukan Xen-pocalypse menjadi solusi yang masuk akal. sebelum Anda membuat komitmen anggaran.
Ikhtisar
"Use case": Anda memiliki beberapa VM yang memerlukan 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 melakukan tugasnya. XE adalah antarmuka baris perintah Xen (CLI), setara otomatis 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:
- Matikan VM target.
- Ekspor VM sebagai file ke lokasi cadangan.
- Jika VM dihidupkan, sebelum pencadangan dimulai, itu akan dihidupkan kembali.
Mari kita mulai retak :)
Dapatkan skripnya
Xen-pocalypse dapat diperoleh secara bebas dari github, menggunakan metode git biasa. Dengan itu, jika Anda belum berpengalaman di git, Anda dapat mengambil file zip dengan tautan ini. Karena skrip perlu dijalankan pada salah satu server Xen Anda, Anda harus mengekstraknya di sana sehingga izin eksekusi tetap dipertahankan.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master
Meskipun hal di atas akan berhasil, Anda disarankan untuk menggunakan metode GIT, sehingga Anda dapat mengambil manfaat dari pembaruan di masa mendatang.
Dapatkan SendEmail (opsional)
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:
- Memberitahu Anda ketika itu mulai & selesai berjalan.
- Beri tahu Anda jika ada kesalahan yang dapat dideteksi dan ditangani.
- Menginformasikan diskualifikasi cadangan karena masalah ruang. (Perilaku ini dapat dinonaktifkan jika tidak diinginkan)
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.
Menentukan Tag
Citrix Xen memberi Anda kemampuan untuk mengonfigurasi "Bidang Kustom" untuk kemampuan memfilter. Kami akan membuat Fields dan mengisinya dengan informasi yang digunakan oleh Xen-pocalypse. Xen-pocalypse mengenali 3 TAG kontrol yang menetapkan nama tag untuk cadangan dan hubungan induk dengan anak. Jika Anda tidak bermaksud menggunakan metode input file, Anda HARUS membuat setidaknya bidang nama tag cadangan.
Untuk melakukan ini, buka properti server atau bahkan VM. Di panel navigasi, pilih "Bidang Kustom".
Jika ini adalah pertama kalinya Anda mendefinisikan suatu hubungan (seperti dalam contoh di atas), Anda tidak akan memiliki bidang apa pun untuk memasukkan data, jadi Anda harus membuatnya. Untuk melakukan ini, klik "Edit Bidang Kustom" di kotak dialog yang muncul, klik "Tambah ..."
Buat tiga (3) bidang tipe "Teks". Satu akan disebut "BackupTAG" dan yang lainnya "Orangtua" dan "Anak-anak".
catatan: Nama-nama bidang khusus, telah "dikodekan keras" ke dalam skrip, jadi Anda tidak boleh menyimpang dari ejaan di atas, kecuali jika Anda mengubah kode yang relevan juga.
Setelah semua bidang dibuat, Anda akan melihat:
Tutup jendela. Sekarang Anda harus memiliki kolom "BackupTAG", "Induk" dan "Anak-anak", seperti pada gambar di bawah ini..
Sekarang yang harus Anda lakukan adalah menentukan VM mana yang menjadi milik "BackupTAG".
Misalnya, di perusahaan tempat skrip dikembangkan, kami memiliki VM yang akan dicadangkan setiap minggu pada hari Kamis dan Jumat, jadwal untuk VM produk Atlassian kami dan beberapa yang akan didukung hanya setiap bulan. Jadi gambaran umum kami terlihat seperti:
Di mana misalnya "mingguan-fri" adalah teks yang kami masukkan ke dalam "BackupTAG" "Bidang Kustom". Rapi ya? :)
Orang Tua & Anak-anak (opsional)
Keindahan nyata dari skrip ini adalah mendukung skrip “parent” hingga “child”. Artinya, dimungkinkan untuk menetapkan daftar VM "anak" yang akan dimatikan dan dicadangkan di hadapan 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 orangtua. Menciptakan hubungan ini mengatasi masalah itu.
Sebagai contoh, semua VM Atlassian kami menggunakan VM DataBase (DB) tunggal, yang juga akan 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:
- Nama-nama VM yang memiliki hubungan seperti itu tidak boleh mengandung spasi. Anda harus menghapus spasi dari nama-nama VM Anda, karena mereka akan dibatasi ruang, seperti pada contoh di bawah ini.
- Hanya ada satu orangtua. Menetapkan lebih dari satu bahkan tidak direncanakan, belum lagi diuji.
Untuk membuat hubungan ini, masuk ke properti VM. Jika ini adalah "orang tua", tulis siapa anak-anaknya dan jika ini adalah "anak", tulis siapa orang tuanya. Sebagai contoh:
Catatan: Tidak menunjuk Orangtua untuk anak dapat menyebabkan anak mulai sebelum orang tuanya siap, dan dapat menyebabkannya dicadangkan dua kali.
Metode FILE (Opsional)
Untuk alasan historis, Xen-pocalypse juga mendukung mendapatkan daftar VM yang akan didukung sebagai file teks. Sementara "kode" masih ada di sana, fungsi ini sangat rendah dibandingkan dengan metode TAG dan oleh karena itu tidak direkomendasikan. Dengan itu, jika Anda lebih suka menggunakan metode daftar karena beberapa alasan, pembatasan berikut berlaku:
- Nama-nama VM tidak dapat berisi spasi atau karakter khusus apa pun.
- Hanya ada satu nama VM per baris.
- Garis kosong tidak diizinkan.
Untuk menghasilkan daftar, salin nama VM dari pusat Xen, atau jalankan di host Xen:
xe vm-list | grep name-label | awk
'print $ 4' | menyortir
Salin daftar di atas ke dalam file teks biasa.
Lokasi cadangan
Sementara secara acak mencari-cari di Citrix Xen, saya telah menemukan bahwa Penyimpanan Repositori (SR) tersedia untuk digunakan di bawah "/ var / run / sr-mount /% UUID%" di mana UUID adalah pengidentifikasi unik SR, yang dapat berupa diperoleh dari GUI.
Ini berarti kita dapat menggunakan wizard "Next -> Next -> Finish" biasa untuk membuat mount ke lokasi cadangan yang diinginkan, dan kemudian skrip menggunakan jalur itu (seperti yang diduga mengacaukan pemasangan dari baris perintah), tetapi melakukan begitu juga di luar cakupan 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)":
Selesaikan Berikutnya -> Selanjutnya -> 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, Anda siap untuk mengedit file pengaturan.
Konfigurasikan file Pengaturan.
Proyek Xen-pocalypse dibundel dengan templat file "pengaturan". Template ini harus diedit untuk mencerminkan pengaturan Anda dan diteruskan sebagai argumen pertama ke skrip. File pengaturan menunjuk sebagai berikut:
Metode untuk mendapatkan VM yang akan dicadangkan - Metode default adalah TAG. Anda dapat mengubahnya ke FILE, tetapi ini tidak disarankan.
Lokasinya tujuan pencadangan - 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 yang dapat dieksekusi di sini.
Rincian email - Sekali lagi, jika Anda telah mengaktifkan email, Anda perlu mendefinisikan detail seperti: Ke, Dari, Servername / IP & dll..
Kompresi - Ini diatur ke "Tidak" secara default, karena sementara mengaktifkannya akan menghasilkan file cadangan yang lebih kecil, itu juga akan menyebabkan prosedur pencadangan berjalan untuk jumlah waktu yang jauh lebih lama.
Periksa ruang kosong pada tujuan - Ini akan meminta skrip memeriksa bahwa membuat cadangan VM tidak akan menyebabkan ruang kosong lokasi cadangan turun di bawah 10GB. Ini dilakukan untuk memastikan jumlah VM yang paling banyak didukung, bukan hanya satu VM yang sangat besar. Perhitungan dilakukan dengan menggunakan total ukuran disk kotor dari semua HD yang terkait dengan VM.
Debugging - Standarnya adalah debugging dimatikan dengan nilai "0" (nol). Anda seharusnya tidak perlu mengaktifkan ini, tetapi jika Anda melakukannya, informasi lebih lanjut dicatat di segmen pemecahan masalah.
Eksekusi / Penjadwalan
Dalam bentuknya yang paling sederhana, permohonan Xen-pocalypse akan terlihat seperti:
./Xen-backup.sh settings.cfg mingguan-fri
Di mana dalam kasus di atas, kita berada di dalam direktori yang menyimpan skrip & file pengaturan. "Tag" yang akan dicari oleh skrip adalah "week-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 pada server Xen Anda. Meskipun ini merupakan langkah opsional, melakukannya akan memberi Anda kolektor backwash. Memiliki "backwash collector" dapat mengingatkan Anda tentang hal-hal yang tidak dapat dilakukan skrip.
Masuk ke editing cron lainnya dengan mengeluarkan:
crontab -e
Jika Anda telah mengikuti instruksi di atas dan Anda ingin menambahkan cadangan yang dijadwalkan pada hari Jumat pukul 18:01 (18:01), masukkan yang berikut ini:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg Weekly-fri
Di atas benar dengan asumsi skrip dan file pengaturan Anda sama-sama berada di bawah "/ root / Xen-pocalypse-master /".
Penyelesaian masalah
Meskipun saya telah berusaha keras membuat skrip itu mudah digunakan dan sangat mudah, "Dunia adalah lab yang lebih besar". Informasi di bawah ini dapat membantu Anda memastikan apa sumber masalah Anda.
Kemajuan
Anda mungkin ingin menggunakan liner yang satu ini untuk dengan cepat "mengawasi" semua tugas yang sedang berlangsung, untuk melihat apakah mereka benar-benar mengalami kemajuan atau apakah mereka benar-benar macet..
sementara [-e / dev / null]; lakukan untuk VM di "$ (daftar tugas xe | grep uuid | awk 'print $ 5')"; do xe task-param-get param-name = progres uuid = $ VM; sleep 1; dilakukan; selesai
Untuk berhenti menonton, gunakan Ctrl + C untuk mengerem "while loop".
Penebangan
Semua "logging" dikumpulkan oleh host Xen yang menjalankan skrip dalam mekanisme syslog. Ini tentu saja dapat dilihat dengan:
kurang + F / var / log / pesan
Anda mencari kata kunci “Xen-pocalypse”.
Catatan: Citrix telah menetapkan kebijakan retensi dua (2) hari untuk syslog servernya. Anda mungkin ingin mengingatnya untuk postmortem.
Debugging
Sebagaimana dicatat dalam segmen file pengaturan, ada arahan untuk mengaktifkan debugging. Mengaktifkan debugging akan menyebabkan skrip untuk menghasilkan logging verbose ke konsol dan mengebornya dari mengirim email dan benar-benar melakukan ekspor, kecuali jika flag yang relevan juga diatur. Bendera yang mungkin dicatat dalam templat file pengaturan dan memungkinkan Anda untuk menentukan secara terperinci apa yang ingin Anda debug.
Ini adalah harapan saya bahwa Anda tidak memerlukan debugging dan Anda menuai hasil kerja saya :)
Dorongan, saudaraku, kamu akan menjadi decepticon nomor satu ...