Zoeken op website

Hoe u hoge beschikbaarheid/clustering in Linux kunt configureren en onderhouden


Hoge beschikbaarheid (HA) verwijst eenvoudigweg naar de kwaliteit van een systeem om gedurende een lange periode continu en zonder storingen te functioneren. HA-oplossingen kunnen worden geïmplementeerd met behulp van hardware en/of software, en een van de gebruikelijke oplossingen voor het implementeren van HA is clustering.

Bij computers bestaat een cluster uit twee of meer computers (algemeen bekend als nodes of leden) die samenwerken om een taak uit te voeren. In een dergelijke opstelling levert slechts één knooppunt de service, waarbij de secundaire knooppunten het overnemen als deze uitvalt.

Clusters vallen in vier hoofdtypen:

  • Opslag: zorg voor een consistent bestandssysteemimage op alle servers in een cluster, waardoor de servers tegelijkertijd naar één gedeeld bestandssysteem kunnen lezen en schrijven.
  • Hoge beschikbaarheid: elimineer afzonderlijke storingspunten en door failover van services van het ene clusterknooppunt naar het andere voor het geval een knooppunt niet meer functioneert.
  • Load Balancing: verzend netwerkserviceverzoeken naar meerdere clusterknooppunten om de verzoekbelasting over de clusterknooppunten te verdelen.
  • Hoge prestaties: voer parallelle of gelijktijdige verwerking uit, waardoor de prestaties van applicaties worden verbeterd.

Een andere veelgebruikte oplossing voor het leveren van HA is replicatie (met name gegevensreplicaties). Replicatie is het proces waarmee een of meer (secundaire) databases gesynchroniseerd kunnen worden gehouden met een enkele primaire (of master) database.

Om een cluster op te zetten hebben we minimaal twee servers nodig. Voor het doel van deze handleiding gebruiken we twee Linux-servers:

  • Knooppunt1: 192.168.10.10
  • Knooppunt2: 192.168.10.11

In dit artikel demonstreren we de basisprincipes van het implementeren, configureren en onderhouden van hoge beschikbaarheid/clustering in Ubuntu 16.04/18.04 en CentOS 7. We laten zien hoe je de Nginx HTTP-service aan het cluster toevoegt.

Lokale DNS-instellingen op elke server configureren

Om ervoor te zorgen dat de twee servers met elkaar kunnen communiceren, moeten we de juiste lokale DNS-instellingen configureren in het bestand /etc/hosts op beide servers.

Open en bewerk het bestand met uw favoriete opdrachtregeleditor.

sudo vim /etc/hosts  

Voeg de volgende vermeldingen toe met daadwerkelijke IP-adressen van uw servers.

192.168.10.10	node1.example.com
192.168.10.11 	node2.example.com

Sla de wijzigingen op en sluit het bestand.

Nginx-webserver installeren

Installeer nu de Nginx-webserver met behulp van de volgende opdrachten.

sudo apt install nginx  [On Ubuntu]
sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

Zodra de installatie is voltooid, start u voorlopig de Nginx-service en schakelt u deze in om automatisch te starten tijdens het opstarten. Controleer vervolgens of deze actief is met de opdracht systemctl.
Op Ubuntu zou de service automatisch moeten worden gestart onmiddellijk nadat de pre-configuratie van het pakket is voltooid. U kunt deze eenvoudigweg inschakelen.

sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

Nadat we de Nginx-service hebben gestart, moeten we aangepaste webpagina's maken voor het identificeren en testen van bewerkingen op beide servers. We zullen de inhoud van de standaard Nginx-indexpagina wijzigen zoals weergegeven.

echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS1
echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS2

Corosync en Pacemaker installeren en configureren

Vervolgens moeten we Pacemaker, Corosync en PCS als volgt op elk knooppunt installeren.

sudo apt install corosync pacemaker pcs	#Ubuntu 
sudo yum install corosync pacemaker pcs	#CentOS 

Zodra de installatie is voltooid, zorgt u ervoor dat de pcs-daemon op beide servers draait.

sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl status pcsd

Het cluster maken

Tijdens de installatie wordt een systeemgebruiker met de naam “hacluster ” aangemaakt. We moeten dus de authenticatie instellen die nodig is voor pcs. Laten we beginnen met het maken van een nieuw wachtwoord voor de “hacluster ” gebruiker. We moeten hetzelfde wachtwoord op alle servers gebruiken:

sudo passwd hacluster

Voer vervolgens op een van de servers (Node1) de volgende opdracht uit om de authenticatie in te stellen die nodig is voor pcs.

sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force

Maak nu een cluster en vul deze met enkele knooppunten (de clusternaam mag niet langer zijn dan 15 tekens, in dit voorbeeld hebben we voorbeeldcluster gebruikt) op de Node1-server.

sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com 

Schakel nu het cluster in bij het opstarten en start de service.

sudo pcs cluster enable --all
sudo pcs cluster start --all

Controleer nu of de clusterservice actief is met behulp van de volgende opdracht.

sudo pcs status
OR
sudo crm_mon -1

Uit de uitvoer van de bovenstaande opdracht kunt u zien dat er een waarschuwing is dat er geen STONITH apparaten zijn, maar dat STONITH nog steeds is ingeschakeld in het cluster. Bovendien zijn er geen clusterbronnen/services geconfigureerd.

Clusteropties configureren

