Linux-da ýokary elýeterliligi/toparlanyşygyny nädip sazlamaly we goldamaly


Aokary elýeterlilik (HA) diňe uzak wagtlap şowsuz işlemezden ulgamyň hiline degişlidir. HA çözgütleri apparat we/ýa-da programma üpjünçiligi arkaly amala aşyrylyp bilner we HA-ny durmuşa geçirmegiň umumy çözgütleriniň biri toparlanyşykdyr.

Hasaplamakda, bir işi ýerine ýetirmek üçin bilelikde işleýän iki ýa-da has köp kompýuterden (köplenç düwünler ýa-da agzalar diýlip atlandyrylýar) bir topar bar. Şeýle gurnamada, diňe bir düwün, şowsuz bolsa, ikinji derejeli düwünleri (hyzmaty) üpjün edýär.

Klasterler dört esasy görnüşe bölünýär:

  • Saklama: serwerlere bir wagtyň özünde ýekeje umumy faýl ulgamyna okamaga we ýazmaga mümkinçilik berýän bir topar serwerleriň arasynda yzygiderli faýl ulgamynyň şekilini üpjün ediň.
  • Aokary elýeterlilik: bir düwün işlemän halatynda bir klaster düwüninden beýlekisine hyzmatlaryň şowsuzlygyny ýitiriň.
  • Balük deňagramlylygy: klaster düwünleriniň arasynda isleg ýüküni deňleşdirmek üçin tor hyzmaty haýyşlaryny birnäçe klaster düwünlerine iberiň.
  • Perokary öndürijilik: paralel ýa-da şol bir wagtda gaýtadan işlemegi amala aşyryň, şeýlelik bilen programmalaryň işleýşini gowulaşdyrmaga kömek edýär.

HA bilen üpjün etmek üçin giňden ulanylýan çözgüt, köpeltmek (esasanam maglumatlary köpeltmek). Gaýtalamak, bir ýa-da birnäçe (ikinji derejeli) maglumat bazasynyň ýekeje başlangyç (ýa-da ussat) maglumat bazasy bilen sinhron saklanyp bilinjek prosesi.

Klaster gurmak üçin azyndan iki serwer gerek. Bu gollanmanyň maksady üçin iki sany Linux serwerini ulanarys:

  • Node1: 192.168.10.10
  • düwün2: 192.168.10.11

Bu makalada Ubuntu 16.04/18.04 we CentOS 7-de ýokary elýeterliligi/toparlanyşygy nädip ýerleşdirmegiň, sazlamagyň we goldamagyň esaslaryny görkezeris. Nginx HTTP hyzmatyny bu topara nädip goşmalydygyny görkezeris.

Her serwerde ýerli DNS sazlamalaryny düzmek

Iki serweriň biri-biri bilen aragatnaşyk saklamagy üçin, iki serwerdäki/etc/host faýlynda degişli ýerli DNS sazlamalaryny düzmeli.

Halaýan buýruk setir redaktoryňyzy ulanyp faýly açyň we redaktirläň.

$ sudo vim /etc/hosts  

Serwerleriňiziň hakyky IP adresleri bilen aşakdaky ýazgylary goşuň.

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

Üýtgeşmeleri ýazdyryň we faýly ýapyň.

Nginx web serwerini gurmak

Indi aşakdaky buýruklary ulanyp, Nginx web serwerini guruň.

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

Gurnama gutaransoň, Nginx hyzmatyny häzirlikçe başlaň we ýükleme wagtynda awtomatiki başlamaga mümkinçilik beriň, soňra systemctl buýrugy bilen işleýändigini ýa-da işlemeýändigini barlaň.
Ubuntu-da, paket deslapky konfigurasiýasy gutaransoň, hyzmat awtomatiki usulda başlamaly, ony açyp bilersiňiz.

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

Nginx hyzmatyna başlanymyzdan soň, iki serwerde amallary kesgitlemek we synag etmek üçin ýörite web sahypalaryny döretmeli. Adaty Nginx indeks sahypasynyň mazmunyny görkezilişi ýaly üýtgederis.

$ 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 we Pacemaker-i gurmak we sazlamak

Ondan soň her düwünde “Pacemaker”, “Corosync” we “PC” -leri aşakdaky ýaly gurnamaly.

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

Gurmak gutaransoň, iki serwerde hem kompýuter daemonynyň işleýändigine göz ýetiriň.

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

Gurnama wagtynda\hacluster atly ulgam ulanyjysy döredilýär. Şonuň üçin kompýuterler üçin zerur tassyklamany bellemeli. Geliň, hacluster ulanyjysy üçin täze parol döretmek bilen başlalyň, şol bir paroly ulanmalydyrys ähli serwerler:

$ sudo passwd hacluster

Ondan soň, serwerleriň birinde (Node1), kompýuterler üçin zerur tassyklamany gurmak üçin aşakdaky buýrugy işlediň.

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

Indi bir topar dörediň we Node1 serwerinde käbir düwünler bilen jemläň (klasteriň ady 15 simwoldan ýokary bolup bilmez, bu mysalda biz examplecluster ulandyk).

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

Indi bootda klaster açyň we hyzmaty başlaň.

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

Indi aşakdaky buýrugy ulanyp, klaster hyzmatynyň işleýändigini ýa-da işlemeýändigini barlaň.

$ sudo pcs status
OR
$ sudo crm_mon -1

