Giunsa ang Pag-configure ug Pagmentinar sa Taas nga Availability/Clustering sa Linux


Ang High Availability (HA) yano nga nagtumong sa kalidad sa usa ka sistema nga magpadayon nga molihok nga wala’y kapakyasan sa taas nga yugto sa panahon. Ang mga solusyon sa HA mahimong ipatuman gamit ang hardware ug/o software, ug usa sa kasagarang solusyon sa pagpatuman sa HA mao ang clustering.

Sa pag-compute, ang usa ka cluster gilangkuban sa duha o daghan pa nga mga kompyuter (kasagaran nailhan nga mga node o mga miyembro) nga nagtinabangay aron mahimo ang usa ka buluhaton. Sa ingon nga setup, usa ra ka node ang naghatag sa serbisyo nga adunay (mga) sekondaryang node nga mopuli kung kini mapakyas.

Ang mga pundok nahulog sa upat ka dagkong klase:

  • Storage: paghatag ug makanunayon nga file system image sa mga server sa usa ka cluster, nga magtugot sa mga server nga dungan nga magbasa ug magsulat sa usa ka shared file system.
  • Taas nga Availability: wagtangon ang usa ka punto sa kapakyasan ug pinaagi sa pagkapakyas sa mga serbisyo gikan sa usa ka cluster node ngadto sa lain kung ang usa ka node moadto mahimong dili molihok.
  • Pagbalanse sa Pag-load: ipadala ang mga hangyo sa serbisyo sa network ngadto sa daghang mga cluster node aron mabalanse ang gipangayo nga load taliwala sa mga cluster node.
  • Taas nga Pagganap: paghimo og parallel o dungan nga pagproseso, sa ingon makatabang sa pagpauswag sa performance sa mga aplikasyon.

Laing kaylap nga gigamit nga solusyon sa paghatag og HA mao ang replikasyon (ilabi na ang mga replikasyon sa datos). Ang pagkopya mao ang proseso diin ang usa o daghan pa (sekundaryo) nga mga database mahimong mapadayon nga nahiuyon sa usa ka panguna (o master) nga database.

Aron ma-setup ang usa ka cluster, kinahanglan namon ang labing menos duha ka mga server. Alang sa katuyoan niini nga giya, mogamit kami duha ka server sa Linux:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

Niini nga artikulo, among ipakita ang mga sukaranan kung unsaon pag-deploy, pag-configure ug pagmentinar sa taas nga availability/clustering sa Ubuntu 16.04/18.04 ug CentOS 7. Atong ipakita kung unsaon pagdugang ang Nginx HTTP nga serbisyo sa cluster.

Pag-configure sa Lokal nga Mga Setting sa DNS sa Matag Server

Aron ang duha ka server makakomunikar sa usag usa, kinahanglan natong i-configure ang angay nga lokal nga DNS setting sa /etc/hosts file sa duha ka server.

Ablihi ug i-edit ang file gamit ang imong paborito nga command line editor.

$ sudo vim /etc/hosts  

Idugang ang mosunod nga mga entry nga adunay aktwal nga mga IP address sa imong mga server.

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

I-save ang mga pagbag-o ug isira ang file.

Pag-instalar sa Nginx Web Server

Karon i-install ang Nginx web server gamit ang mosunod nga mga sugo.

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

Kung kompleto na ang instalasyon, sugdi ang serbisyo sa Nginx sa pagkakaron ug i-enable kini nga auto-start sa boot time, unya susiha kung nag-andar na ba kini gamit ang systemctl command.
Sa Ubuntu, ang serbisyo kinahanglan nga awtomatiko nga magsugod dayon pagkahuman makompleto ang pre-configuration sa package, mahimo ra nimo kini mahimo.

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

Pagkahuman sa pagsugod sa serbisyo sa Nginx, kinahanglan namon nga maghimo mga kostumbre nga webpage alang sa pag-ila ug pagsulay sa mga operasyon sa parehas nga mga server. Atong usbon ang mga sulod sa default Nginx index page sama sa gipakita.

$ 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

Pag-instalar ug Pag-configure sa Corosync ug Pacemaker

Sunod, kinahanglan natong i-install ang Pacemaker, Corosync, ug Pcs sa matag node sama sa mosunod.

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

Kung kompleto na ang pag-install, siguruha nga ang pcs daemon nagdagan sa duha nga mga server.

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

Atol sa pag-instalar, usa ka user sa sistema nga gitawag og \hacluster ang gibuhat. Busa kinahanglan natong i-set up ang authentication nga gikinahanglan para sa mga pcs. Magsugod ta pinaagi sa paghimo og bag-ong password para sa \hacluster user, kinahanglan natong gamiton ang parehas nga password sa tanan nga mga server:

$ sudo passwd hacluster

Sunod, sa usa sa mga server (Node1), padagana ang mosunod nga sugo aron ma-set up ang authentication nga gikinahanglan para sa mga pcs.

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

Karon paghimo og usa ka cluster ug pun-a kini sa pipila ka mga node (ang cluster nga ngalan dili molapas sa 15 ka mga karakter, niini nga pananglitan, gigamit namo ang examplecluster) sa Node1 server.

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

Karon i-enable ang cluster sa boot ug sugdi ang serbisyo.

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

Karon susiha kung ang serbisyo sa cluster kay nagdagan ug naggamit sa mosunod nga sugo.

$ sudo pcs status
OR
$ sudo crm_mon -1

Gikan sa output sa sugo sa ibabaw, imong makita nga adunay usa ka pasidaan mahitungod sa walay STONITH nga mga himan apan ang STONITH gipalihok gihapon sa cluster. Dugang pa, walay cluster resources/services ang na-configure.

