Cara Sandaran Citrix Xen VMs untuk Percuma dengan Xen-pocalypse (Bash)
Pernahkah anda perlukan untuk membina Mesin Maya Citrix Xen (VM) anda tetapi tidak mahu memecahkan bank melakukannya? HTG hanya mempunyai skrip bash untuk anda dengan Xen-pocalypse.
Imej oleh h.koppdelaney, Terperangkap dalam Custom dan Hotfortech.
Salah satu perkara yang baik di Citrix Xen ialah banyak ciri-cirinya percuma caj. Dengan itu, jika anda mahukan ciri "Perlindungan dan pemulihan VM automatik", anda perlu mula membayar lesen "Advance". Walau bagaimanapun, anda hanya membayar untuk backup tahap cakera, yang tidak mencukupi untuk pelbagai jenis beban kerja seperti direktori aktif, pangkalan data & dsb. Untuk mengatasinya, anda mungkin mahu "ingatan memori langsung dan kembali", yang dapat menyelamatkan keseluruhan keadaan mesin, termasuk kandungan RAM. Walau bagaimanapun, ciri itu adalah sebahagian daripada edisi "Enterprise" dan "Platinum", yang lebih mahal. Bukannya kita di HTG menolak nilai perisian sandaran sebenar, tetapi jika anda berada pada anggaran yang ketat dan tidak keberatan beberapa downtime untuk operasi sandaran, anda mungkin dapati Xen-pocalypse menjadi penyelesaian yang sangat munasabah sebelum anda membuat komitmen bajet.
Gambaran keseluruhan
"Kes penggunaan": Anda mempunyai beberapa VM yang memerlukan sandaran. "Mematikan VM dan mengeksportnya sebagai fail" dari "Pusat Xen" dengan menggunakan klik kanan berfungsi ok, tetapi anda mahu proses ini berlaku secara automatik dan pada jadual. Skrip Bash ini menggunakan arahan "XE" untuk melaksanakan tugasnya. XE adalah antara muka baris perintah Xen (CLI), bersamaan automatik untuk mengeluarkan "klik kanan" dalam "Pusat Xen". Kami akan memanggil skrip dari Cron yang akan membekalkan bahagian "penjadualan". Dalam bentuk yang paling sederhana, aliran sandaran ialah:
- Matikan sasaran VM.
- Eksport VM sebagai fail ke lokasi sandaran.
- Jika VM dihidupkan, sebelum sandaran bermula, ia akan dihidupkan semula.
Mari kita retak :)
Dapatkan skrip
Xen-pocalypse boleh diperolehi secara bebas dari github, menggunakan kaedah git biasa. Dengan kata itu, jika anda tidak mahir dalam git lagi, anda boleh merebut fail zip dengan pautan ini. Oleh kerana skrip perlu dijalankan di salah satu pelayan Xen anda, anda perlu mengeluarkannya di sana supaya kebenaran pelaksanaan disimpan.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master
Walaupun perkara di atas akan berfungsi, anda dinasihatkan untuk menggunakan kaedah GIT, supaya anda mendapat manfaat daripada kemas kini masa hadapan.
Dapatkan e-mel (pilihan)
Kami telah menulis mengenai program SendEmail perl pada masa lalu, jadi tidak perlu mengulangi sini. Cukup untuk mengatakan, ia berfungsi dengan cara yang sama pada Linux seperti yang dilakukan pada Windows.
Walaupun membolehkan e-mel adalah pilihan, sangat disyorkan kerana skrip akan dapat:
- Maklumkan kepada anda apabila ia bermula & selesai berjalan.
- Peringatkan anda tentang sebarang kesilapan yang dapat mengesan dan mengendalikannya.
- Memaklumkan tentang kehilangan kelayakan cadangan disebabkan isu ruang. (Tingkah laku ini boleh dilumpuhkan jika tidak diingini)
Muat turun ke pelayan 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 di mana anda diekstrak ke. Anda memerlukannya untuk fail tetapan.
Menentukan Teg
Citrix Xen memberikan anda keupayaan untuk mengkonfigurasi "Custom Fields" untuk keupayaan penapisan. Kami akan membuat Fields dan kemudian mengisi mereka dengan maklumat yang digunakan oleh Xen-pocalypse. Xen-pocalypse mengiktiraf 3 kawalan TAG yang menunjuk nama tag untuk sandaran dan hubungan induk kepada anak. Sekiranya anda tidak berniat menggunakan kaedah input fail, anda MESTI membuat sekurang-kurangnya bidang nama tag sandaran.
Untuk melakukan ini, buka pelayan atau bahkan ciri-ciri VM. Dalam anak tetingkap navigasi, pilih "Medan Tersuai".
Jika ini adalah kali pertama anda menentukan hubungan (seperti dalam contoh di atas), anda tidak akan mempunyai sebarang bidang untuk memasukkan data ke dalamnya, jadi anda perlu menciptanya. Untuk melakukan ini, klik pada "Edit Bidang Tersuai" dalam kotak dialog yang muncul, klik pada "Tambah ..."
Buat tiga (3) medan jenis "Teks". Satu akan dipanggil "BackupTAG" dan yang lain "Orangtua" dan "Kanak-kanak".
Catatan: Nama-nama bidang adat, telah "dikodekan keras" ke skrip, jadi anda HARUS tidak menyimpang dari ejaan di atas, melainkan jika anda mengubah kod yang relevan juga.
Setelah semua bidang telah dibuat, anda harus melihat:
Tutup tetingkap.Anda kini harus mempunyai "BackupTAG", "Ibu bapa" dan "Kanak-kanak" untuk mengisi bidang, seperti dalam gambar di bawah.
Sekarang apa yang perlu anda lakukan ialah menentukan VM yang tergolong dalam "BackupTAG".
Sebagai contoh, dalam syarikat yang mana skrip itu ditanam, kami mempunyai VM yang akan disokong mingguan pada hari Khamis dan Jumaat, satu jadual untuk produk VM Atlassian kami dan beberapa yang akan disokong hanya bulanan. Jadi gambaran kami kelihatan seperti:
Di mana sebagai contoh "mingguan-fri" adalah teks yang kami masukkan ke dalam "BackupTAG" "Custom Field". Baiklah? :)
Ibu bapa & Kanak-kanak (pilihan)
Keindahan sebenar skrip ini ialah ia menyokong "ibu bapa" kepada hubungan "anak". Iaitu, mungkin untuk menetapkan senarai "kanak-kanak" VM yang akan dimatikan dan disandarkan sebelum ibu bapa, dan bahawa anak-anak ini hanya akan dihidupkan apabila ibu bapa telah selesai sandarannya dan telah dipulihkan pada. Ini berguna dalam kes-kes di mana mematikan ibu bapa VM akan menyebabkan perkhidmatan di dalam kanak-kanak menjadi tidak tersedia. Perkara sedemikian bermakna perkhidmatan pada kanak-kanak VM tidak akan tersedia dua kali, sekali untuk proses sandaran kanak-kanak dan sekali untuk ibu bapa. Mewujudkan hubungan ini mengatasi masalah itu.
Sebagai contoh, semua VMs Atlassian kami menggunakan satu DataBase (DB) VM tunggal, yang juga ditetapkan untuk disandarkan. Jadi, dengan menyatakan bahawa DB VM adalah "Ibu Bapa" kepada VM yang lain, perintah tutupan yang betul -> sandaran -> permulaan, dapat dipastikan.
Pada masa penulisan ini, fungsi ini mempunyai beberapa kaveat:
- Nama-nama VM yang mempunyai hubungan semacam itu tidak boleh mengandungi ruang. Anda perlu mengalih keluar ruang dari nama VM anda, kerana ia akan dibatasi ruang, seperti dalam contoh di bawah.
- Hanya boleh ada satu orang induk. Menetapkan lebih dari satu tidak dirancang, belum lagi diuji.
Untuk mewujudkan hubungan ini, pergi ke harta VM. Jika ini adalah "ibu bapa", tulis siapa anaknya dan jika ini adalah "anak", tuliskan siapa ibu bapanya. Sebagai contoh:
Nota: Tidak menetapkan ibu bapa untuk anak boleh menyebabkan kanak-kanak dimulakan sebelum ibu bapa mereka siap, dan boleh menyebabkannya disandarkan sebanyak dua kali.
Kaedah FILE (Pilihan)
Atas alasan sejarah, Xen-pocalypse juga menyokong mendapatkan senarai VM yang akan disandarkan sebagai file teks. Walaupun "kod" masih berada di sana, fungsinya sangat rendah dengan kaedah TAG dan oleh itu tidak disyorkan. Dengan itu, jika anda memilih untuk menggunakan kaedah senarai atas sebab tertentu, sekatan berikut dikenakan:
- Nama-nama VM tidak boleh mengandungi sebarang ruang atau aksara khas.
- Hanya terdapat satu nama VM bagi setiap baris.
- Talian kosong tidak dibenarkan.
Untuk menjana senarai, sama ada menyalin nama VM dari pusat Xen, atau jalankan pada hos Xen:
xe vm-list | grep label nama | awk
'print $ 4' | semak
Salin senarai di atas ke dalam fail teks biasa.
Lokasi sandaran
Walaupun secara rawak berpura-pura di Citrix Xen, saya mendapati bahawa Repositori Penyimpanan (SR) boleh digunakan di bawah "/ var / run / sr-mount /% UUID%" di mana UUID adalah pengecam unik SR, yang diperolehi daripada GUI.
Ini bermakna kita boleh menggunakan wizard "Next -> Next -> Finish" biasa untuk membuat lekapan ke lokasi sandaran yang diingini, dan kemudian skrip menggunakan laluan tersebut (seperti yang diguna pakai dengan memunggah dari baris arahan), tetapi melakukan begitu juga di luar skop panduan ini.
Untuk membuat "mount" baru, klik kanan nama pelayan dan pilih SR baharu.
Dalam contoh ini, kami akan menunjuk Xen ke bahagian tingkap, jadi pilih "Perkongsian Fail Windows (CIFS)":
Lengkapkan Selanjutnya -> Seterusnya -> Selesaikan.
Dapatkan UUID SR
Untuk mendapatkan UUID SR, klik pada namanya di Pusat Xen dan pergi ke tab "Umum".
Untuk menyalin UUID, klik kanan ia memilih "salinan".
Dengan maklumat ini, anda sudah bersedia untuk mengedit fail tetapan.
Konfigurasikan fail Tetapan.
Projek Xen-pocalypse dilengkapi dengan templat fail "tetapan". Templat ini harus diedit untuk menggambarkan persediaan anda dan diluluskan sebagai hujah pertama kepada skrip. Fail tetapan menetapkan perkara berikut:
Cara untuk mendapatkan VM yang disandarkan - Kaedah lalai adalah TAG. Anda boleh mengubahnya ke FILE, tetapi ini tidak disyorkan.
Lokasi dari destinasi sandaran - Jika anda telah mengikuti panduan ke titik ini, anda hanya perlu mengganti% UUID% dengan SR kerana ia diperoleh dari atas.
Lokasi SendEmail - Jika anda telah memilih untuk mendayakan E-mel, anda perlu memasukkan di mana anda telah mengeksport perl perlahan di sini.
Butiran e-mel - Sekali lagi, jika anda telah mendayakan e-mel, anda perlu menentukan butiran seperti: To, From, Servername / IP &.
Mampatan - Ini ditetapkan kepada "Tidak" secara lalai, kerana sementara membolehkan ia menghasilkan fail sandaran yang lebih kecil, ia juga akan menyebabkan prosedur sandaran dijalankan untuk jangka masa yang lebih panjang.
Periksa ruang kosong di destinasi - Ini akan memeriksa skrip yang membuat sandaran VM tidak akan menyebabkan ruang bebas lokasi sandaran jatuh di bawah 10GB. Ini dilakukan untuk memastikan jumlah maksimum VM disandarkan bukan hanya satu VM yang sangat besar. Pengiraan dilakukan menggunakan jumlah saiz cakera kasar bagi semua HD yang dikaitkan dengan VM.
Debugging - Lalai lalai ialah debugging dimatikan dengan nilai "0" (sifar). Anda tidak perlu menghidupkan ini, tetapi jika anda melakukannya, lebih banyak maklumat dicatatkan dalam segmen penyelesaian masalah.
Pelaksanaan / Penjadualan
Dalam bentuknya yang paling mudah, satu panggilan Xen-pokalip kelihatan seperti:
./Xen-backup.sh settings.cfg mingguan-fri
Di mana dalam kes di atas, kita berada di dalam direktori yang memegang skrip & fail tetapan. The "Tag" skrip yang akan dicari adalah "mingguan-fri".
Seperti yang dinyatakan di atas, kami akan menggunakan Cron untuk menjadualkan pelaksanaannya. Sebelum kita masuk ke dalam konfigurasi, ia adalah amat disyorkan bahawa anda mengkonfigurasi pakej SSMTP yang telah dipasang pada pelayan Xen anda. Walaupun ini adalah langkah pilihan, berbuat demikian akan memberi anda pengumpul backwash. Mempunyai apa-apa "pengumpul backwash" boleh memberi amaran kepada anda tentang perkara skrip tidak dapat.
Masukkan ke dalam penyuntingan cron lagi dengan mengeluarkan:
crontab -e
Sekiranya anda telah mengikuti arahan di atas dan anda mahu menambah sandaran berjadual untuk hari Jumaat di 18:01 (6:01 petang), masukan di bawah:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg mingguan-fri
Di atas adalah betul dengan mengandaikan fail skrip dan tetapan anda berada di bawah "/ root / Xen-pocalypse-master /".
Penyelesaian masalah
Walaupun saya telah membuat banyak usaha untuk menjadikan skrip sebagai mudah digunakan dan sebagai pelindung yang mungkin, "Dunia adalah makmal yang lebih besar". Maklumat di bawah boleh membantu anda menentukan apakah sumber masalah anda.
Kemajuan
Anda mungkin ingin menggunakan satu pelantar ini untuk dengan cepat "menonton" semua tugas yang sedang dijalankan, untuk melihat sama ada mereka benar-benar maju sama sekali atau jika mereka sebenarnya terperangkap.
manakala [-e / dev / null]; lakukan untuk VM dalam "$ (xe task-list | grep uuid | awk 'print $ 5')"; do xe task-param-get param-name = progress uuid = $ VM; sleep 1; dilakukan; dilakukan
Untuk berhenti menonton, gunakan Ctrl + C untuk brek "sementara gelung".
Pembalakan
Semua "pembalakan" dikumpulkan oleh tuan rumah Xen yang menjalankan skrip dalam mekanisme syslog. Ini tentunya boleh dilihat dengan:
kurang + F / var / log / mesej
Anda mencari kata kunci "Xen-pocalypse".
Nota: Citrix telah menetapkan dasar pengekalan dua (2) hari untuk syslog pelayannya. Anda mungkin mahu menyimpannya dalam minda untuk postmortem.
Debugging
Seperti yang dinyatakan dalam segmen fail tetapan, terdapat arahan untuk mendayakan penyahpepijatan. Mendayakan penyahpepijatan akan menyebabkan skrip mengeluarkan keluaran pembalakan verbose ke konsol dan membuangnya daripada menghantar e-mel dan sebenarnya melakukan eksport, kecuali bendera yang relevan juga ditetapkan. Bendera yang mungkin dicatatkan dalam templat fail tetapan dan membolehkan anda untuk menentukan secara mendalam apa yang anda mahu debug.
Adalah harapan saya bahawa anda tidak memerlukan debugging dan anda menuai hasil kerja saya :)
Teras, lelaki saya, anda akan menjadi nombor satu decepticon ...