Как да архивирате Citrix Xen VMs безплатно с Xen-pocalypse (Bash)
Имате ли нужда от архивиране на виртуалните машини на Citrix Xen (VM), но не искате да ги разбиете? HTG има само bash скрипт за вас с Xen-pocalypse.
Изображение от h.koppdelaney, Stuck в Custom и Hotfortech.
Едно от хубавите неща в Citrix Xen е, че много от неговите функции са Безплатно на такса. С това казано, ако искате функцията "Автоматизирана защита и възстановяване на виртуални машини", ще трябва да започнете да плащате за "Адванс" лиценз. Дори и тогава вие плащате само за резервни копия на ниво диск, които не са достатъчни за много видове натоварвания като Active directory, Databases & Etc. За да преодолеете това, може да искате „моментната снимка и връщане на живата памет“, която може да спаси целия състояние на машината, включително съдържанието на RAM. Тази функция обаче е част от изданията „Enterprise“ и „Platinum“, които са още по-скъпи. Не е, че ние в HTG отхвърляме стойността на истински софтуер за архивиране, но ако сте на ограничен бюджет и нямате нищо против прекъсването на операцията по архивиране, може да откриете, че Xen-pocalypse е напълно разумно решение. преди да поемете бюджетния ангажимент.
Преглед
“Случаят на използване”: Имате няколко виртуални машини, които изискват архивиране. "Изключването на виртуална машина и експортирането му като файл" от "Xen Center", използвайки десните кликвания, работи добре, но вие искате този процес да се случи автоматично и по график. Този Bash скрипт използва командата "XE" за изпълнение на задълженията си. XE е интерфейсът на командния ред на Xen (CLI), автоматичен еквивалент за издаване на "правилните кликвания" в "Xen Center". Ще извикваме скрипта от Cron, който ще предостави частта за "планиране". В най-простата форма резервният поток е:
- Изключете целевия VM.
- Експортирайте виртуалната машина като файл в резервното местоположение.
- Ако виртуалната машина е била включена, преди архивирането да започне, то ще бъде включено отново.
Да получим крекинг :)
Получете скрипта
Xen-pocalypse може да се получи свободно от github, като се използват обичайните git методи. С това каза, ако все още не сте запознати с git, можете да вземете zip файла с тази връзка. Тъй като скриптът трябва да се изпълнява на един от сървърите на Xen, трябва да го извлечете там, за да се запазят разрешенията за изпълнение.
Wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
разархивирайте капитана
Въпреки че по-горе ще работи, препоръчваме ви да използвате метода GIT, така че да имате полза от бъдещи актуализации.
Получаване на SendEmail (по избор)
В миналото сме писали за програмата SendLmail perl, така че няма нужда да се повтаря тук. Достатъчно е да се каже, че работи по същия начин в Linux, както и в Windows.
Докато активирането на имейли е по избор, това е силно препоръчително, защото тогава скриптът ще може да:
- Информира ви, когато е започнало и завърши.
- Предупреждавам ви за всякакви грешки, които е успял да открие и обработи.
- Информиране за резервни дисквалификации поради проблеми с пространството. (Това поведение може да бъде деактивирано, ако не е желано)
Изтеглете го на сървъра Xen и извлечете.
Wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Обърнете внимание на местоположението, на което сте го извлекли. Ще ви трябва за файла с настройки.
Определяне на маркери
Citrix Xen ви дава възможност да конфигурирате „потребителски полета“ за възможности за филтриране. Ще създадем полетата и ще ги запълним с информацията, използвана от Xen-pocalypse. Xen-pocalypse разпознава 3 контролни TAG, които определят името на маркера за резервно копие и връзките родител-дете. Ако не възнамерявате да използвате метода за въвеждане на файлове, ТРЯБВА да създадете поне полето за име на маркер за архивиране.
За да направите това, отворете свойствата на сървъра или дори на VM. В навигационния екран изберете „Персонализирани полета“.
Ако за първи път дефинирате връзка (както в примера по-горе), няма да имате полета, в които да въвеждате данни, така че трябва да ги създадете. За да направите това, кликнете върху „Редактиране на потребителски полета“ в диалоговия прозорец, който се появява, кликнете върху „Добавяне…“
Създайте три (3) полета "Текст". Единият ще се нарича “BackupTAG”, а другите “Родител” и “Деца”.
Забележка: Имената на персонализираните полета са „закодирани“ в скрипта, така че НЕ ТРЯБВА да се отклонявате от по-горния правопис, освен ако не промените съответния код, както и.
След като всички полета са създадени, трябва да видите:
Затворете прозореца. Сега трябва да попълните полетата „BackupTAG“, „Родител“ и „Деца“, както е показано на картинката по-долу.
Сега всичко, което трябва да направите, е да определите кои виртуални машини принадлежат на това, което „BackupTAG“.
Например, в компанията, в която сценарийът е бил увеличен, имахме виртуални машини, които трябваше да бъдат архивирани ежеседмично в четвъртък и петък, график за нашите виртуални машини на Atlassian продукт и някои, които трябваше да бъдат архивирани само месечно. Така нашият преглед изглеждаше така:
Когато например „седмично-пт“ беше текстът, който сме въвели в „BackupTAG“ „Потребителско поле“. Чист ли? :)
Родители и деца (по избор)
Истинската красота на този сценарий е, че поддържа “родител” към “детските” взаимоотношения. Това означава, че е възможно да се зададе списък на „детски“ виртуални машини, които да бъдат изключени и резервирани пред родителя, и че тези деца ще бъдат върнати само след като родителят завърши архивирането си и бъде върнат обратно нататък. Това е полезно в случаите, когато изключването на родителската виртуална машина ще доведе до недостъпност на услугата в детето. Такова нещо би означавало, че услугата на VM на детето би била недостъпна два пъти, веднъж за процеса на архивиране на детето и веднъж за родителските. Създаването на тази връзка преодолява този проблем.
Например, всички наши VMS на Atlassian са използвали една VM на база данни (DB), която също е настроена да бъде архивирана. Така че, отбелязвайки, че DB VM е "Родител" на другите виртуални машини, може да се осигури подходящ ред на изключване -> backup -> startup..
В момента на писане тази функция има няколко предупреждения:
- Имената на виртуалните машини, които трябва да имат такава връзка, не могат да съдържат интервали. Ще трябва да премахнете интервалите от имената на VM, защото те ще бъдат разделени с интервал, както е в примера по-долу.
- Може да има само един родител. Определянето на повече от едно не е дори планирано, да не говорим за изпитание.
За да създадете тази връзка, преминете към свойствата на VM. Ако това е „родител”, напишете кои са неговите деца и ако това е „дете”, напишете кой е неговият родител. Например:
Забележка: Неопределянето на родител за дете може да доведе до това детето да бъде стартирано преди родителят му да е готов и може да причини двойно архивиране.
Методът FILE (по избор)
По исторически причини, Xen-pocalypse поддържа и списъка с виртуални машини да бъде архивиран като текстов файл. Докато “кодът” все още е там, функционалността е силно по-малка от метода на TAGs и затова не се препоръчва. С това казано, ако предпочитате да използвате метода на списъка по някаква причина, важат следните ограничения:
- Имената на виртуалните машини не могат да съдържат интервали или специални символи.
- На ред може да има само едно име на VM.
- Празните редове не са разрешени.
За да генерирате списъка, или копирайте името на VM от центъра Xen, или изпълнете на хост Xen:
xe vm-списък | grep име-етикет | AWK
'print $ 4' | вид
Копирайте горния списък в обикновен текстов файл.
Мястото за архивиране
Докато случайно блъскаше в Citrix Xen, открих, че хранилищата за съхранение (SRs) са достъпни за използване в „/ var / run / sr-mount /% UUID%“, където UUID е уникалният идентификатор на SR, който може да бъде получени от GUI.
Това означава, че можем да използваме обичайния съветник "Следващ -> Следващ -> Завърши", за да създадем монтирането до желаното място за архивиране и след това да използваме този път (както е свързано с качването с монтирането от командния ред), но това е извън обхвата на това ръководство.
За да създадете нов “mount”, щракнете с десния бутон върху името на сървъра и изберете New SR.
В този пример ще насочим Xen към дял на Windows, затова изберете "Windows File Sharing (CIFS)":
Завършете следващия -> Следващ -> Край.
Получете UUID на SR
За да получите UUID на SR, просто кликнете върху неговото име в Xen Center и отидете в раздела „Общи“.
За да копирате UUID, просто кликнете с десния бутон върху него и изберете „копие“.
Когато тази информация е налице, вие сте готови да редактирате файла с настройки.
Конфигурирайте файла Настройки.
Проектът Xen-pocalypse идва в комплект с шаблон за настройка. Този шаблон трябва да се редактира, за да отразява настройката ви и да се предава като първи аргумент на скрипта. Файлът с настройки означава следното:
Методът за получаване на резервни копия на виртуалните машини - Методът по подразбиране е TAG. Можете да промените това на ФАЙЛ, но това не се препоръчва.
Локацията на резервното местоназначение - ако сте следвали ръководството до тази точка, трябва само да замените% UUID% със SR, както е получено от по-горе.
Местоположението на SendEmail - Ако сте избрали да активирате Email, трябва да въведете къде сте извлекли изпълнимия файл на perl тук.
Данни за имейла - Отново, ако сте активирали електронната поща, трябва да дефинирате подробности като: До, От, Име на сървъра / IP и т.н..
компресия - По подразбиране това е настроено на „Не“, тъй като при включването му ще се създаде по-малък архивен файл, той също ще доведе до по-продължително изпълнение на процедурата по архивиране за значително по-дълго време..
Проверете за свободно място върху дестинацията - скриптът ще провери, че архивирането на виртуалната машина няма да доведе до падане на свободното пространство на резервното място под 10GB. Това се прави, за да се гарантира, че най-много виртуални машини се архивират вместо само една много голяма VM. Изчислението се извършва, като се използва брутният размер на диска за всички HD дискове, свързани с VM.
Отстраняване на грешки - По подразбиране е изключено отстраняването на грешки със стойността “0” (нула). Не е необходимо да включвате това, но ако го направите, повече информация се отбелязва в сегмента за отстраняване на неизправности.
Изпълнение / График
В най-простата си форма извикването на Xen-pocalypse би изглеждало така:
./Xen-backup.sh settings.cfg week-fri
Където в горния случай се намираме в директорията, която съдържа скрипта и файла с настройки. „Етикетът“, който скриптът ще търси, е „седмично“.
Както бе отбелязано по-горе, ние ще използваме Cron за планиране на изпълнението. Преди да влезем в конфигурацията, това е така силно препоръчително че конфигурирате вече инсталирания SSMTP пакет на вашия Xen сървър. Въпреки че това е опционална стъпка, това ще ви даде колектор за обратно промиване. Наличието на такъв „колектор за обратно промиване“ може да ви предупреди за неща, които скриптът не може да изпълни.
Въведете още в редактирането на cron чрез издаване:
crontab -е
Ако сте изпълнили горепосочените указания и искате да добавите планиран архив за петък в 18:01 (18:01), въведете следното:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg седмично
Посоченото по-горе е правилно, ако приемем, че вашият скрипт и файлът с настройки са под „/ root / Xen-pocalypse-master /“.
Отстраняване на проблеми
Докато аз полагах много усилия, за да направим скрипта толкова лесен за използване и колкото е възможно по-сигурен, „Светът е по-голяма лаборатория“. Информацията по-долу може да ви помогне да установите кой е източникът на вашите проблеми.
прогрес
Може да искате да използвате този лайнер, за да "гледате" всички текущи задачи, за да видите дали те изобщо напредват или ако всъщност са останали.
while [-e / dev / null]; направи за VM в "$ (xe списък със задачи | grep uuid | awk 'print $ 5')"; do xe task-param-get param-name = напредък uuid = $ VM; Свършен; Свършен
За да спрете гледането, използвайте Ctrl + C, за да прекъснете „while loop“.
Влизане
Всички “logging” се събират от хоста Xen, който изпълнява скрипта в syslog механизма. Това, разбира се, може да се гледа с:
по-малко + F / var / log / messages
Търсите ключовата дума „Xen-pocalypse“.
Забележка: Citrix е задала две (2) дневни правила за запазване на syslog на своите сървъри. Може да искате да имате предвид това след смъртта.
Отстраняване на грешки
Както е отбелязано в сегмента с файлове с настройки, има директива, която позволява разрешаване на грешки. Разрешаването на отстраняването на грешки ще накара скрипта да изведе подробен запис в конзолата и да го кастрира от изпращане на имейли и действително да извърши износа, освен ако съответните знамена също не са зададени. Възможните флагове се отбелязват в шаблона на файла с настройки и ви дават възможност да дефинирате подробно какво искате да отстраните грешки.
Надявам се, че не се нуждаете от отстраняване на грешки и пожънете плодовете на моя труд :)
Насочи, човече, на път да станеш номер едно за измамник ...