Ang una nga kapilian mao ang pag-disable sa STONITH (o Shoot The Other Node In The Head), ang pagpatuman sa fencing sa Pacemaker.

Kini nga sangkap makatabang sa pagpanalipod sa imong data gikan sa pagkadunot pinaagi sa dungan nga pag-access. Alang sa katuyoan niini nga giya, among i-disable kini tungod kay wala kami nag-configure sa bisan unsang mga aparato.

Aron mapalong ang STONITH, padagana ang mosunod nga sugo:

$ sudo pcs property set stonith-enabled=false

Sunod, ibaliwala usab ang polisiya sa Korum pinaagi sa pagpadagan sa mosunod nga sugo:

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

Human sa pag-set sa mga opsyon sa ibabaw, padagana ang mosunod nga sugo aron makita ang listahan sa mga kabtangan ug masiguro nga ang mga opsyon sa ibabaw, stonith ug ang polisiya sa korum wala ma-disabled.

$ sudo pcs property list

Niini nga seksyon, atong tan-awon kung giunsa ang pagdugang usa ka kapanguhaan sa cluster. Among i-configure ang usa ka floating IP nga mao ang IP address nga mahimo dayon nga ibalhin gikan sa usa ka server ngadto sa lain sulod sa samang network o data center. Sa laktud, ang usa ka naglutaw nga IP usa ka teknikal nga komon nga termino, nga gigamit alang sa mga IP nga dili hugot nga gigapos sa usa ka interface.

Sa kini nga kaso, kini gamiton sa pagsuporta sa failover sa usa ka high-availability cluster. Hinumdomi nga ang mga naglutaw nga IP dili lang para sa mga sitwasyon sa failover, aduna silay pipila ka ubang mga kaso sa paggamit. Kinahanglan natong i-configure ang cluster sa paagi nga ang aktibong miyembro lang sa cluster \nag-iya o motubag sa naglutaw nga IP sa bisan unsang oras.

Magdugang kami og duha ka cluster resources: ang floating IP address resource nga gitawag og \floating_ip ug usa ka resource para sa Nginx web server nga gitawag og \http_server.

Una magsugod pinaagi sa pagdugang sa floating_ip ingon sa mosunod. Niini nga pananglitan, ang among naglutaw nga IP address mao ang 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

diin:

  • floating_ip: mao ang ngalan sa serbisyo.
  • \ocf:heartbeat:IPaddr2”: nagtug-an sa Pacemaker kon unsang script ang gamiton, IPaddr2 niining kasoha, asa nga namespace niini (pacemaker) ug unsa nga sukdanan ang gisunod niini sa ocf.
  • op monitor interval=60s: nagsugo sa Pacemaker nga susihon ang kahimsog niini nga serbisyo matag usa ka minuto pinaagi sa pagtawag sa aksyon sa monitor sa ahente.

Dayon idugang ang ikaduha nga kapanguhaan, nga ginganlan og http_server. Dinhi, ang ahente sa kapanguhaan sa serbisyo mao ang ocf:heartbeat:nginx.

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

Kung nadugang nimo ang mga serbisyo sa cluster, i-isyu ang mosunud nga mando aron masusi ang kahimtang sa mga kahinguhaan.

$ sudo pcs status resources

Sa pagtan-aw sa output sa sugo, ang duha ka dugang nga mga kapanguhaan: \floating_ip ug \http_server nalista na. Ang floating_ip nga serbisyo gipalong tungod kay ang nag-unang node naglihok.

Kung gipagana nimo ang firewall sa imong sistema, kinahanglan nimo nga tugutan ang tanan nga trapiko sa Nginx ug tanan nga mga serbisyo sa taas nga magamit pinaagi sa firewall alang sa husto nga komunikasyon tali sa mga node:

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

Ang katapusan ug hinungdanon nga lakang mao ang pagsulay nga ang among taas nga magamit nga pag-setup molihok. Ablihi ang usa ka web browser ug pag-navigate sa adres 192.168.10.20 kinahanglan nimo nga makita ang default nga panid sa Nginx gikan sa node2.example.com ingon sa gipakita sa screenshot.

Aron ma-simulate ang usa ka kapakyasan, padagana ang mosunod nga sugo aron ihunong ang cluster sa node2.example.com.

$ sudo pcs cluster stop http_server

Unya i-reload ang panid sa 192.168.10.20, kinahanglan nimong ma-access ang default nga web page sa Nginx gikan sa node1.example.com.

Sa laing bahin, mahimo nimong i-simulate ang usa ka sayup pinaagi sa pagsulti sa serbisyo nga mohunong direkta, nga dili mohunong sa cluster sa bisan unsang node, gamit ang mosunod nga command sa usa sa mga node:

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

Dayon kinahanglan nimo nga modagan ang crm_mon sa interactive mode (ang default), sulod sa monitor interval nga 2 minutos, kinahanglan nimo nga makita ang cluster notice nga ang http_server napakyas ug ibalhin kini sa laing node.

Aron ang imong mga serbisyo sa cluster modagan nga episyente, kinahanglan nimo nga magbutang og pipila ka mga pagpugong. Imong makita ang pcs man page (man pcs) para sa lista sa tanang mga sugo sa paggamit.

Para sa dugang nga impormasyon sa Corosync ug Pacemaker, tan-awa: https://clusterlabs.org/

Sa kini nga giya, among gipakita ang mga sukaranan kung giunsa ang pag-deploy, pag-configure ug pagpadayon sa taas nga pagkaanaa/pagkumpol/pag-replikasyon sa Ubuntu 16.04/18.04 ug CentOS 7. Gipakita namon kung giunsa pagdugang ang serbisyo sa Nginx HTTP sa usa ka cluster. Kon duna kay mga ideya nga ipaambit o mga pangutana, gamita ang feedback form sa ubos.