Czy kiedykolwiek potrzebowałeś masowego przywracania maszyn wirtualnych Citrix-Xen do rozwiązania odzyskiwania po awarii (DR) lub po prostu do sprawdzenia, czy kopie zapasowe działają? HTG wyjaśnia, jak używać Xen-Phoenix, darmowego skryptu bash, do przywracania VM.
Źródło: Ryan McCurdy przez Compfight cc
Jak wspominaliśmy w artykule "Jak tworzyć kopie zapasowe Citrix Xen VM za darmo za pomocą Xen-Pocalypse", jedną z fajnych rzeczy w Citrix Xen jest to, że wiele jego funkcjiwolny opłaty. W związku z tym, jeśli chcesz skorzystać z funkcji "Automatyczna ochrona i odzyskiwanie maszyn wirtualnych", musisz zacząć płacić za licencję "Advance". Ponownie, nie jest tak, że my w HTG odrzucamy wartość prawdziwego rozwiązania do tworzenia kopii zapasowych, ale jeśli masz napięty budżet, już dostałeś obrazy VM z hiperwizora i potrzebujesz sposobu na zautomatyzowanie swojego " procedury "przywracania DR", możesz znaleźć Xen-Phoenix jako całkowicie rozsądne rozwiązanie zanim podejmiesz zobowiązanie budżetowe.
"Przypadek użycia": masz kilka maszyn wirtualnych, które wymagają przywrócenia. Importowanie w "Centrum Xen" za pomocą kliknięć prawym przyciskiem działa dobrze, ale chcesz, aby proces ten przebiegał automatycznie i zgodnie z harmonogramem. Ten skrypt Bash wykorzystuje polecenie "XE" do wykonywania swoich obowiązków. XE to interfejs linii poleceń Xen (CLI), automatyczny odpowiednik dla wydawania "kliknięć prawym przyciskiem" w "Centrum Xen". Będziemy wywoływać skrypt z Cron, który dostarczy część "planowania". W najprostszej postaci przepływ przywracania to:
* Usunięcie wszystkich zachowań maszyn wirtualnych można całkowicie wyłączyć i obsługuje wyjątki (patrz poniżej).
Do roboty :)
Xen-phoenix można swobodnie uzyskiwać z github, używając zwykłych metod git. Mówiąc to, jeśli nie jesteś jeszcze zaznajomiony z git, możesz pobrać plik zip za pomocą tego linku. Ponieważ skrypt musi działać na jednym z twoich serwerów Xen, powinieneś go tam wydobyć, aby zachować uprawnienia do wykonywania.
wget https://github.com/aviadra/Xen-phoenix/archive/master.zip
rozpakuj master
Chociaż powyższe zadziała, zaleca się użycie metody GIT, aby móc korzystać z przyszłych aktualizacji.
Musimy określić, skąd wziąć eksportowanie maszyn wirtualnych.
Choć losowo wywiercenie w Citrix Xen, znalazłem, że przechowywanie Repozytoria (SRS) są dostępne do użytku pod „/ var / run / sr-mount /% UUID%” gdzie UUID jest unikalny identyfikator SR, które mogą być uzyskane z GUI.
Oznacza to, że możemy użyć zwykłego kreatora "Next -> Next -> Finish", aby utworzyć "mount" do żądanej lokalizacji kopii zapasowej, a następnie poprosić skrypt o użycie tej ścieżki (w taki sposób, aby aplikacja działała w trybie montowania z wiersza poleceń, który jest poza zakresem niniejszego przewodnika).
Aby utworzyć nowy "mount", kliknij prawym przyciskiem myszy nazwę serwera i wybierz Nowy SR.
W tym przykładzie wskażemy Xen na udział Windows, więc wybierz "Udostępnianie plików Windows (CIFS)":
Wypełnij Next -> Next -> Finish.
Uzyskaj identyfikator UUID SR
Aby uzyskać identyfikator UUID SR, po prostu kliknij jego nazwę w Centrum Xen i przejdź do zakładki "Ogólne".
Aby skopiować identyfikator UUID, kliknij go prawym przyciskiem myszy i wybierz "Kopiuj".
Dzięki tym informacjom jesteś gotowy do edycji pliku ustawień.
Projekt Xen-phoenix jest dostarczany w pakiecie z szablonem plików "ustawienia". Ten szablon powinien być edytowany w celu odzwierciedlenia konfiguracji i przekazany jako pierwszy argument skryptu.
Plik ustawień określa:
Ten skrypt przyjmuje plik ustawień jako swój pierwszy argument i inne argumenty jako "Chevrons" do wyszukiwania (oddzielone spacjami). Chevrons, są "łańcuchami", które obsługują wyrażenia regularne, które reprezentują przynajmniej część pożądanej nazwy pliku eksportu VM.
Oznacza to, że w swojej najprostszej postaci będzie wyglądać inwokacja Xen-feniks:
./Xen-phoenix.sh settings.cfg DevTools
Gdzie w powyższym przypadku znajdujemy się w katalogu, w którym znajduje się skrypt i plik ustawień, a "Chevron", którego będzie szukać skrypt, to "DevTools". Spowoduje to, że wszystkie pliki w katalogu eksportu będą importowane z nazwą "DevTools".
Bardziej złożony przykład może wyglądać tak:
./Xen-phoenix.sh settings.cfg [Aa] [Dd] [Bb] [iI] [Dd] ev [Tt] ools
Gdzie w powyższym przykładzie zostaną zaimportowane pliki zawierające słowo "devtools" napisane literami "D" i "T" lub nie-kapitałowymi, a także "AD" i "BI" z lub bez wielkich liter.
Jak wspomniano powyżej, użyjemy Crona do zaplanowania wykonania. Zanim przejdziemy do konfiguracji, tak właśnie jestwysoce rekomendowane że skonfigurowałeś już zainstalowany pakiet SSMTP na swoim serwerze Xen. Chociaż jest to opcjonalny krok, spowoduje to zbieranie "backwash". Posiadanie takiego "zbieracza do płukania wstecznego" może ostrzegać o rzeczach, których skrypt nie jest w stanie wykonać.
Wejdź w tryb edycji crona, wydając:
crontab -e
Jeśli postępujesz zgodnie z powyższymi instrukcjami i chcesz dodać zaplanowaną kopię zapasową w niedzielę o 01:31 (1:31 rano), wpisz poniżej:
31 01 * * sun /root/Xen-phoenix-master/Xen-phoenix.sh /root/Xen-phoenix-master/settings.cfg [Aa] [Dd] DB [Bb] [iI] [Dd] ev [Tt ] ools
Powyższe jest prawidłowe, zakładając, że twój skrypt i plik ustawień znajdują się w katalogu "/ root / Xen-phoenix-master /".
Pisaliśmy o programie perl SendEmail w przeszłości, więc nie ma potrzeby powtarzania tutaj. Wystarczy powiedzieć, że działa tak samo na Linuksie, jak w systemie Windows.
Podczas włączania poczty e-mail jest opcjonalne, jest wysoce zalecane, ponieważ wtedy skrypt będzie w stanie:
Pobierz go na serwer Xen i wypakuj.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Zwróć uwagę na lokalizację, w której został rozpakowany. Będziesz potrzebował go do pliku ustawień.
Xen-Phoenix pobiera stronę ze swojego przodka (Xen-Pocalypse) i daje możliwość szczegółowego wykluczenia maszyny wirtualnej z usuwania całego systemu za pomocą kontrolki TAG. Aby to zrobić, musisz zdefiniować nowe "Pole niestandardowe".
Aby to zrobić, otwórz właściwości serwera lub nawet maszyny wirtualnej. W okienku nawigacji wybierz "Niestandardowe pola".
Jeśli po raz pierwszy zdefiniujesz "pole niestandardowe" (jak w powyższym przykładzie), nie będziesz mieć pola "Phoenix_keeper" do wprowadzania danych, więc musisz je utworzyć. Aby to zrobić, kliknij "Edytuj pola niestandardowe" w wyświetlonym oknie dialogowym, a następnie kliknij "Dodaj ..."
Utwórz pole typu "Tekst" o nazwie "Phoenix_keeper".
Uwaga: Nazwa niestandardowego pola została "zakodowana" w skrypcie, więc NIE MOŻESZ odbiegać od powyższej pisowni, chyba że zmienisz również odpowiedni kod.
Po utworzeniu pola powinieneś zobaczyć:
Zamknij okno. Powinieneś teraz wypełnić pole "Phoenix_keeper", jak na poniższym obrazku.
Teraz wystarczy, że wypełnisz to pole uwagą (każda uwaga to zrobi), co spowoduje, że Xen-phoenix pominie go podczas usuwania.
Chociaż starałem się, aby skrypt był łatwy w użyciu i jak najbardziej odporny na błędy, "świat jest większym laboratorium". Poniższe informacje mogą pomóc Ci ustalić, jakie jest źródło Twoich problemów.
Wycięcie lasu
Całe "logowanie" jest gromadzone przez host Xen uruchamiający skrypt w mechanizmie syslog. Można to oczywiście zobaczyć za pomocą:
mniej + F / var / log / messages
Szukasz słowa kluczowego "Xen-Phoenix".
Uwaga: Citrix ma ustawioną politykę dwóch (2) dni przechowywania dla syslog swoich serwerów. Możesz mieć to na uwadze w przypadku postmortems.
Debugowanie
Jak zauważono w segmencie plików ustawień, istnieje dyrektywa umożliwiająca włączenie debugowania. Włączenie debugowania spowoduje, że skrypt wypisze pełne dane logowania do konsoli i odrzuci je od wysyłania wiadomości e-mail i faktycznego wykonywania importu, chyba że odpowiednie flagi zostaną również ustawione. Możliwe flagi są odnotowane w szablonie pliku ustawień i umożliwiają szczegółowe zdefiniowanie tego, co chcesz debugować.
Mam nadzieję, że nie potrzebowałeś debugowania i zbierasz owoce mojej pracy :)
Wystarczy pomyśleć o całej nędzy, nienawiści i kłamstwach, I wyobraź sobie zniszczenie wszystkiego, czym gardzisz. Powoli z popiołów powstanie feniks ...