Proxmox-a można używać jako pojedyńczy serwer ( opis instalacji i konfiguracji znajdziesz w tym wpisie) lub połączyć kilka maszyn w jeden większy klaster.

Połączenie kilku maszyn zwiększa dostępność i niezawodność, pozwala na swobodne migrowanie VM między serwerami a przede wszystkim umożliwia wykonanie prac serwisowych bez przerwy w działaniu wirtualnych maszyn.

W przypadku niespodziewanej awarii jednej fizycznej maszyny VM są automatycznie uruchamiane na innym serwerze, a my mamy czas na naprawienie usterki.

Wymagania/zalecenia dotyczące postawienia klastra:

  • minimum 3 serwery, by było quorum
  • serwery w klastrze muszą być w tej samej podsieci
  • najlepszym rozwiązaniem jest utworzenie prywatnej podsieci pod komunikacje między serwerami – połączenie musi być szybkie ( gbit) i mieć bardzo niskie opóźnienie
  • serwery muszą mieć włączone wsparcie wirtualizacji dla CPU
  • dodatkowo polecam włączyć wsparcie dla nested virtualization:
  • Jako format obrazów naszych wirtualnych maszyn polecam raw
  • jako cache dla dysku – writeback
  • Każdy serwer musi mieć minimum dwa punkty montowania/dyski – jeden na system (OS + proxmox), drugi dedykowany dla ceph

W moim przypadku wszystkie 3 serwery-matki tworzące klaster to tak naprawdę VM na proxmoxie – dla celów testowych jest to w zupełności wystarczające i nie ma sensu kupować 3 fizycznych maszyn.

Każda vm miała przypisany 1 publiczny ip – na potrzeby tego artykułu są to:

Instalacja proxmox:

Na każdym serwerze (opisywane dalej jako srv1,srv2 i srv3) został zainstalowany i skonfigurowany proxmox – opis instalacji proxmox znajdziesz tutaj, więc wykonaj kroki od początku do momentu konfiguracji sieci i restartu serwera, i wróć do tego wpisu.

Konfiguracja po instalacji proxmox-a

  1. Ustawienie locales na en_US-UTF8
  2. Aktualizacja /etc/hosts
  3. Włączenie repozytorium no-subsctption
  4. aktualizacja systemu

Punkt pierwszy: ustawienie locales:

Punkt drugi – plk /etc/hosts

Ustawiamy odpowiednie adresy ip i nazwy wszystkich trzech serwerów – w moim przypadku to:

Punkt trzeci – repozytorium.

Usuwamy repozytoria enterprise:

Dodajemy zwykłe repozytorium:

Punkt czwarty – aktualizacja systemu:

Tworzymy klaster

Na serwerze srv1 tworzymy klaster o nazwie cluster01:

Dodajemy na serwerze srv2  nasz pierwszy serwer:

To samo robimy na serwerze srv3:

Sprawdzamy status naszego klastra:

Gotowe – mamy już skonfigurowany klaster składający się z 3 serwerów.

Klaster współdzieli ze sobą pliki konfiguracyjne znajdujące się w /etc/pve – wystarczy więc że dodamy cokolwiek do wskazanego katalogu, a zostanie to automatycznie rozpropagowane na inne serwery.

Po zalogowaniu do panelu web do dowolnego serwera widzimy wszystkie trzy serwery na liście:

Tworzymy storage wysokiej dostępności

Do stworzenia storage wykorzystamy narzędzie dostarczone z proxmox – pveceph.

Instalujemy pveceph na każdym z serwerów:

Po zainstalowaniu na wszystkich serwerach tworzymy konfigurację sieci dla klastra – ponieważ /etc/pve jest współdzielone poniższą komendę wykonujemy tylko na jednym serwerze.
W moim przypadku korzystam z sieci 5.187.50.196/26, dlatego taką też ustawiam – w twoim będzie to sieć analogiczna do tej z której korzystasz:

Konfiguracja zostaje zapisana do pliku /etc/pve/ceph.conf i jest widoczna na każdym z serwerów ( dlatego zainicjowaliśmy ją tylko na jednym):

Aby zachować quorum tworzymy monitoring na każdym z trzech serwerów:

Po utworzeniu sprawdzamy status:

 

Jak widać całość działa poprawnie, to samo możemy zobaczyć po zalogowaniu się poprzez przeglądarkę, i po przejściu do zakładki “Ceph” :

Tworzymy OSD

Wszystkie dane dla naszego klastra będziemy trzymali na storage obiektowym opartym o ceph – czyli nie będziemy mieli plików, a obiekty ( object storage device tj. OSD).

OSD instalujemy na dodatkowych dyskach przeznaczonych pod klaster – w moim przypadku system jest na /dev/vda a pod klaster mam przeznaczone /dev/vdb:

Jeżeli chcemy użyć dysku na którym są dane/system plików – musimy go najpierw wyczyścić ( oczywiście należy pamiętać o kopii tych danych).

Na przykładzie dysku /dev/vdb nadpiszmy go zerami, a następnie usuńmy wszystkie dane:

Tworzymy osd na każdym z serwerów:

Po utworzeniu osd na każdym z serwerów możemy sprawdzić nasze osd poprzez konsole:

Lub poprzez przeglądarkę:

Kolejnym krokiem będzie utworzenie puli (pool) – dla odmiany zrobimy to poprzez przeglądarkę.

W tym celu wybieramy nasz serwer, następnie zakładkę “Pool” i “Create”:

Ustawiamy:

  • Name: nazwa
  • Size: ilość replik jaka ma być robiona
  • Min. Size – minimalna ilość replik jaka ma być robiona
  • Crush Rule i pg_num – zostawiamy domyślne
  • AddStorage – zaznaczamy

Na potrzeby testów polecam ustawić Size na 2 i min. size na 1 – na produkcji lepiej ustawić odpowiednio 3 i 2.
Im więcej jednoczesnych replik tym zapewniamy wyższą dostępność, jednak też generuje to większe obciążenie dla klastra.

Po kliknięciu create nasza pula jest utworzona – możemy teraz tworzyć wirtualne maszyny w klastrze i przenosić je w trybie “live migration”.

Jest to trzecia część serii o proxmoxie – jeśli dopiero trafiłeś na ten wpis polecam zapoznać się z poprzednimi i kolejnymi wpisami:

  1. Instalacja proxmoxa na serwerze z systemem debian 9
  2. Instalacja proxmoxa z obrazu ISO
  3. Tworzymy klaster wysokiej dostępności
  4. Tworzymy nasz pierwszy serwer w HA
  5. HA od strony systemu – jak działa proxmox

 

5 (100%) Ocen: 2