Aboveokardaky buýrugyň çykyşyndan, STONITH enjamlarynyň ýokdugy barada duýduryşyň bardygyny görüp bilersiňiz, entek toparda STONITH açyk. Mundan başga-da, hiç bir topar çeşmesi/hyzmatlary düzülmedi.

Birinji wariant, “Pacemaker” -iň haýat bilen ýerine ýetirilişi bolan “STONITH” -i (ýa-da “Başga düwünleri atyň”) öçürmekdir.

Bu komponent, maglumatlaryňyzy şol bir wagtyň özünde zaýalanmakdan goramaga kömek edýär. Bu gollanmanyň maksady üçin, hiç hili enjam düzmändigimiz üçin ony öçüreris.

STONITH-i öçürmek üçin aşakdaky buýrugy işlediň:

$ sudo pcs property set stonith-enabled=false

Ondan soň, aşakdaky buýrugy işledip, Kworum syýasatyna ähmiýet bermäň:

$ sudo pcs property set no-quorum-policy=ignore

Aboveokardaky opsiýalary düzeniňizden soň, emläk sanawyny görmek we ýokardaky opsiýalaryň, daşyň we kworum syýasatynyň ýapykdygyny anyklamak üçin aşakdaky buýrugy işlediň.

$ sudo pcs property list

Bu bölümde, klaster çeşmesini nädip goşmalydygyna serederis. Şol bir torda ýa-da maglumat merkezinde derrew bir serwerden beýlekisine geçirip boljak IP adresi bolan ýüzýän IP-ni düzeris. Gysgaça aýdylanda, ýüzýän IP bir umumy interfeýs bilen berk baglanyşykly bolmadyk IP-ler üçin ulanylýan tehniki umumy termin.

Bu ýagdaýda, ýokary elýeterli toparda şowsuzlygy goldamak üçin ulanylar. Floüzýän IP-leriň diňe ýalňyş ýagdaýlar üçin däldigini ýadyňyzdan çykarmaň, başga-da birnäçe ulanylyş ýagdaýlary bar. Klasterini diňe klasteriň işjeň agzasy islendik wagt ýüzýän IP-e “eýeçilik eder” ýa-da jogap berer ýaly düzmeli.

Iki sany klaster çeşmesini goşarys:\floating_ip atly ýüzýän IP adres çeşmesi we\http_server atly Nginx web serweri üçin çeşme.

Ilki bilen floating_ip-i aşakdaky ýaly goşup başlaň. Bu mysalda ýüzýän IP adresimiz 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

nirede:

  • floating_ip: hyzmatyň ady.
  • \of
  • op monitor interval=60s: “Pacemaker” -e agentiň monitor hereketine jaň edip, bu hyzmatyň saglygyny her minutda barlamagy tabşyrýar.

Soňra http_server atly ikinji çeşmäni goşuň. Bu ýerde hyzmatyň serişde agenti ocf: ýürek urmagy: nginx.

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

Klaster hyzmatlaryny goşanyňyzdan soň, çeşmeleriň ýagdaýyny barlamak üçin aşakdaky buýrugy beriň.

$ sudo pcs status resources

Buýrugyň çykyşyna seredeniňde, goşulan iki çeşme:\floating_ip we\http_server sanawda görkezildi. “Floating_ip” hyzmaty ýapyk, sebäbi esasy düwün işleýär.

Ulgamyňyzda gorag diwary açyk bolsa, düwünleriň arasynda dogry aragatnaşyk saklamak üçin Nginx-e ähli traffige we gorag diwary arkaly ähli ýokary elýeterlilik hyzmatlaryna rugsat bermeli:

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

Iň soňky we möhüm ädim, ýokary elýeterliligimiziň işleýändigini barlamakdyr. Web brauzerini açyň we 192.168.10.20 salgysyna geçiň, skrinshotda görkezilişi ýaly node2.example.com sahypasyndan adaty Nginx sahypasyny görmeli.

Şowsuzlygy simulirlemek üçin node2.example.com-daky klasteri duruzmak üçin aşakdaky buýrugy işlediň.

$ sudo pcs cluster stop http_server

Soňra sahypany 192.168.10.20-de täzeden ýükläň, indi node1.example.com-dan adaty Nginx web sahypasyna girmeli.

Ativea-da bolmasa, düwünleriň birinde aşakdaky buýrugy ulanyp, haýsydyr bir düwündäki klasteri saklamazdan, göni hyzmaty bes etmegi aýdyp, ýalňyşlygy simulasiýa edip bilersiňiz:

 
$ sudo crm_resource --resource http_server --force-stop 

Soňra 2 minut aralykda monitor aralygynda crm_mon (interaktiw) işlemeli, http_server-iň şowsuzdygyna ünsi çekip, başga bir düwmä geçirmeli.

Klaster hyzmatlaryňyzyň netijeli işlemegi üçin käbir çäklendirmeleri bellemeli bolmagyňyz mümkin. Ulanyş buýruklarynyň sanawy üçin kompýuter adam sahypasyny (adam kompýuterleri) görüp bilersiňiz.

Corosync we Pacemaker barada has giňişleýin maglumat üçin göz aýlaň: https://clusterlabs.org/

Bu gollanmada Ubuntu 16.04/18.04 we CentOS 7-de ýokary elýeterliligi/toparlanyş/köpeltmegi nädip ýerleşdirmegiň, sazlamagyň we goldamagyň esaslaryny görkezdik, Nginx HTTP hyzmatyny bir topara nädip goşmalydygyny görkezdik. Paýlaşmak ýa-da sorag bermek isleýän pikirleriňiz bar bolsa, aşakdaky jogap görnüşini ulanyň.