Вам когда-нибудь приходилось массово восстанавливать виртуальные машины Citrix-Xen для решения аварийного восстановления (DR) или просто для проверки работоспособности ваших резервных копий? HTG объясняет, как использовать бесплатный сценарий bash Xen-Phoenix для восстановления ВМ.
Кредит Фотографии: Райан МакКарди через Compfight cc
Как мы уже упоминали в «Как сделать резервную копию виртуальных машин Citrix Xen бесплатно с помощью Xen-pocalypse», одна из приятных сторон Citrix Xen заключается в том, что многие ее функции являются бесплатными . С учетом вышесказанного, если вы хотите использовать функцию «Автоматическая защита и восстановление виртуальных машин», вам придется начать платить за «Предварительную» лицензию. Опять же, дело не в том, что мы в HTG отказываемся от ценности настоящего решения для резервного копирования, но если у вас ограниченный бюджет, вы уже получили образы виртуальных машин из гипервизора и нуждаетесь в способе автоматизации ваших « тестирование восстановления »/« DR refresh »процедуры, вы можете найти Xen-Phoenix, чтобы быть вполне разумным решением, прежде чем принять бюджетное обязательство.
- Обзор
«Вариант использования»: у вас есть пара виртуальных машин, которые требуют восстановления. Импортирование в «Xen Center» с помощью правой кнопки мыши работает нормально, но вы хотите, чтобы этот процесс происходил автоматически и по расписанию. Этот скрипт Bash использует команду «XE» для выполнения своих обязанностей. XE – это интерфейс командной строки (CLI) Xen, автоматический эквивалент для «правых щелчков» в «Xen Center». Мы будем вызывать скрипт из Cron, который предоставит часть «планирования». В простейшем виде поток восстановления:
Удалить все * ранее существующие виртуальные машины на сервере
Импортируйте виртуальные машины из файлов в хранилище.
Убедитесь, что все виртуальные машины работоспособны, активируя их одну за другой и следя за пульсом гостевых инструментов.
Выключите виртуальные машины, когда будет обнаружено сердцебиение или истекло время ожидания.
* Поведение «Удалить все виртуальные машины» может быть полностью отключено и поддерживает исключения (см. Ниже).
Давайте взломать 🙂
Получить сценарий
Ксен-феникс можно свободно получить из github, используя обычные методы git. С учетом сказанного, если вы еще не разбираетесь в git, вы можете получить zip-файл по этой ссылке. Поскольку сценарий должен запускаться на одном из ваших серверов Xen, вы должны извлечь его там, чтобы сохранить права на выполнение.
wget https://github.com/aviadra/Xen-phoenix/archive/master.zip
распаковать мастер Хотя вышеперечисленное будет работать, вам рекомендуется использовать метод GIT, чтобы вы могли извлечь выгоду из будущих обновлений. Место экспорта Нам нужно настроить, откуда брать экспорт VM. Во время случайного поиска в Citrix Xen я обнаружил, что репозитории хранилищ (SR) доступны для использования в «/ var/run/sr-mount /% UUID%», где UUID – это уникальный идентификатор SR, который может быть полученный из GUI. Это означает, что мы можем использовать обычный мастер «Далее -> Далее -> Готово», чтобы создать «монтирование» в нужное место резервного копирования, а затем заставить скрипт использовать этот путь (в отличие от манипулирования монтированием из командной строки, которая выходит за рамки данного руководства). Для создания нового «монтирования» щелкните правой кнопкой мыши имя сервера и выберите «Новый SR». В этом примере мы укажем Xen на общий ресурс Windows, поэтому выберите «Общий доступ к файлам Windows (CIFS)»: Завершите следующее -> Далее -> Готово. Получите UUID SR Чтобы получить UUID SR, просто нажмите на его имя в Центре Xen и перейдите на вкладку «Общие». Чтобы скопировать UUID, просто щелкните по нему правой кнопкой мыши и выберите «Копировать». Имея эту информацию под рукой, вы готовы редактировать файл настроек. Настройте файл настроек Проект Xen-phoenix поставляется в комплекте с шаблоном файла «settings». Этот шаблон должен быть отредактирован в соответствии с вашими настройками и передан в качестве первого аргумента скрипту. Файл настроек обозначает следующее: Расположение источника экспорта – если вы следовали руководству до этого момента, вам нужно только заменить% UUID% на SR, как это было получено выше. Расположение SendEmail – если вы решили включить электронную почту, вам нужно указать, где вы извлекли исполняемый файл perl здесь. Verifier – контролирует процедуру проверки после восстановления. Это включено по умолчанию, так как успешное «восстановление на уровне файлов» не обязательно означает работающую виртуальную машину. Server_prep – управляет предварительным восстановлением удаления всех виртуальных машин на сервере DR. Это включено по умолчанию, поскольку предполагается, что сервер DR является выделенным сервером для этой цели.Если вам нужно, чтобы виртуальная машина, работающая на этом сервере, не удалялась, настройте ее для исключения. Если это поведение не подходит для вашей ситуации, просто отключите его полностью. Данные электронной почты – Опять же, если вы включили электронную почту, вам необходимо определить такие детали, как: Кому, От, Имя сервера/IP и т. д. Отладка. По умолчанию отладка отключена со значением «0» (ноль). Вам не нужно включать это, но если вы это сделаете, дополнительная информация отмечена в разделе устранения неполадок. выполнение Этот скрипт принимает файл настроек в качестве первого аргумента и любые другие аргументы в качестве «шевронов» для поиска (разделенных пробелами). Шевроны – это «строки», которые поддерживают регулярные выражения, которые представляют хотя бы часть желаемого имени файла экспорта виртуальной машины. То есть в простейшей форме вызов Xen-phoenix будет выглядеть так: ./ Xen-phoenix.sh settings.cfg DevTools Где в приведенном выше случае мы находимся в каталоге, в котором находится скрипт и файл настроек, и «Chevron», который будет искать скрипт, – «DevTools». Это приведет к тому, что все файлы в каталоге экспорта со строкой «DevTools» в их имени будут импортированы. Более сложный пример может выглядеть так: ./ Xen-phoenix.sh settings.cfg [Aa] [Dd] [Bb] [iI] [Dd] ev [Tt] ools Если в приведенном выше примере будут импортированы файлы, содержащие слово «devtools» с прописными буквами «D» и «T» или не заглавные, а также «AD» и «BI» с заглавными буквами или без них. планирование Как отмечалось выше, мы будем использовать Cron для планирования выполнения. Прежде чем мы перейдем к настройке, настоятельно рекомендуем настроить уже установленный пакет SSMTP на вашем сервере Xen. Хотя это необязательный шаг, это даст вам коллектор «обратной промывки». Наличие такого «коллектора обратной промывки» может предупредить вас о том, что сценарий не в состоянии. Войдите в режим редактирования cron, введя: crontab -e Если вы следовали приведенным выше инструкциям и хотите добавить резервную копию на воскресенье в 01:31 (1:31 AM), введите следующее: 31 01 * * sun /root/Xen-phoenix-master/Xen-phoenix.sh /root/Xen-phoenix-master/settings.cfg [Aa] [Dd] БД [Bb] [iI] [Dd] эв [Tt] нструменты Вышеприведенное верно, если ваш сценарий и файл настроек находятся в папке «/ root/Xen-phoenix-master /». Получить SendEmail (необязательно) В прошлом мы писали о Perl-программе SendEmail, поэтому повторять здесь не нужно. Достаточно сказать, что в Linux он работает так же, как и в Windows. Хотя включение электронной почты не является обязательным, настоятельно рекомендуется, потому что тогда сценарий сможет: Сообщите вам, когда он начал и закончил работу. Оповещать вас о любых ошибках, которые он смог обнаружить и обработать. Загрузите его на сервер Xen и распакуйте. wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz Обратите внимание на место, где вы извлекли его. Он понадобится вам для файла настроек. Определение тега «Удалить исключение» (необязательно) Xen-Phoenix берет страницу от своего предка (Xen-Pocalypse) и дает вам возможность детально исключить виртуальную машину из системного удаления с помощью контрольной метки. Для этого вам необходимо определить новое «Пользовательское поле». Для этого откройте свойства сервера или даже виртуальной машины. На панели навигации выберите «Пользовательские поля». Если вы впервые определяете «настраиваемое поле» (как в примере выше), у вас не будет поля «Phoenix_keeper» для ввода данных, поэтому вам нужно его создать. Для этого нажмите «Редактировать пользовательские поля» в появившемся диалоговом окне, затем нажмите «Добавить…» Создайте поле типа «Текст» с именем «Phoenix_keeper». Примечание: Имя настраиваемого поля было «жестко запрограммировано» в сценарии, поэтому вы НЕ ДОЛЖНЫ отклоняться от написанного выше, если только вы не измените соответствующий код. Как только поле будет создано, вы должны увидеть: Закройте окно. Теперь вы должны заполнить поле «Phoenix_keeper», как показано на рисунке ниже. Теперь все, что вам нужно сделать, это заполнить это поле комментарием (любое замечание подойдет), что заставит Xen-phoenix пропустить его при удалении. Поиск проблемы Хотя я приложил немало усилий, чтобы сделать сценарий максимально простым и надежным, «мир – это большая лаборатория». Приведенная ниже информация может помочь вам определить источник ваших проблем. Вход Вся «регистрация» собирается хостом Xen, выполняющим скрипт в механизме системного журнала. Это, конечно, можно посмотреть с помощью: less + F/var/log/messages Вы ищете ключевое слово «Ксен-Феникс». Примечание. Citrix установил двухдневную политику хранения для системного журнала своих серверов. Вы можете иметь это в виду для посмертных. Отладка Как отмечено в сегменте файла настроек, есть директива для включения отладки. Включение отладки приведет к тому, что сценарий будет выводить подробное ведение журнала на консоль и кастрировать его из отправки электронных писем и фактического выполнения импорта, если только не установлены соответствующие флаги. Возможные флаги отмечены в шаблоне файла настроек, и они позволяют вам детально определить, что вы хотите отлаживать. Я надеюсь, что вам не понадобилась отладка, и вы пожинаете плоды моего труда 🙂 Просто подумай обо всей бедности, ненависти и лжи, И представь себе разрушение всего, что ты презираешь. Медленно из пепла восстанет феникс … - Получить сценарий
- Место экспорта
- Настройте файл настроек
- выполнение
- планирование
- Получить SendEmail (необязательно)
- Определение тега «Удалить исключение» (необязательно)
- Поиск проблемы
Обзор
«Вариант использования»: у вас есть пара виртуальных машин, которые требуют восстановления. Импортирование в «Xen Center» с помощью правой кнопки мыши работает нормально, но вы хотите, чтобы этот процесс происходил автоматически и по расписанию. Этот скрипт Bash использует команду «XE» для выполнения своих обязанностей. XE – это интерфейс командной строки (CLI) Xen, автоматический эквивалент для «правых щелчков» в «Xen Center». Мы будем вызывать скрипт из Cron, который предоставит часть «планирования». В простейшем виде поток восстановления:
- Удалить все * ранее существующие виртуальные машины на сервере
- Импортируйте виртуальные машины из файлов в хранилище.
- Убедитесь, что все виртуальные машины работоспособны, активируя их одну за другой и следя за пульсом гостевых инструментов.
- Выключите виртуальные машины, когда будет обнаружено сердцебиение или истекло время ожидания.
* Поведение «Удалить все виртуальные машины» может быть полностью отключено и поддерживает исключения (см. Ниже).
Давайте взломать 🙂
Получить сценарий
Ксен-феникс можно свободно получить из github, используя обычные методы git. С учетом сказанного, если вы еще не разбираетесь в git, вы можете получить zip-файл по этой ссылке. Поскольку сценарий должен запускаться на одном из ваших серверов Xen, вы должны извлечь его там, чтобы сохранить права на выполнение.
wget https://github.com/aviadra/Xen-phoenix/archive/master.zip
распаковать мастер
Хотя вышеперечисленное будет работать, вам рекомендуется использовать метод GIT, чтобы вы могли извлечь выгоду из будущих обновлений.
Место экспорта
Нам нужно настроить, откуда брать экспорт VM.
Во время случайного поиска в Citrix Xen я обнаружил, что репозитории хранилищ (SR) доступны для использования в «/ var/run/sr-mount /% UUID%», где UUID – это уникальный идентификатор SR, который может быть полученный из GUI.
Это означает, что мы можем использовать обычный мастер «Далее -> Далее -> Готово», чтобы создать «монтирование» в нужное место резервного копирования, а затем заставить скрипт использовать этот путь (в отличие от манипулирования монтированием из командной строки, которая выходит за рамки данного руководства).
Для создания нового «монтирования» щелкните правой кнопкой мыши имя сервера и выберите «Новый SR».
В этом примере мы укажем Xen на общий ресурс Windows, поэтому выберите «Общий доступ к файлам Windows (CIFS)»:
Завершите следующее -> Далее -> Готово.
Получите UUID SR
Чтобы получить UUID SR, просто нажмите на его имя в Центре Xen и перейдите на вкладку «Общие».
Чтобы скопировать UUID, просто щелкните по нему правой кнопкой мыши и выберите «Копировать».
Имея эту информацию под рукой, вы готовы редактировать файл настроек.
Настройте файл настроек
Проект Xen-phoenix поставляется в комплекте с шаблоном файла «settings». Этот шаблон должен быть отредактирован в соответствии с вашими настройками и передан в качестве первого аргумента скрипту.
Файл настроек обозначает следующее:
- Расположение источника экспорта – если вы следовали руководству до этого момента, вам нужно только заменить% UUID% на SR, как это было получено выше.
- Расположение SendEmail – если вы решили включить электронную почту, вам нужно указать, где вы извлекли исполняемый файл perl здесь.
- Verifier – контролирует процедуру проверки после восстановления. Это включено по умолчанию, так как успешное «восстановление на уровне файлов» не обязательно означает работающую виртуальную машину.
- Server_prep – управляет предварительным восстановлением удаления всех виртуальных машин на сервере DR. Это включено по умолчанию, поскольку предполагается, что сервер DR является выделенным сервером для этой цели.Если вам нужно, чтобы виртуальная машина, работающая на этом сервере, не удалялась, настройте ее для исключения. Если это поведение не подходит для вашей ситуации, просто отключите его полностью.
- Данные электронной почты – Опять же, если вы включили электронную почту, вам необходимо определить такие детали, как: Кому, От, Имя сервера/IP и т. д.
- Отладка . По умолчанию отладка отключена со значением «0» (ноль). Вам не нужно включать это, но если вы это сделаете, дополнительная информация отмечена в разделе устранения неполадок.
выполнение
Этот скрипт принимает файл настроек в качестве первого аргумента и любые другие аргументы в качестве «шевронов» для поиска (разделенных пробелами). Шевроны – это «строки», которые поддерживают регулярные выражения, которые представляют хотя бы часть желаемого имени файла экспорта виртуальной машины.
То есть в простейшей форме вызов Xen-phoenix будет выглядеть так:
./ Xen-phoenix.sh settings.cfg DevTools
Где в приведенном выше случае мы находимся в каталоге, в котором находится скрипт и файл настроек, и «Chevron», который будет искать скрипт, – «DevTools». Это приведет к тому, что все файлы в каталоге экспорта со строкой «DevTools» в их имени будут импортированы.
Более сложный пример может выглядеть так:
./ Xen-phoenix.sh settings.cfg [Aa] [Dd] [Bb] [iI] [Dd] ev [Tt] ools
Если в приведенном выше примере будут импортированы файлы, содержащие слово «devtools» с прописными буквами «D» и «T» или не заглавные, а также «AD» и «BI» с заглавными буквами или без них.
планирование
Как отмечалось выше, мы будем использовать Cron для планирования выполнения. Прежде чем мы перейдем к настройке, настоятельно рекомендуем настроить уже установленный пакет SSMTP на вашем сервере Xen. Хотя это необязательный шаг, это даст вам коллектор «обратной промывки». Наличие такого «коллектора обратной промывки» может предупредить вас о том, что сценарий не в состоянии.
Войдите в режим редактирования cron, введя:
crontab -e
Если вы следовали приведенным выше инструкциям и хотите добавить резервную копию на воскресенье в 01:31 (1:31 AM), введите следующее:
31 01 * * sun /root/Xen-phoenix-master/Xen-phoenix.sh /root/Xen-phoenix-master/settings.cfg [Aa] [Dd] БД [Bb] [iI] [Dd] эв [Tt] нструменты
Вышеприведенное верно, если ваш сценарий и файл настроек находятся в папке «/ root/Xen-phoenix-master /».
Получить SendEmail (необязательно)
В прошлом мы писали о Perl-программе SendEmail, поэтому повторять здесь не нужно. Достаточно сказать, что в Linux он работает так же, как и в Windows.
Хотя включение электронной почты не является обязательным, настоятельно рекомендуется, потому что тогда сценарий сможет:
- Сообщите вам, когда он начал и закончил работу.
- Оповещать вас о любых ошибках, которые он смог обнаружить и обработать.
Загрузите его на сервер Xen и распакуйте.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Обратите внимание на место, где вы извлекли его. Он понадобится вам для файла настроек.
Определение тега «Удалить исключение» (необязательно)
Xen-Phoenix берет страницу от своего предка (Xen-Pocalypse) и дает вам возможность детально исключить виртуальную машину из системного удаления с помощью контрольной метки. Для этого вам необходимо определить новое «Пользовательское поле».
Для этого откройте свойства сервера или даже виртуальной машины. На панели навигации выберите «Пользовательские поля».
Если вы впервые определяете «настраиваемое поле» (как в примере выше), у вас не будет поля «Phoenix_keeper» для ввода данных, поэтому вам нужно его создать. Для этого нажмите «Редактировать пользовательские поля» в появившемся диалоговом окне, затем нажмите «Добавить…»
Создайте поле типа «Текст» с именем «Phoenix_keeper».
Примечание: Имя настраиваемого поля было «жестко запрограммировано» в сценарии, поэтому вы НЕ ДОЛЖНЫ отклоняться от написанного выше, если только вы не измените соответствующий код.
Как только поле будет создано, вы должны увидеть:
Закройте окно. Теперь вы должны заполнить поле «Phoenix_keeper», как показано на рисунке ниже.
Теперь все, что вам нужно сделать, это заполнить это поле комментарием (любое замечание подойдет), что заставит Xen-phoenix пропустить его при удалении.
Поиск проблемы
Хотя я приложил немало усилий, чтобы сделать сценарий максимально простым и надежным, «мир – это большая лаборатория». Приведенная ниже информация может помочь вам определить источник ваших проблем.
Вход
Вся «регистрация» собирается хостом Xen, выполняющим скрипт в механизме системного журнала. Это, конечно, можно посмотреть с помощью:
less + F/var/log/messages
Вы ищете ключевое слово «Ксен-Феникс».
Примечание. Citrix установил двухдневную политику хранения для системного журнала своих серверов. Вы можете иметь это в виду для посмертных.
Отладка
Как отмечено в сегменте файла настроек, есть директива для включения отладки. Включение отладки приведет к тому, что сценарий будет выводить подробное ведение журнала на консоль и кастрировать его из отправки электронных писем и фактического выполнения импорта, если только не установлены соответствующие флаги. Возможные флаги отмечены в шаблоне файла настроек, и они позволяют вам детально определить, что вы хотите отлаживать.
Я надеюсь, что вам не понадобилась отладка, и вы пожинаете плоды моего труда 🙂
Просто подумай обо всей бедности, ненависти и лжи, И представь себе разрушение всего, что ты презираешь. Медленно из пепла восстанет феникс …