De eerste optie is het uitschakelen van STONITH (of Shoot The Other Node In The Head), de hekwerkimplementatie op Pacemaker.

Dit onderdeel helpt uw gegevens te beschermen tegen beschadiging door gelijktijdige toegang. Voor het doel van deze handleiding zullen we het uitschakelen omdat we geen apparaten hebben geconfigureerd.

Om STONITH uit te schakelen, voer je de volgende opdracht uit:

sudo pcs property set stonith-enabled=false

Negeer vervolgens ook het Quorum beleid door de volgende opdracht uit te voeren:

sudo pcs property set no-quorum-policy=ignore

Nadat u de bovenstaande opties heeft ingesteld, voert u de volgende opdracht uit om de eigenschappenlijst te bekijken en ervoor te zorgen dat de bovenstaande opties, stonith en het quorumbeleid zijn uitgeschakeld.

sudo pcs property list

Een resource-/clusterservice toevoegen

In deze sectie bekijken we hoe u een clusterresource kunt toevoegen. We zullen een zwevend IP-adres configureren, het IP-adres dat onmiddellijk van de ene server naar de andere kan worden verplaatst binnen hetzelfde netwerk of datacenter. Kortom, een zwevend IP-adres is een technisch veel voorkomende term die wordt gebruikt voor IP's die niet strikt gebonden zijn aan één enkele interface.

In dit geval wordt het gebruikt ter ondersteuning van failover in een cluster met hoge beschikbaarheid. Houd er rekening mee dat zwevende IP's niet alleen voor failover-situaties zijn, maar ook voor een paar andere gebruiksscenario's. We moeten het cluster zo configureren dat alleen het actieve lid van het cluster op een bepaald moment het zwevende IP-adres “bezit” of erop reageert.

We zullen twee clusterbronnen toevoegen: de zwevende IP-adresbron genaamd “floating_ip ” en een bron voor de Nginx-webserver genaamd “http_server”.

Begin eerst met het toevoegen van de floating_ip als volgt. In dit voorbeeld is ons zwevende IP-adres 192.168.10.20.

sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s

waar :

  • floating_ip: is de naam van de service.
  • “ocf:heartbeat:IPaddr2”: vertelt Pacemaker welk script hij moet gebruiken, IPaddr2 in dit geval, in welke naamruimte het zich bevindt (pacemaker) en aan welke standaard het voldoet aan ocf.
  • op monitor interval=60s ”: geeft Pacemaker de opdracht om elke minuut de status van deze service te controleren door de monitoractie van de agent aan te roepen.

Voeg vervolgens de tweede bron toe, genaamd http_server. Hier is de bronagent van de service ocf:heartbeat:nginx.

sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

Nadat u de clusterservices hebt toegevoegd, geeft u de volgende opdracht uit om de status van bronnen te controleren.

sudo pcs status resources

Kijkend naar de uitvoer van de opdracht, zijn de twee toegevoegde bronnen: “floating_ip” en “http_server” vermeld. De floating_ip-service is uitgeschakeld omdat het primaire knooppunt in bedrijf is.

Als u een firewall op uw systeem heeft ingeschakeld, moet u al het verkeer naar Nginx en alle services met hoge beschikbaarheid via de firewall toestaan voor een goede communicatie tussen knooppunten:

-------------- CentOS 7 -------------- 
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=high-availability		
sudo firewall-cmd --reload

-------------- Ubuntu -------------- 
sudo ufw allow http	
sudo ufw allow high-availability						
sudo ufw reload 

Testen van hoge beschikbaarheid/clustering

De laatste en belangrijke stap is het testen of onze installatie met hoge beschikbaarheid werkt. Open een webbrowser en navigeer naar het adres 192.168.10.20. U zou de standaard Nginx-pagina van node2.example.com moeten zien, zoals weergegeven in de schermafbeelding.

Om een fout te simuleren, voert u de volgende opdracht uit om het cluster op node2.example.com te stoppen.

sudo pcs cluster stop http_server

Laad vervolgens de pagina opnieuw op 192.168.10.20. U zou nu toegang moeten hebben tot de standaard Nginx-webpagina vanaf node1.example.com.

Als alternatief kunt u een fout simuleren door de service direct te laten stoppen, zonder het cluster op een willekeurig knooppunt te stoppen, met behulp van de volgende opdracht op een van de knooppunten:

 
sudo crm_resource --resource http_server --force-stop 

Vervolgens moet u crm_mon uitvoeren in de interactieve modus (de standaard), binnen het monitorinterval van 2 minuten. U zou het cluster moeten kunnen zien merken dat http_server is mislukt en verplaatst naar een ander knooppunt.

Om uw clusterservices efficiënt te laten werken, moet u mogelijk enkele beperkingen instellen. U kunt de manpagina pcs (man pcs) bekijken voor een lijst met alle gebruiksopdrachten.

Voor meer informatie over Corosync en Pacemaker, ga naar: https://clusterlabs.org/

Samenvatting

In deze handleiding hebben we de basis laten zien van het implementeren, configureren en onderhouden van hoge beschikbaarheid/clustering/replicatie in Ubuntu 16.04/18.04 en CentOS 7. We hebben gedemonstreerd hoe u de Nginx HTTP-service aan een cluster kunt toevoegen. Als u ideeën of vragen heeft, kunt u het onderstaande feedbackformulier gebruiken.