Główna » jak » Jak wykonać kopię zapasową Citrix Xen VM za darmo za pomocą Xen-Pocalypse (Bash)

    Jak wykonać kopię zapasową Citrix Xen VM za darmo za pomocą Xen-Pocalypse (Bash)

    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 są niewystarczające dla wielu typów obciążeń, takich jak katalog Active Directory, bazy danych itp. Aby temu zaradzić, możesz chcieć "Migać i przywrócić Live memory", co może 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. Nie chodzi o to, że w HTG odrzucamy wartość prawdziwego oprogramowania do tworzenia kopii zapasowych, ale jeśli masz napięty 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.

    Przegląd

    "Przypadek użycia": masz kilka maszyn wirtualnych, które wymagają kopii zapasowej. "Wyłączenie 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 używa polecenia "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:

    • Wyłącz docelową maszynę wirtualną.
    • Wyeksportuj maszynę wirtualną jako plik do lokalizacji kopii zapasowej.
    • Jeśli maszyna wirtualna została włączona, przed rozpoczęciem tworzenia kopii zapasowej zostanie ponownie włączona.

    Do roboty :)

    Uzyskaj skrypt

    Xen-Pocalypse można swobodnie uzyskać z github, używając zwykłych metod git. Mówiąc to, jeśli jeszcze nie jesteś 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.

    Uzyskaj Send Send (opcjonalnie)

    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 opcjonalna, jest wysoce zalecane, ponieważ wtedy skrypt będzie w stanie:

    • Poinformuj Cię, kiedy to się zaczęło i skończyło działać.
    • Ostrzegaj o wszelkich błędach, które był w stanie wykryć i obsłużyć.
    • Poinformuj o dyskwalifikacji kopii zapasowych z powodu problemów z przestrzenią. (To zachowanie można wyłączyć, jeśli nie jest to pożądane)

    Pobierz go na serwer Xen i wyodrębnij.

    wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
    tar xvzhf sendEmail-v1.56.tar.gz

    Zanotuj lokalizację, do której ją wyodrębniono. Będziesz potrzebował go do pliku ustawień.

    Definiowanie tagów

    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 wyznaczają 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 panelu nawigacji wybierz "Pola niestandardowe".

    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 "Rodzic" i "Dzieci".

    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 powstał skrypt, 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ć archiwizowane 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, co? :)

    Rodzice i dzieci (opcjonalnie)

    Prawdziwym pięknem tego skryptu jest to, że wspiera on "rodzica" w relacjach "potomnych". 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 zakończeniu operacji tworzenia kopii zapasowej przez rodzica i po ponownym włączeniu. na. Jest to przydatne w przypadkach, w których wyłączenie nadrzędnej maszyny wirtualnej spowoduje niedostępność usługi w potomstwie. Taka sytuacja oznaczałaby, że usługa na potomnej 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. Więc zauważając, że DB VM jest "rodzicem" dla innych maszyn wirtualnych, właściwa kolejność wyłączenia -> kopia zapasowa -> uruchomienie, można zapewnić.

    W momencie pisania tego tekstu ta funkcja ma kilka zastrzeżeń:

    1. Nazwy maszyn wirtualnych, które mają mieć taką relację, nie mogą zawierać spacji. Będziesz musiał usunąć spacje z nazw maszyn wirtualnych, ponieważ będą one rozdzielane spacjami, tak jak w poniższym przykładzie.
    2. Może być tylko jeden rodzic. Wyznaczenie więcej niż jednego nie jest nawet planowane, nie wspominając już o testowanych.

    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..

    Metoda FILE (opcjonalnie)

    Ze względów historycznych Xen-Pocalypse obsługuje również tworzenie listy maszyn wirtualnych, które mają być kopiowane jako plik tekstowy. Podczas gdy "kod" nadal tam jest, 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:

    1. Nazwy maszyn wirtualnych nie mogą zawierać spacji ani znaków specjalnych.
    2. W każdym wierszu może być tylko jedna nazwa maszyny wirtualnej.
    3. Puste linie nie są dozwolone.

    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.

    Lokalizacja kopii zapasowej

    Podczas losowego przeglądania w Citrix Xen odkryłem, że repozytorium pamięci masowej (SR) jest dostępne do użycia w "/ var / run / sr-mount /% UUID%", gdzie UUID jest unikalnym identyfikatorem SR, który może 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ć, aby skrypt używał tej ścieżki (jak to jest przeznaczone do manipulowania przy montowaniu z 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ń.

    Skonfiguruj plik 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 ze wskazówkami 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ć pocztę e-mail, musisz wprowadzić tutaj, gdzie został wyodrębniony plik wykonywalny Perla.

    Szczegóły poczty e-mail - Ponownie, jeśli masz włączone wiadomości e-mail, musisz zdefiniować szczegóły, takie jak: Do, Od, Nazwa / adres IP itp. ".

    Kompresja - Domyślnie jest to ustawione na "Nie", ponieważ włączenie go spowoduje utworzenie mniejszego pliku kopii zapasowej, spowoduje to również uruchomienie procedury tworzenia kopii zapasowej przez znacznie dłuższy czas.

    Sprawdź wolne miejsce w miejscu docelowym - To sprawi, że skrypt sprawdzi, czy wykonanie kopii zapasowej maszyny wirtualnej nie spowoduje zwolnienia wolnej pamięci kopii zapasowej poniżej 10 GB. Ma to na celu zapewnienie większej ilości kopii maszyn wirtualnych zamiast tylko jednej bardzo dużej maszyny wirtualnej. Obliczenie odbywa się przy użyciu całkowitej wielkości dysku brutto wszystkich dysków twardych powiązanych z maszyną wirtualną.

    Debugowanie  - Wartością domyślną jest wyłączenie debugowania 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.

    Realizacja / Planowanie

    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, jest wysoce rekomendowane skonfigurować 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 /".

    Rozwiązywanie problemów

    Podczas gdy 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.

    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 w martwym punkcie.

    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. Być może zechcesz o tym pamiętać w przypadku postmortems.

    Debugowanie

    Jak zauważono w segmencie plików ustawień, istnieje dyrektywa, aby włączyć debugowanie. Włączenie debugowania spowoduje, że skrypt wypisze pełne logowanie do konsoli i odrzuci je od wysyłania wiadomości e-mail i przeprowadzania eksportów, chyba że zostaną ustawione odpowiednie flagi. 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 :)


    Pchnięcie, mój człowieku, wkrótce staniesz się decepticonem numer jeden ...