Weboldal keresés

A magas rendelkezésre állás/fürtözés konfigurálása és fenntartása Linuxban


A Magas rendelkezésre állás (HA) egyszerűen a rendszer olyan minőségére utal, amely hosszú ideig folyamatosan, hiba nélkül működik. A HA megoldások megvalósíthatók hardverrel és/vagy szoftverrel, és a HA megvalósításának egyik gyakori megoldása a klaszterezés.

A számítástechnikában a fürt két vagy több számítógépből (általános nevén csomópontból vagy tagból) áll, amelyek együttműködve hajtanak végre egy feladatot. Egy ilyen beállításban csak egy csomópont biztosítja a szolgáltatást, és a másodlagos csomópont(ok) veszik át az irányítást, ha az meghibásodik.

A klaszterek négy fő típusra oszthatók:

  • Tárolás: konzisztens fájlrendszerképet biztosít a fürtben lévő szerverek között, lehetővé téve a szerverek számára, hogy egyidejűleg olvassanak és írhassanak egyetlen megosztott fájlrendszert.
  • Magas rendelkezésre állás: egyetlen hibapont kiküszöbölése és a szolgáltatások egyik fürtcsomópontról a másikra való átadásával arra az esetre, ha egy csomópont működésképtelenné válik.
  • Teherelosztás: a hálózati szolgáltatási kérelmek elküldése több fürtcsomópontnak, hogy kiegyenlítse a kérések terhelését a fürtcsomópontok között.
  • Nagy teljesítmény: párhuzamos vagy egyidejű feldolgozást hajt végre, ezzel segítve az alkalmazások teljesítményének javítását.

Egy másik széles körben használt megoldás a HA biztosítására a replikáció (konkrétan az adatreplikációk). A replikáció az a folyamat, amelynek során egy vagy több (másodlagos) adatbázis szinkronban tartható egyetlen elsődleges (vagy fő) adatbázissal.

Egy fürt beállításához legalább két szerverre van szükségünk. Ebben az útmutatóban két Linux szervert fogunk használni:

  • 1. csomópont: 192.168.10.10
  • 2. csomópont: 192.168.10.11

Ebben a cikkben bemutatjuk az Ubuntu 16.04/18.04 és CentOS 7 magas rendelkezésre állás/fürtök telepítésének, konfigurálásának és karbantartásának alapjait. Bemutatjuk, hogyan adható hozzá az Nginx HTTP szolgáltatás a fürthöz.

Helyi DNS beállítások konfigurálása minden kiszolgálón

Ahhoz, hogy a két szerver kommunikálhasson egymással, mindkét szerveren konfigurálnunk kell a megfelelő helyi DNS-beállításokat az /etc/hosts fájlban.

Nyissa meg és szerkessze a fájlt kedvenc parancssori szerkesztőjével.

sudo vim /etc/hosts  

Adja hozzá a következő bejegyzéseket a szerverek tényleges IP-címeivel.

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

Mentse el a változtatásokat, és zárja be a fájlt.

Az Nginx webszerver telepítése

Most telepítse az Nginx webszervert a következő parancsokkal.

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

A telepítés befejezése után egyelőre indítsa el az Nginx szolgáltatást, és engedélyezze az automatikus indítást rendszerindításkor, majd ellenőrizze, hogy működik-e a systemctl paranccsal.
Ubuntu esetén a szolgáltatásnak automatikusan el kell indulnia a csomag előzetes konfigurálása után, egyszerűen engedélyezheti.

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

Az Nginx szolgáltatás elindítása után egyéni weboldalakat kell létrehoznunk mindkét szerveren végzett műveletek azonosításához és teszteléséhez. A képen látható módon módosítjuk az alapértelmezett Nginx indexoldal tartalmát.

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

A Corosync és a Pacemaker telepítése és konfigurálása

Ezután minden csomópontra telepítenünk kell a Pacemaker, Corosync és Pcs alkalmazást az alábbiak szerint.

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

A telepítés befejezése után győződjön meg arról, hogy a pcs démon fut mindkét szerveren.

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

A klaszter létrehozása

A telepítés során létrejön egy „hacluster” nevű rendszerfelhasználó. Tehát be kell állítanunk a db-hoz szükséges hitelesítést. Kezdjük azzal, hogy új jelszót hozzunk létre a “hacluster” felhasználó számára, ugyanazt a jelszót kell használnunk minden szerveren:

sudo passwd hacluster

Ezután az egyik szerveren (Node1) futtassa a következő parancsot a pcs hitelesítés beállításához.

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

Most hozzon létre egy fürtöt, és töltse fel néhány csomóponttal (a fürt neve nem haladhatja meg a 15 karaktert, ebben a példában az példaklasztert használtuk) a Node1 kiszolgálón.

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

Most engedélyezze a fürtöt rendszerindításkor, és indítsa el a szolgáltatást.

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

Most ellenőrizze, hogy a fürtszolgáltatás működik-e és fut-e a következő paranccsal.

sudo pcs status
OR
sudo crm_mon -1

A fenti parancs kimenetéből láthatja, hogy van egy figyelmeztetés arról, hogy nincsenek STONITH eszközök, de a STONITH továbbra is engedélyezve van a fürtben. Ezenkívül nincsenek konfigurálva a fürt erőforrásai/szolgáltatásai.

A fürtbeállítások konfigurálása

