Kif Kkonfigurat u Żomm Disponibbiltà Għolja/Clustering fil-Linux


Disponibbiltà Għolja (HA) sempliċement tirreferi għal kwalità ta 'sistema biex topera kontinwament mingħajr ħsara għal perjodu twil ta' żmien. Is-soluzzjonijiet HA jistgħu jiġu implimentati bl-użu ta 'ħardwer u/jew softwer, u waħda mis-soluzzjonijiet komuni għall-implimentazzjoni ta' HA hija l-clustering.

Fl-informatika, cluster huwa magħmul minn żewġ kompjuters jew aktar (magħrufa komunement bħala nodi jew membri) li jaħdmu flimkien biex iwettqu biċċa xogħol. F'din is-setup, nodu wieħed biss jipprovdi s-servizz bin-nodu(s) sekondarju(i) jieħu f'idejh jekk ifalli.

Il-clusters jaqgħu f'erba' tipi ewlenin:

  • Ħażna: ipprovdi immaġni konsistenti tas-sistema tal-fajls bejn is-servers f'raggruppament, li tippermetti lis-servers jaqraw u jiktbu simultanjament f'sistema ta' fajls waħda kondiviża.
  • Disponibbiltà Għolja: telimina punti singoli ta' falliment u billi tfalli s-servizzi minn node ta' cluster għal ieħor f'każ li nodu ma jibqax jaħdem.
  • Ibbilanċjar tat-Tagħbija: ibgħat it-talbiet tas-servizz tan-netwerk lil multipli cluster nodes biex jibbilanċjaw it-tagħbija tat-talba fost in-nodes cluster.
  • Prestazzjoni Għolja: twettaq proċessar parallel jew konkorrenti, u b'hekk tgħin biex ittejjeb il-prestazzjoni tal-applikazzjonijiet.

Soluzzjoni oħra użata ħafna biex tipprovdi HA hija r-replikazzjoni (speċifikament repliki tad-dejta). Ir-replikazzjoni hija l-proċess li bih database waħda jew aktar (sekondarja) jistgħu jinżammu sinkronizzati ma 'database primarja waħda (jew prinċipali).

Biex twaqqaf cluster, għandna bżonn mill-inqas żewġ servers. Għall-fini ta 'din il-gwida, se nużaw żewġ servers Linux:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

F'dan l-artikolu, aħna se nuru l-baŜi ta 'kif niskjeraw, tikkonfigura u żżomm disponibbiltà/raggruppament għoli f'Ubuntu 16.04/18.04 u CentOS 7. Se nuru kif iżżid is-servizz HTTP Nginx mal-cluster.

Konfigurazzjoni tas-Settings DNS Lokali fuq Kull Server

Sabiex iż-żewġ servers jikkomunikaw lil xulxin, għandna bżonn nikkonfiguraw is-settings DNS lokali xierqa fil-fajl /etc/hosts fuq iż-żewġ servers.

Iftaħ u editja l-fajl billi tuża l-editur tal-linja tal-kmand favorit tiegħek.

$ sudo vim /etc/hosts  

Żid l-entrati li ġejjin bl-indirizzi IP attwali tas-servers tiegħek.

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

Issejvja l-bidliet u agħlaq il-fajl.

Installazzjoni ta 'Nginx Web Server

Issa installa Nginx web server billi tuża l-kmandi li ġejjin.

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

Ladarba l-installazzjoni titlesta, ibda s-servizz Nginx għalissa u ppermettih li jibda awtomatikament fil-ħin tal-ibbutjar, imbagħad iċċekkja jekk huwiex qed jaħdem billi juża l-kmand systemctl.
Fuq Ubuntu, is-servizz għandu jinbeda awtomatikament immedjatament wara li l-konfigurazzjoni minn qabel tal-pakkett tkun kompluta, tista 'sempliċement tagħmilha.

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

Wara li nibdew is-servizz Nginx, irridu noħolqu paġni web personalizzati għall-identifikazzjoni u l-ittestjar tal-operazzjonijiet fuq iż-żewġ servers. Aħna se nimmodifikaw il-kontenut tal-paġna tal-indiċi Nginx default kif muri.

$ 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

Installazzjoni u Konfigurazzjoni ta' Corosync u Pacemaker

Sussegwentement, irridu ninstallaw Pacemaker, Corosync, u Pcs fuq kull node kif ġej.

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

Ladarba l-installazzjoni titlesta, kun żgur li pcs daemon qed jaħdem fuq iż-żewġ servers.

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

Waqt l-installazzjoni, jinħoloq utent tas-sistema msejjaħ \hacluster. Għalhekk għandna bżonn inwaqqfu l-awtentikazzjoni meħtieġa għall-pcs. Nibdew billi noħolqu password ġdida għall-utent \hacluster, irridu nużaw l-istess password fuq is-servers kollha:

$ sudo passwd hacluster

Sussegwentement, fuq wieħed mis-servers (Node1), mexxi l-kmand li ġej biex twaqqaf l-awtentikazzjoni meħtieġa għall-pcs.

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

Issa oħloq cluster u imlah b'xi nodi (l-isem tal-cluster ma jistax jaqbeż il-15-il karattru, f'dan l-eżempju, użajna examplecluster) fuq is-server Node1.

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

Issa ppermetti l-cluster on boot u ibda s-servizz.

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

Issa iċċekkja jekk is-servizz tal-cluster hux qed jaħdem billi tuża l-kmand li ġej.

$ sudo pcs status
OR
$ sudo crm_mon -1

Mill-output tal-kmand ta 'hawn fuq, tista' tara li hemm twissija dwar l-ebda apparat STONITH għadu l-STONITH għadu attivat fil-cluster. Barra minn hekk, l-ebda riżorsi/servizzi tal-cluster ma ġew ikkonfigurati.

