Czy kiedykolwiek musiałeś wykonać kopię zapasową maszyn wirtualnych Citrix Xen (VM), ale nie chciałeś tego zrobić? HTG ma właśnie skrypt bash dla ciebie z Xen-Pocalypse.
Zdjęcie: h.koppdelaney, Stuck in Custom and Hotfortech.
Jedną z fajnych rzeczy w Citrix Xen jest to, że wiele z jego funkcji wolny 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". Nawet wtedy płacisz tylko za kopie zapasowe na poziomie dysku, które nie są wystarczające dla wielu typów obciążeń, takich jak katalog Active Directory, bazy danych itp. Aby temu zaradzić, możesz chcieć "Migać i powrócić na żywo", dzięki czemu można zaoszczędzić cały czas. stan maszyny, w tym zawartość pamięci RAM. Ta funkcja jest jednak częścią edycji "Enterprise" i "Platinum", które są jeszcze droższe. To nie jest tak, że my w HTG odrzucamy wartość prawdziwego oprogramowania do tworzenia kopii zapasowych, ale jeśli masz ograniczony budżet i nie masz nic na przestoje podczas operacji tworzenia kopii zapasowych, możesz uznać Xen-Pocalypse za całkowicie rozsądne rozwiązanie przed złożeniem zobowiązania budżetowego.
"Przypadek użycia": masz kilka maszyn wirtualnych, które wymagają kopii zapasowej. "Wyłączanie maszyny wirtualnej i eksportowanie jej jako pliku" z "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 zapasowy to:
Do roboty :)
Xen-Pocalypse można swobodnie uzyskać 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-pocalypse/archive/master.zip
rozpakuj master
Chociaż powyższe zadziała, zaleca się użycie metody GIT, aby móc korzystać z przyszłych aktualizacji.
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ń.
Citrix Xen umożliwia skonfigurowanie "pól niestandardowych" do filtrowania. Stworzymy Pola, a następnie wypełnimy je informacjami używanymi przez Xen-Pocalypse. Xen-pocalypse rozpoznaje 3 kontrolne TAG-y, które oznaczają nazwę znacznika do tworzenia kopii zapasowych i relacji rodzic-dziecko. Jeśli nie zamierzasz używać metody wprowadzania plików, MUSISZ utworzyć co najmniej pole nazwy zmiennej zapasowej.
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 relację (jak w powyższym przykładzie), nie będziesz mieć żadnych pól do wprowadzania danych, więc musisz je utworzyć. Aby to zrobić, kliknij "Edytuj pola niestandardowe" w wyświetlonym oknie dialogowym, kliknij "Dodaj ..."
Utwórz trzy (3) pola typu "Tekst". Jeden będzie się nazywał "BackupTAG", a pozostałe "Parent" i "Children".
Uwaga: Nazwy niestandardowych pól zostały "zakodowane" w skrypcie, więc NIE MUSISZ odbiegać od powyższej pisowni, chyba że zmienisz również odpowiedni kod.
Po utworzeniu wszystkich pól powinieneś zobaczyć:
Zamknij okno. Powinieneś teraz wypełnić pola "BackupTAG", "Parent" i "Children", jak na poniższym obrazku.
Teraz wszystko, co musisz zrobić, to wyznaczyć, które maszyny wirtualne należą do "BackupTAG".
Na przykład w firmie, w której scenariusz był rozwijany, mieliśmy maszyny wirtualne, które miały być archiwizowane co tydzień w czwartek i piątek, harmonogram dla maszyn wirtualnych z produktem Atlassian i niektóre, które miały być tworzone tylko raz w miesiącu. Nasz przegląd wyglądał następująco:
Gdzie na przykład "weekly-fri" był tekst, który wprowadziliśmy do "BackupTAG" "Custom Field". Schludnie, huh? :)
Rodzice i dzieci (opcjonalnie)
Prawdziwe piękno tego skryptu polega na tym, że wspiera on "rodzica" w relacjach "dzieci". Oznacza to, że możliwe jest ustawienie listy maszyn wirtualnych "potomnych", które zostałyby wyłączone i zarchiwizowane przed rodzicem, oraz że te dzieci zostaną włączone z powrotem po tym, jak rodzic zakończy tworzenie kopii zapasowej i zostanie zawrócony na.Jest to przydatne w przypadkach, gdy wyłączenie nadrzędnej maszyny wirtualnej spowoduje, że usługa w tym urządzeniu stanie się niedostępna. Taka sytuacja oznaczałaby, że usługa na podrzędnej maszynie wirtualnej byłaby niedostępna dwa razy, raz dla procesu tworzenia kopii zapasowej dziecka i raz dla rodzica. Stworzenie tej relacji pokonuje ten problem.
Na przykład, wszystkie nasze maszyny wirtualne Atlassian używały jednej maszyny wirtualnej DataBase (DB), która również ma być zapisana w kopii zapasowej. Zauważając, że DB VM jest "nadrzędną" dla innych maszyn wirtualnych, można zapewnić właściwą kolejność wyłączania -> tworzenie kopii zapasowych -> uruchomienie.
W chwili pisania tego tekstu ta funkcja ma kilka zastrzeżeń:
Aby utworzyć tę relację, przejdź do właściwości maszyny wirtualnej. Jeśli jest to "rodzic", napisz, kim są jego dzieci i jeśli jest to "dziecko", napisz, kim jest jego rodzic. Na przykład:
Uwaga: Brak wyznaczenia rodzica dla dziecka może spowodować, że dziecko zostanie uruchomione, zanim jego rodzic jest gotowy i może spowodować jego dwukrotne utworzenie.
Ze względów historycznych Xen-Pocalypse obsługuje także tworzenie listy maszyn wirtualnych, które mają być kopiowane jako plik tekstowy. Chociaż "kod" nadal istnieje, jego funkcjonalność jest znacznie gorsza od metody TAG i dlatego nie jest zalecana. W związku z tym, jeśli z jakiegoś powodu wolisz korzystać z metody listy, obowiązują następujące ograniczenia:
Aby wygenerować listę, skopiuj nazwę maszyny wirtualnej z centrum Xen lub wykonaj na hoście Xen:
xe vm-list | grep nazwa-etykieta | awk
"print 4 $" | sortować
Skopiuj powyższą listę do zwykłego pliku tekstowego.
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 "Następny -> Następny -> Koniec", aby utworzyć uchwyt do żądanej lokalizacji kopii zapasowej, a następnie poprosić skrypt, aby użył tej ścieżki (jak ma to miejsce w odniesieniu do montowania z poziomu wiersza poleceń), ale robi więc wykracza poza zakres tego 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, po prostu kliknij prawym przyciskiem myszy i wybierz "Kopiuj".
Dzięki tym informacjom jesteś gotowy do edycji pliku ustawień.
Projekt Xen-Pocalypse 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:
Metoda do uzyskiwania maszyn wirtualnych, których kopie zapasowe mają być tworzone - domyślną metodą są TAG. Możesz zmienić to na FILE, ale nie jest to zalecane.
Lokalizacja miejsca docelowego kopii zapasowej - Jeśli postępowałeś zgodnie z instrukcjami do tego punktu, musisz tylko zastąpić% UUID% SR, jak to zostało uzyskane z góry.
Lokalizacja SendEmail - Jeśli zdecydowałeś się włączyć Email, musisz wprowadzić tutaj, w którym wyodrębniono plik wykonywalny perl tutaj.
Szczegóły e-maila -Ponownie, jeśli masz włączoną pocztę e-mail, musisz zdefiniować szczegóły, takie jak: Do, Od, Nazwa / IP itd. ".
Kompresja - Domyślnie jest to ustawione na "Nie", ponieważ włączenie go spowoduje utworzenie mniejszego pliku kopii zapasowej, spowoduje to także uruchomienie procedury tworzenia kopii zapasowej na znacznie dłuższy czas.
Sprawdź wolne miejsce w miejscu docelowym - To sprawi, że skrypt sprawdzi, czy utworzenie kopii zapasowej maszyny wirtualnej nie spowoduje zwolnienia wolnej przestrzeni kopii zapasowej poniżej 10 GB. Ma to na celu zapewnienie maksymalnej ilości maszyn wirtualnych zamiast jednej bardzo dużej maszyny wirtualnej. Obliczenia dokonuje się przy użyciu całkowitej wielkości dysku brutto wszystkich HD powiązanych z maszyną wirtualną.
Debugowanie - Domyślnie debugowanie jest wyłączone z wartością "0" (zero). Nie trzeba go włączać, ale jeśli to zrobisz, w segmencie rozwiązywania problemów pojawi się więcej informacji.
W najprostszej formie będzie wyglądać inwokacja Xen-Pocalypse:
./Xen-backup.sh settings.cfg weekly-fri
Gdzie w powyższym przypadku znajdujemy się w katalogu, w którym znajduje się skrypt i plik ustawień. "Tag", którego będzie szukać skrypt, to "weekly-fri".
Jak wspomniano powyżej, użyjemy Crona do zaplanowania wykonania. Zanim przejdziemy do konfiguracji, tak właśnie jest wysoce rekomendowane że skonfigurowałeś już zainstalowany pakiet SSMTP na swoim serwerze Xen. Chociaż jest to opcjonalny krok, spowoduje to zbieranie danych z płukania zwrotnego. Posiadanie takiego "zbieracza wstecznego" może ostrzegać o rzeczach, których skrypt nie jest w stanie wykonać.
Przejdź do edycji crona, wydając więcej:
crontab -e
Jeśli postępujesz zgodnie z powyższymi instrukcjami i chcesz dodać zaplanowaną kopię zapasową do piątku o 18:01 (18:01), wpisz poniżej:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg tygodniowo-fri
Powyższe jest poprawne, zakładając, że twój skrypt i plik ustawień znajdują się w "/ root / Xen-pocalypse-master /".
Chociaż starałem się, aby skrypt był łatwy w użyciu i jak najbardziej niezawodny, "Świat jest większym laboratorium". Poniższe informacje mogą pomóc Ci ustalić, jakie jest źródło Twoich problemów.
Postęp
Możesz użyć tej jednej linijki, aby szybko "obejrzeć" wszystkie zadania w toku, aby zobaczyć, czy faktycznie się rozwijają, czy faktycznie utknęły.
podczas gdy [-e / dev / null]; zrobić dla maszyny wirtualnej w "$ (lista zadań xe | grep uuid | awk" print $ 5 ') "; wykonaj xe task-param-get param-name = postęp uuid = $ VM; sleep 1; Gotowe; Gotowe
Aby zatrzymać oglądanie, użyj Ctrl + C, aby zahamować "pętlę while".
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-Pocalypse".
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 logowanie do konsoli i odrzuci je od wysyłania e-maili i faktycznego wykonywania eksportu, 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 :)
Thrust, mój człowieku, wkrótce staniesz się decepticonem numer jeden ...