Az első lehetőség a STONITH (vagy a Shoot The Other Node In The Head) letiltása, a kerítés megvalósítása a Pacemaker-en.

Ez az összetevő segít megvédeni adatait az egyidejű hozzáférés miatti sérüléstől. Ebben az útmutatóban letiltjuk, mivel nem konfiguráltunk egyetlen eszközt sem.

A STONITH kikapcsolásához futtassa a következő parancsot:

sudo pcs property set stonith-enabled=false

Ezután a következő parancs futtatásával hagyja figyelmen kívül a Quorum szabályzatot is:

sudo pcs property set no-quorum-policy=ignore

A fenti beállítások megadása után futtassa a következő parancsot a tulajdonságlista megtekintéséhez, és győződjön meg arról, hogy a fenti beállítások, a stonith és a quorum policy le vannak tiltva.

sudo pcs property list

Erőforrás/fürtszolgáltatás hozzáadása

Ebben a részben megvizsgáljuk, hogyan adhat hozzá egy fürt erőforrást. Konfigurálunk egy lebegő IP-címet, amely az az IP-cím, amely azonnal áthelyezhető egyik szerverről a másikra ugyanazon a hálózaton vagy adatközponton belül. Röviden, a lebegő IP egy általános technikai kifejezés, amelyet olyan IP-címekre használnak, amelyek nincsenek szigorúan egyetlen interfészhez kötve.

Ebben az esetben a rendszer a feladatátvétel támogatására szolgál egy magas rendelkezésre állású fürtben. Ne feledje, hogy a lebegő IP-címek nem csak feladatátvételi helyzetekre valók, hanem van néhány más használati esetük is. A klasztert úgy kell konfigurálnunk, hogy a lebegő IP-t bármikor csak a fürt aktív tagja „tulajdonolja”, vagy válaszoljon rá.

Két fürt-erőforrást adunk hozzá: a „floating_ip” nevű lebegő IP-cím-erőforrást és egy „http_server” nevű erőforrást az Nginx webszerverhez.

Először a floating_ip hozzáadásával kezdje a következőképpen. Ebben a példában a lebegő IP-címünk 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

ahol :

  • floating_ip: a szolgáltatás neve.
  • „ocf:heartbeat:IPaddr2”: megmondja a Pacemakernek, hogy melyik szkriptet használja, ebben az esetben az IPaddr2-t, melyik névtérben van (pacemaker) és milyen szabványnak felel meg az ocf.
  • op monitor interval=60s ”: utasítja a pacemakert, hogy percenként ellenőrizze a szolgáltatás állapotát az ügyintéző monitorműveletének meghívásával.

Ezután adja hozzá a második, http_server nevű erőforrást. Itt a szolgáltatás erőforrás-ügynöke az ocf:heartbeat:nginx.

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

A fürtszolgáltatások hozzáadása után adja ki a következő parancsot az erőforrások állapotának ellenőrzéséhez.

sudo pcs status resources

A parancs kimenetét tekintve megjelenik a két hozzáadott erőforrás: "floating_ip" és "http_server ". A floating_ip szolgáltatás ki van kapcsolva, mert az elsődleges csomópont működik.

Ha a tűzfal engedélyezve van a rendszeren, a csomópontok közötti megfelelő kommunikáció érdekében engedélyeznie kell az összes forgalmat az Nginx felé és az összes magas rendelkezésre állású szolgáltatást a tűzfalon keresztül:

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

Magas rendelkezésre állás/fürtözöttség tesztelése

Az utolsó és fontos lépés annak tesztelése, hogy a magas rendelkezésre állású beállításunk működik-e. Nyisson meg egy webböngészőt, és navigáljon a 192.168.10.20 címre, ahol a képernyőképen látható módon látnia kell az alapértelmezett Nginx oldalt a node2.example.com webhelyről.

A hiba szimulálásához futtassa a következő parancsot a fürt leállításához a node2.example.com webhelyen.

sudo pcs cluster stop http_server

Ezután töltse be újra az oldalt a 192.168.10.20 címen. Most már hozzá kell férnie az alapértelmezett Nginx weboldalhoz a node1.example.com webhelyről.

Alternatív megoldásként szimulálhat egy hibát úgy, hogy a következő paranccsal az egyik csomóponton a következő paranccsal utasítja a szolgáltatást, hogy állítsa le közvetlenül, anélkül, hogy leállítaná a fürtöt bármely csomóponton:

 
sudo crm_resource --resource http_server --force-stop 

Ezután a crm_mon alkalmazást interaktív módban (alapértelmezett) kell futtatnia, 2 perces monitorozási időközön belül, látnia kell a fürt értesítését, hogy a http_server meghibásodott, és át kell helyeznie egy másik csomópontra.

A fürtszolgáltatások hatékony működéséhez szükség lehet bizonyos megszorításokra. A pcs kézikönyvoldalon (man db) megtekintheti az összes használati parancsot.

A Corosyncről és a Pacemakerről további információért látogasson el: https://clusterlabs.org/

Összegzés

Ebben az útmutatóban bemutattuk az Ubuntu 16.04/18.04 és CentOS 7 magas rendelkezésre állás/fürtözés/replikáció üzembe helyezésének, konfigurálásának és karbantartásának alapjait. Bemutattuk, hogyan adhatunk hozzá Nginx HTTP-szolgáltatást egy fürthöz. Ha bármilyen megosztandó gondolata vagy kérdése van, használja az alábbi visszajelzési űrlapot.