Klasteryzacja w Proxmox VE

Klasteryzacja w Proxmox VE

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 BOINC (Berkeley Open Infrastructure for Network Computing). Ta platforma została pierwotnie stworzona dla projektu SETI@home (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 Proxmox VE.

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 oficjalną dokumentacją 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 — Magia wirtualizacji: wprowadzenie do Proxmox VE.

Początkowo, po zainstalowaniu systemu operacyjnego, pojedynczy serwer działa w Standalone-mode.

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

Klasteryzacja w Proxmox VE
Nadajemy nazwę przyszłemu klastrowi i wybieramy aktywne połączenie sieciowe.

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

Klasteryzacja w Proxmox VE
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.

Klasteryzacja w Proxmox VE

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.

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

Klasteryzacja w Proxmox VE
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ść.

Klasteryzacja w Proxmox VE
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.

Klasteryzacja w Proxmox VE
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.

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

Klasteryzacja w Proxmox VE

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.

Klasteryzacja w Proxmox VE
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.

Klasteryzacja w Proxmox VE
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.

Klasteryzacja w Proxmox VE
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.

Klasteryzacja w Proxmox VE

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

Klasteryzacja w Proxmox VE

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.

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

Klasteryzacja w Proxmox VE
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

Klasteryzacja w Proxmox VE
Po 2 minutach mechanizm HA działał poprawnie i nie znajdując node2 uruchomił naszą VM na node3.

Klasteryzacja w Proxmox VE
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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster