
I tidligere artikler begyndte vi at fortælle om, hvad Proxmox VE er, og hvordan det fungerer. I dag vil vi fortælle om, hvordan man kan bruge cluster-funktionalitet, og hvilke fordele det giver.
Hvad er et cluster, og hvorfor er det nødvendigt? Et cluster (fra engelsk cluster) er en gruppe af servere, der er forbundet med hurtige kommunikationskanaler, som arbejder og præsenterer sig for brugeren som én enhed. Der er flere grundlæggende scenarier for brug af clusters:
- Sikring af fejltolerance (High-availability).
- Load Balancing (Load Balancing).
- Forøgelse af ydeevne (High Performance).
- Udførelse af distribueret computing (Distributed computing).
Hvert scenarie stiller sine egne krav til elementerne i clusteret. For eksempel er et hovedkrav for et cluster, der udfører distribueret computing, høj hastighed ved flydende punktoperationer og lav netværkslatens. Sådanne clusters bruges ofte til forskningsformål.
Da vi berører emnet distribueret computing, er det værd at bemærke, at der også findes et begreb kaldet grid-system (fra engelsk grid - gitter, netværk). På trods af den generelle lighed, bør man ikke forveksle et grid-system med et cluster. Et grid er ikke et cluster i traditionel forstand. I modsætning til clusteret er noderne i et grid ofte heterogene og har ofte lav tilgængelighed. Denne tilgang forenkler løsningen af opgaver inden for distribueret computing, men gør det ikke muligt at skabe en samlet enhed af noderne.
Et tydeligt eksempel på et grid-system er den populære beregningsplatform (Berkeley Open Infrastructure for Network Computing). Denne platform blev oprindeligt skabt til projektet (Search for Extra-Terrestrial Intelligence at Home), der beskæftiger sig med problemet med at finde udenjordisk intelligens ved at analysere radiosignaler.
Hvordan fungerer detDen enorme mængde data, der er modtaget fra radioteleskoper, opdeles i mange små stykker, som sendes til noderne i grid-systemet (i SETI@home-projektet fungerer frivillige computere som sådanne noder). Data behandles på noderne, og efter behandlingen sendes de tilbage til centralserveren for SETI-projektet. På denne måde løser projektet en kompleks global opgave uden at have de nødvendige beregningsressourcer til rådighed.
Nu hvor vi har en klar forståelse af, hvad et klynge er, lad os se på, hvordan man kan oprette og implementere den. Vi vil bruge et virtualiseringssystem med open source. .
Det er især vigtigt, før man påbegynder oprettelsen af en klynge, at have en klar forståelse af begrænsningerne og systemkravene for Proxmox, nemlig:
- maksimalt antal noder i klyngen — 32;
- alle noder skal have den samme version af Proxmox (der er undtagelser, men de anbefales ikke til produktion);
- hvis der på længere sigt er planer om at bruge High Availability-funktionaliteten, skal klyngen have mindst 3 noder;
- for at noderne kan interagere med hinanden, skal portene være åbne UDP/5404, UDP/5405 for corosync og TCP/22 for SSH;
- netværksforsinkelsen mellem noderne må ikke overstige 2 ms.
Oprettelse af klynge
Vigtigt! Den nedenfor angivne konfiguration er testmæssig. Husk at tjekke med Proxmox VE.
For at starte en testklynge har vi taget tre servere med den samme konfiguration af Proxmox hypervisor (2 kerner, 2 GB RAM).
Hvis du vil vide, hvordan man kan installere Proxmox, anbefaler vi at læse vores tidligere artikel — .
I starten, efter installation af OS, fungerer den enkeltstående server i Standalone-mode.

Lad os oprette en klynge ved at klikke på knappen Create Cluster i den relevante sektion.

Vi angiver navnet på den kommende klynge og vælger den aktive netværksforbindelse.

Vi klikker på knappen Create. Serveren genererer en 2048-bit nøgle og gemmer den sammen med parametrene for den nye klynge i konfigurationsfilerne.

Meddelelsen TASK OK indikerer, at operationen er udført med succes. Nu kan vi se på systemets generelle oplysninger, at serveren er gået ind i klyngetilstand. Indtil videre består klyngen kun af én node, hvilket betyder, at den ikke har de funktioner, der kræves for at være en klynge.

Tilknytning til klynge
Før vi kan tilslutte os den oprettede klynge, skal vi have oplysninger til at udføre tilslutningen. Gå derfor ind i afsnittet Cluster og trykker på knappen Join Information.

I det åbne vindue er vi interesserede i indholdet af det samme felt. Dette skal kopieres.

Her er alle nødvendige forbindelsesparametre indkodet: serveradresse til forbindelse og det digitale fingeraftryk. Vi går til serveren, der skal inkluderes i klyngen. Klik på knappen Join Cluster og indsæt det kopierede indhold i det åbne vindue.

Felter Peer Address og Fingerprint vil blive udfyldt automatisk. Indtast root-adgangskoden til node nummer 1, vælg netværksforbindelsen, og klik på knappen Join.

Under tilslutningen til klyngen kan GUI-websiden stoppe med at opdatere. Det er normalt, bare genindlæs siden. På samme måde tilføjer vi endnu en node og ender med at få en fuldt fungerende klynge med 3 aktive noder.

Nu kan vi kontrollere alle noder i klyngen fra et enkelt GUI.

Organisering af høj tilgængelighed
Proxmox understøtter "ud af boksen" funktionen til at organisere HA både for virtuelle maskiner og LXC-containere. Værktøjet ha-manager opdager og håndterer fejl og nedbrud ved at udføre failover fra den fejlede node til den fungerende. For at mekanismen fungerer korrekt, skal de virtuelle maskiner og containere have et fælles fillager.
Når funktionen høj tilgængelighed er aktiveret, vil softwarestakken ha-manager kontinuerligt overvåge status for den virtuelle maskine eller container og asynkront interagere med de andre noder i klyngen.
Vi tilslutter det fælles lager
Som eksempel har vi opsat et lille NFS-filager på adressen 192.168.88.18. For at alle noder i klyngen kan bruge det, skal vi udføre følgende handlinger.
Vælg i menuen i webgrænsefladen Datacenter — Storage — Add — NFS.

Udfyld felterne ID og Server. I den dropdown-liste Eksportér vælger vi den ønskede mappe fra de tilgængelige, og i listen Content — de nødvendige datatyper. Efter at have klikket på knappen Tilføj vil lageret blive tilsluttet til alle noder i klyngen.

Når vi opretter virtuelle maskiner og containere på en hvilken som helst af noderne, angiver vi vores storage som lager.
Vi opsætter HA
Som eksempel vil vi oprette en container med Ubuntu 18.04 og konfigurere høj tilgængelighed for den. Efter oprettelsen og opstarten af containeren går vi til sektionen Datacenter — HA — Add. I det åbnede felt angiver vi ID for den virtuelle maskine/container og det maksimale antal genstart- og flytteforsøg mellem noderne.
Hvis dette antal overskrides, vil hypervisoren markere VM som fejlbehæftet og sætte den i fejltilstand, hvorefter den stopper med at udføre handlinger med den.

After clicking the button Tilføj værktøj ha-manager vil informere alle noder i klyngen om, at VM med den angivne ID nu kontrolleres, og i tilfælde af nedbrud skal den genstartes på en anden node.

Lad os forårsage et nedbrud
For at se, hvordan failover-mekanismen fungerer, slår vi node1 fra strømmen. Lad os se fra en anden node, hvad der sker med klyngen. Vi ser, at systemet har registreret et nedbrud.

Funktionen af HA-mekanismen betyder ikke, at VM kører kontinuerligt. Så snart noden "falder", stopper VM midlertidigt, indtil den automatisk genstartes på en anden node.
Og her begynder "magien" — klyngen har automatisk tildelt en ny node til at køre vores VM, og inden for 120 sekunder blev driften automatisk genoprettet.

Vi slukker node2 for strøm. Lad os se, om klyngen holder, og om VM automatisk vender tilbage til drift.

Desværre, som vi kan se, har vi et problem med, at der ikke er quorum på den sidste tilbageværende node, hvilket automatisk deaktiverer HA-funktionen. Vi giver kommandoen til at tvinge quorum i konsollen.
pvecm forventede 1 
Efter 2 minutter fungerede HA-mekanismen korrekt, og da den ikke fandt node2, startede den vores VM på node3.

Så snart vi tændte for node1 og node2 igen, blev klyngens drift helt genoptaget. Vær opmærksom på, at VM ikke automatisk migrerer tilbage til node1, men dette kan gøres manuelt.
Sammenfatning
Vi har fortalt dig om, hvordan klyngemekanismen i Proxmox fungerer, samt vist, hvordan HA konfigureres for virtuelle maskiner og containere. Korrekt udnyttelse af klynge- og HA-funktioner øger infrastrukturen betydeligt, samt sikrer genopretning efter fejl.
Før du opretter en klynge, skal du planlægge, hvad formålet med den vil være, og hvor meget den skal skaleres i fremtiden. Du skal også kontrollere det netværksinfrastruktur, så det er klar til at arbejde med minimale forsinkelser, så den fremtidige klynge fungerer uden problemer.
Fortæl os — bruger du klyngefunktionerne i Proxmox? Vi ser frem til at høre fra dig i kommentarer.
Tidligere artikler om hypervisoren Proxmox VE:
Kilde: habr.com
