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:Aby bezpłatnie odblokować dalszą treść kliknij "Zapisz się" - dostaniesz nielimitowany dostęp do wszystkich treści i wyślę Ci na maila kilka wyjątkowych bonusów !!
Jeśli jesteś już zapisany - Kliknij "Zaloguj się" i podaj swojego maila - treść zostanie odblokowana:Zaloguj się lub Zapisz sięSprawdź Przejdź do zapisuAnulujadotpayAnuluj - 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
- Ustawienie locales na en_US-UTF8
- Aktualizacja /etc/hosts
- Włączenie repozytorium no-subsctption
- 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:
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:
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:
- Instalacja proxmoxa na serwerze z systemem debian 9
- Instalacja proxmoxa z obrazu ISO
- Tworzymy klaster wysokiej dostępności
- Tworzymy nasz pierwszy serwer w HA
- HA od strony systemu – jak działa proxmox