L-ewwel għażla hija li skonnettja STONITH (jew Shoot The Other Node In The Head), l-implimentazzjoni tal-fencing fuq Pacemaker.

Dan il-komponent jgħin biex jipproteġi d-dejta tiegħek milli tiġi korrotta minn aċċess konkorrenti. Għall-fini ta 'din il-gwida, aħna se tiddiżattivaha peress li aħna ma kkonfigurajna l-ebda apparat.

Biex itfi STONITH, mexxi l-kmand li ġej:

$ sudo pcs property set stonith-enabled=false

Sussegwentement, injora wkoll il-politika tal-Kworum billi tħaddem il-kmand li ġej:

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

Wara li ssettja l-għażliet ta 'hawn fuq, mexxi l-kmand li ġej biex tara l-lista tal-proprjetà u tiżgura li l-għażliet ta' hawn fuq, stonith u l-politika tal-kworum huma diżattivati.

$ sudo pcs property list

F'din it-taqsima, se nħarsu lejn kif iżżid riżors ta 'cluster. Se nikkonfiguraw IP floating li huwa l-indirizz IP li jista 'jiġi mċaqlaq istantanjament minn server għal ieħor fl-istess netwerk jew ċentru tad-dejta. Fil-qosor, IP floating huwa terminu tekniku komuni, użat għall-IPs li mhumiex marbuta strettament ma 'interface waħda waħda.

F'dan il-każ, se jintuża biex isostni failover fi cluster b'disponibbiltà għolja. Żomm f'moħħok li l-IPs f'wiċċ l-ilma mhumiex biss għal sitwazzjonijiet ta' failover, għandhom ftit każijiet ta' użu oħra. Irridu nikkonfiguraw il-cluster b'tali mod li l-membru attiv tal-cluster biss \proprjetarju jew jirrispondi għall-IP floating fi kwalunkwe ħin partikolari.

Se nżidu żewġ riżorsi ta 'cluster: ir-riżors floating IP address imsejjaħ \floating_ip u riżors għas-server tal-web Nginx imsejjaħ \http_server.

L-ewwel ibda billi żżid il-floating_ip kif ġej. F'dan l-eżempju, l-indirizz IP floating tagħna huwa 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

fejn:

  • floating_ip: huwa l-isem tas-servizz.
  • \ocf:heartbeat:IPaddr2”: jgħid lil Pacemaker liema script għandu juża, IPaddr2 f'dan il-każ, f'liema namespace huwa (pacemaker) u liema standard jikkonforma ma' ocf.
  • “op monitor interval=60s”: jagħti struzzjonijiet lil Pacemaker biex jiċċekkja s-saħħa ta’ dan is-servizz kull minuta billi jsejjaħ l-azzjoni tal-monitor tal-aġent.

Imbagħad żid it-tieni riżorsa, bl-isem http_server. Hawnhekk, l-aġent tar-riżorsi tas-servizz huwa ocf:heartbeat:nginx.

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

Ladarba tkun żiedet is-servizzi tal-cluster, agħti l-kmand li ġej biex tivverifika l-istatus tar-riżorsi.

$ sudo pcs status resources

Meta wieħed iħares lejn l-output tal-kmand, iż-żewġ riżorsi miżjuda: \floating_ip u \http_server ġew elenkati. Is-servizz floating_ip huwa mitfi minħabba li n-nodu primarju qed jaħdem.

Jekk għandek il-firewall attivat fis-sistema tiegħek, trid tħalli t-traffiku kollu lejn Nginx u s-servizzi kollha ta' disponibbiltà għolja permezz tal-firewall għal komunikazzjoni xierqa bejn in-nodi:

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

Il-pass finali u importanti huwa li tittestja li s-setup tad-disponibbiltà għolja tagħna jaħdem. Iftaħ web browser u naviga għall-indirizz 192.168.10.20 għandek tara l-paġna Nginx default mill-node2.example.com kif muri fil-screenshot.

Biex tissimula falliment, ħaddem il-kmand li ġej biex twaqqaf il-cluster fuq in-node2.example.com.

$ sudo pcs cluster stop http_server

Imbagħad terġa 'tagħbija l-paġna f'192.168.10.20, issa għandek taċċessa l-paġna web default Nginx minn node1.example.com.

Inkella, tista' tissimula żball billi tgħid lis-servizz biex jieqaf direttament, mingħajr ma twaqqaf il-cluster fuq kwalunkwe nodu, billi tuża l-kmand li ġej fuq wieħed min-nodi:

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

Imbagħad għandek bżonn tmexxi crm_mon fil-mod interattiv (l-default), fl-intervall tal-monitor ta '2 minuti, għandek tkun tista' tara l-avviż tal-cluster li http_server falla u tmexxih għal node ieħor.

Biex is-servizzi tal-cluster tiegħek jaħdmu b'mod effiċjenti, jista' jkollok bżonn tistabbilixxi xi restrizzjonijiet. Tista' tara l-paġna man pcs (man pcs) għal lista tal-kmandi kollha tal-użu.

Għal aktar informazzjoni dwar Corosync u Pacemaker, ara: https://clusterlabs.org/

F'din il-gwida, urejna l-baŜi ta 'kif tiskjera, tikkonfigura u żżomm disponibbiltà/raggruppament/replikazzjoni għolja f'Ubuntu 16.04/18.04 u CentOS 7. Urejna kif iżżid is-servizz HTTP Nginx ma 'cluster. Jekk għandek xi ħsibijiet x'taqsam jew mistoqsijiet, uża l-formola ta' feedback hawn taħt.