
W poprzednich artykułach zaczęliśmy opowiadać, czym jest Proxmox VE i jak działa. Dziś przedstawimy sposób wykorzystania możliwości klasteryzacji oraz pokażemy, jakie korzyści to przynosi.
Czym jest klaster i po co jest potrzebny? Klaster (z ang. cluster) to grupa serwerów połączonych szybkimi kanałami komunikacyjnymi, która działa i prezentuje się użytkownikowi jako całość. Istnieje kilka podstawowych scenariuszy zastosowania klastra:
- Zapewnienie wysokiej dostępności (High-availability).
- Rozkład obciążenia (Load Balancing).
- Zwiększenie wydajności (High Performance).
- Wykonywanie rozproszonych obliczeń (Distributed computing).
Każdy scenariusz stawia swoje własne wymagania dotyczące elementów klastra. Na przykład klaster przeprowadzający rozproszone obliczenia w sposób priorytetowy wymaga dużej szybkości realizacji operacji na liczbach zmiennoprzecinkowych i niskiej latencji sieci. Takie klastry są często wykorzystywane w pracach badawczo-rozwojowych.
Skoro poruszyliśmy temat rozproszonych obliczeń, warto zauważyć, że istnieje także pojęcie systemu gridowego (z ang. grid — siatka, sieć). Mimo wspólnych cech, nie należy mylić systemu gridowego z klastrem. Grid nie jest klastrem w tradycyjnym rozumieniu. W odróżnieniu od klastra, wchodzące w skład grida węzły są najczęściej heterogeniczne i różnią się niską dostępnością. Takie podejście upraszcza rozwiązywanie problemów związanych z rozproszonymi obliczeniami, jednak nie pozwala na stworzenie z węzłów jedności.
Jasnym przykładem systemu gridowego jest popularna platforma obliczeniowa (Berkeley Open Infrastructure for Network Computing). Ta platforma została pierwotnie stworzona dla projektu (Search for Extra-Terrestrial Intelligence at Home), który zajmuje się problemem poszukiwania inteligencji pozaziemskiej poprzez analizę sygnałów radiowych.
Jak to działaOgromna ilość danych pozyskanych z radioteleskopów jest dzielona na wiele małych części, które są wysyłane do węzłów systemu grida (w projekcie SETI@home rolę takich węzłów pełnią komputery ochotników). Dane są przetwarzane na węzłach, a po zakończeniu przetwarzania wysyłane na centralny serwer projektu SETI. W ten sposób projekt rozwiązuje niezwykle trudne globalne zadanie, nie posiadając wymaganej mocy obliczeniowej.
Teraz, gdy mamy jasne pojęcie o klastrze, zaproponujmy, w jaki sposób można go stworzyć i wykorzystać. Skorzystamy z systemu wirtualizacji z otwartym kodem źródłowym .
Szczególnie ważne przed przystąpieniem do tworzenia klastra jest dokładne zrozumienie ograniczeń i wymagań systemowych Proxmox, a mianowicie:
- maksymalna liczba węzłów w klastrze — 32;
- wszystkie węzły muszą mieć taką samą wersję Proxmox (są wyjątki, ale nie są zalecane w produkcji);
- jeśli w przyszłości planowane jest wykorzystanie funkcjonalności High Availability, to w klastrze powinno być co najmniej 3 węzły;
- dla komunikacji między węzłami muszą być otwarte porty UDP/5404, UDP/5405 dla corosync i TCP/22 dla SSH;
- opóźnienie w sieci między węzłami nie powinno przekraczać 2 ms.
Tworzenie klastra
Ważne! Poniższa konfiguracja jest testowa. Nie zapomnij sprawdzić się z Proxmox VE.
Aby uruchomić testowy klaster, wzięliśmy trzy serwery z zainstalowanym hyperwizorem Proxmox o tej samej konfiguracji (2 rdzenie, 2 GB pamięci RAM).
Jeśli chcesz dowiedzieć się, jak można zainstalować Proxmox, zalecamy przeczytanie naszego poprzedniego artykułu — .
Początkowo, po zainstalowaniu systemu operacyjnego, pojedynczy serwer działa w Standalone-mode.

Stworzymy klaster, naciskając przycisk Create Cluster w odpowiedniej sekcji.

Nadajemy nazwę przyszłemu klastrowi i wybieramy aktywne połączenie sieciowe.

Naciskamy przycisk Create. Serwer wygeneruje 2048-bitowy klucz i zapisze go wraz z parametrami nowego klastra w plikach konfiguracyjnych.

Napis TASK OK świadczy o pomyślnym zakończeniu operacji. Teraz, patrząc na ogólne informacje o systemie, widać, że serwer przeszedł w tryb klastra. Na razie klaster składa się tylko z jednego węzła, więc obecnie nie ma tych możliwości, dla których klaster jest potrzebny.

Dołączenie do klastra
Zanim połączymy się z utworzonym klastrem, musimy uzyskać informacje niezbędne do połączenia. W tym celu przechodzimy do sekcji Klaster i klikamy przycisk Informacje o dołączeniu.

W otwartym oknie interesuje nas zawartość o tej samej nazwie pola. Należy ją skopiować.

Tutaj zakodowane są wszystkie niezbędne parametry połączenia: adres serwera do połączenia i odcisk cyfrowy. Przechodzimy na serwer, który ma zostać dołączony do klastra. Klikamy przycisk Dołącz do klastra i w otwartym oknie wklejamy skopiowaną zawartość.

Pola Adres Peera i Odcisk zostaną wypełnione automatycznie. Wprowadzamy hasło root dla węzła numer 1, wybieramy połączenie sieciowe i klikamy przycisk Dołącz.

W trakcie dołączania do klastra strona internetowa GUI może przestać się aktualizować. To normalne, po prostu odświeżamy stronę. W ten sam sposób dodajemy kolejny węzeł i w rezultacie uzyskujemy kompletny klaster z 3 działającymi węzłami.

Teraz możemy kontrolować wszystkie węzły klastra z jednego GUI.

Organizacja wysokiej dostępności
Proxmox „prosto z pudełka” wspiera funkcjonalność organizacji HA zarówno dla maszyn wirtualnych, jak i dla kontenerów LXC. Narzędzie ha-manager wykrywa i obsługuje błędy i awarie, przeprowadzając awaryjne przełączanie z awaryjnego węzła na działający. Aby mechanizm działał poprawnie, virtualne maszyny i kontenery muszą mieć wspólne przechowywanie plików.
Po aktywacji funkcjonalności wysokiej dostępności, stos oprogramowania ha-manager zacznie nieprzerwanie monitorować stan działania maszyny wirtualnej lub kontenera oraz asynchronicznie współdziałać z innymi węzłami klastra.
Przyłączamy wspólne przechowywanie
Na przykład uruchomiliśmy małe przechowywanie plików NFS pod adresem 192.168.88.18. Aby wszystkie węzły klastra mogły z niego korzystać, należy wykonać następujące czynności.
Wybieramy w menu interfejsu webowego Centrum danych — Przechowywanie — Dodaj — NFS.

Wypełniamy pola ID i Serwer. W rozwijanej liście Eksport wybieramy odpowiedni katalog z dostępnych i na liście Zawartość — wymagane typy danych. Po naciśnięciu przycisku Dodaj magazyn zostanie podłączony do wszystkich węzłów klastra.

Podczas tworzenia maszyn wirtualnych i kontenerów na dowolnym z węzłów podajemy nasz magazyn jako typ przechowywania.
Konfigurujemy HA
Na przykład stworzymy kontener z Ubuntu 18.04 i skonfigurujemy dla niego wysoką dostępność. Po utworzeniu i uruchomieniu kontenera wchodzimy w sekcję Datacenter — HA — Dodaj. W otwartym oknie podajemy ID maszyny wirtualnej/kontenera oraz maksymalną liczbę prób restartu i przenoszenia między węzłami.
Jeśli ta liczba zostanie przekroczona, hypervisor oznaczy VM jako awaryjną i przełączy ją w stan Błąd, po czym przestanie wykonywać z nią jakiekolwiek działania.

Po naciśnięciu przycisku Dodaj narzędzie ha-manager powiadomi wszystkie węzły klastra, że teraz VM z określonym ID jest kontrolowana i w przypadku awarii należy ją uruchomić ponownie na innym węźle.

Spowoduj awarię
Aby zobaczyć, jak dokładnie działa mechanizm przełączania, odłączmy node1 od zasilania. Patrzymy z innego węzła, co dzieje się z klastrem. Widzimy, że system zarejestrował awarię.

Działanie mechanizmu HA nie oznacza ciągłości pracy VM. Gdy tylko węzeł "upadł", praca VM zostaje tymczasowo zatrzymana do momentu automatycznego restartu na innym węźle.
I w tym momencie zaczyna się "magia" — klaster automatycznie przydzielił węzeł do uruchomienia naszej VM i w ciągu 120 sekund praca została automatycznie przywrócona.

Odłączamy node2 od zasilania. Zobaczymy, czy klaster wytrzyma i czy VM automatycznie wróci do stanu roboczego.

Niestety, jak widać, mamy problem z tym, że na jedynym, pozostałym w życiu węźle nie ma quorum, co automatycznie wyłącza działanie HA. Wydajemy w konsoli polecenie wymuszenia ustawienia quorum.
pvecm oczekiwano 1 
Po 2 minutach mechanizm HA działał poprawnie i nie znajdując node2 uruchomił naszą VM na node3.

Gdy tylko ponownie włączyliśmy node1 i node2, praca klastra została całkowicie przywrócona. Zauważ, że VM nie migruje sama z powrotem na node1, ale można to zrobić ręcznie.
Podsumowując
Opowiedzieliśmy o mechanizmie klasteryzacji w Proxmox oraz pokazaliśmy, jak skonfigurować HA dla maszyn wirtualnych i kontenerów. Umiejętne wykorzystanie klasteryzacji i HA znacznie zwiększa niezawodność infrastruktury oraz zapewnia przywracanie po awariach.
Przed utworzeniem klastra należy od razu zaplanować, do jakich celów będzie on używany i jak bardzo będzie musiał być skalowany w przyszłości. Należy również sprawdzić gotowość infrastruktury sieciowej do pracy z minimalnymi opóźnieniami, aby przyszły klaster działał bez zakłóceń.
Powiedzcie nam — korzystacie z możliwości klasteryzacji w Proxmox? Czekamy na wasze komentarze.
Poprzednie artykuły na temat hyperwizora Proxmox VE:
Źródło: habr.com
