Yadda Ake Daidaita da Kula da Babban Samuwa/Tari a Linux


Babban Samun (HA) kawai yana nufin ingancin tsarin da zai ci gaba da aiki ba tare da gazawa na dogon lokaci ba. Ana iya aiwatar da mafita na HA ta amfani da kayan aiki da/ko software, kuma ɗayan hanyoyin gama gari don aiwatar da HA shine tari.

A cikin kwamfuta, gungu yana ƙunshi kwamfutoci biyu ko fiye (wanda aka fi sani da nodes ko mambobi) waɗanda ke aiki tare don yin wani aiki. A cikin irin wannan saitin, kumburi guda ɗaya ne kawai ke ba da sabis tare da kumburin (s) na biyu da ke ɗauka idan ya gaza.

Tari sun faɗi cikin manyan nau'ikan guda huɗu:

  • Ajiye: samar da daidaitaccen hoton tsarin fayil a cikin sabar a cikin gungu, ba da damar sabobin su karanta da rubutu lokaci guda zuwa tsarin fayil guda daya.
  • Babban Samun: kawar da faɗuwar maki guda ɗaya kuma ta hanyar gazawa akan ayyuka daga kullin gungu zuwa wani idan kullin ya zama mara aiki.
  • Load Daidaita: aika buƙatun sabis na hanyar sadarwa zuwa gaɓoɓin gungun masu yawa don daidaita nauyin buƙatun tsakanin kuɗaɗen tari.
  • High Performance: aiwatar da layi ɗaya ko aiki na lokaci ɗaya, don haka yana taimakawa inganta ayyukan aikace-aikacen.

Wani bayani da aka yi amfani da shi sosai don samar da HA shine maimaitawa (musamman kwafin bayanai). Maimaitawa shine tsarin da za'a iya adana bayanai ɗaya ko fiye (na biyu) a daidaita su tare da rumbun adana bayanai na farko (ko masters) guda ɗaya.

Don saita gungu, muna buƙatar aƙalla sabobin biyu. Don manufar wannan jagorar, za mu yi amfani da sabar Linux guda biyu:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

A cikin wannan labarin, za mu nuna ainihin yadda za a tura, daidaitawa da kuma kula da babban samuwa/tari a cikin Ubuntu 16.04/18.04 da CentOS 7. Za mu nuna yadda za a ƙara sabis na HTTP Nginx zuwa gungu.

Saitunan Saitunan DNS na Gida akan Kowane Sabar

Domin sabobin biyu su yi magana da juna, muna buƙatar saita saitunan DNS na gida masu dacewa a cikin fayil /etc/hosts akan sabobin biyu.

Buɗe ku shirya fayil ɗin ta amfani da editan layin umarni da kuka fi so.

$ sudo vim /etc/hosts  

Ƙara abubuwan shigarwa masu zuwa tare da ainihin adiresoshin IP na sabar ku.

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

Ajiye canje-canje kuma rufe fayil ɗin.

Ana shigar Nginx Web Server

Yanzu shigar Nginx sabar yanar gizo ta amfani da umarni masu zuwa.

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

Da zarar an gama shigarwa, fara sabis na Nginx a yanzu kuma ba shi damar farawa ta atomatik a lokacin taya, sannan duba idan ya tashi yana aiki ta amfani da umarnin systemctl.
A kan Ubuntu, ya kamata a fara sabis ta atomatik nan da nan bayan an gama saitin fakitin, zaku iya kunna shi kawai.

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

Bayan fara sabis na Nginx, muna buƙatar ƙirƙirar shafukan yanar gizo na al'ada don ganowa da gwada ayyukan a kan sabobin biyu. Za mu gyara abubuwan da ke cikin tsohowar shafi na Nginx kamar yadda aka nuna.

$ 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

Shigarwa da Haɓaka Corosync da na'urar bugun zuciya

Na gaba, dole ne mu shigar da na'urar bugun zuciya, Corosync, da pcs akan kowane kumburi kamar haka.

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

Da zarar an gama shigarwa, tabbatar da cewa pcs daemon yana gudana akan sabobin biyu.

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

A lokacin shigarwa, an ƙirƙiri mai amfani da tsarin mai suna \hacluster Don haka muna buƙatar saita tantancewar da ake buƙata don pcs. Bari mu fara da ƙirƙirar sabon kalmar sirri don mai amfani da \hacluster, muna buƙatar amfani da kalmar sirri iri ɗaya akan. duk sabobin:

$ sudo passwd hacluster

Na gaba, akan ɗayan sabobin (Node1), gudanar da umarni mai zuwa don saita amincin da ake buƙata don pcs.

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

Yanzu ƙirƙiri gungu kuma ku cika shi da wasu nodes (sunan gungu ba zai iya wuce haruffa 15 ba, a cikin wannan misalin, mun yi amfani da gungu misali) akan sabar Node1.

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

Yanzu kunna gungu akan taya kuma fara sabis ɗin.

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

Yanzu duba idan sabis ɗin gungu yana aiki yana aiki ta amfani da umarni mai zuwa.

$ sudo pcs status
OR
$ sudo crm_mon -1

Daga fitowar umarnin da ke sama, zaku iya ganin cewa akwai gargadi game da babu na'urorin STONITH duk da haka STONITH har yanzu yana kunna a cikin cluster. Bugu da kari, ba a saita albarkatu/sabis na gungu ba.

Zaɓin farko shine musaki STONITH (ko Harba The Other Node In the Head), aiwatar da shinge akan na'urar bugun zuciya.

Wannan bangaren yana taimakawa don kare bayanan ku daga lalacewa ta hanyar shiga lokaci guda. Don manufar wannan jagorar, za mu kashe shi tunda ba mu saita kowace na'ura ba.

Don kashe STONITH, gudanar da umarni mai zuwa:

$ sudo pcs property set stonith-enabled=false

Na gaba, kuma yi watsi da manufofin Quorum ta hanyar gudanar da umarni mai zuwa:

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

Bayan saita zaɓuɓɓukan da ke sama, gudanar da umarni mai zuwa don ganin jerin kadarori kuma tabbatar da cewa zaɓuɓɓukan da ke sama, stonith da manufofin ƙididdiga sun ƙare.

$ sudo pcs property list

A cikin wannan sashe, zamu kalli yadda ake ƙara albarkatun tari. Za mu saita IP mai iyo wanda shine adireshin IP wanda za'a iya motsa shi nan take daga uwar garken zuwa wani a cikin wannan cibiyar sadarwa ko cibiyar bayanai. A taƙaice, IP mai iyo kalma ce ta gama gari, ana amfani da ita don IPs waɗanda ba a ɗaure su da ƙayyadaddun bayanai guda ɗaya ba.

A wannan yanayin, za a yi amfani da shi don tallafawa gazawar a cikin babban tari mai samuwa. Ka tuna cewa IPs masu iyo ba kawai don yanayin rashin nasara ba ne, suna da wasu lokuta masu amfani. Muna buƙatar saita tarin ta yadda kawai memba mai aiki na gungun ya mallaki ko amsa ga IP mai iyo a kowane lokaci.

Za mu ƙara albarkatun tari guda biyu: tushen adireshin IP mai iyo da ake kira \floating_ip da kuma hanyar sabar gidan yanar gizon Nginx mai suna \http_server.

Da farko fara da ƙara floating_ip kamar haka. A cikin wannan misalin, adireshin IP ɗin mu mai iyo shine 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

inda:

  • floating_ip: shine sunan sabis ɗin.
  • \ocf:heartbeat:IPaddr2: yana gaya wa Pacemaker wanne rubutun da za a yi amfani da shi, IPaddr2 a wannan yanayin, wanne sarari sunan da yake cikin (na bugun zuciya) da kuma wane ma'auni ya dace da ocf.
  • “op monitor interval=60s”: umurci na’urar bugun zuciya don duba lafiyar wannan hidimar kowane minti daya ta hanyar kiran aikin saka idanu na wakili.

Sannan ƙara hanya ta biyu, mai suna http_server. Anan, wakilin albarkatun sabis shine ocf:heartbeat:nginx.

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

Da zarar kun ƙara ayyukan gungu, ba da umarni mai zuwa don bincika matsayin albarkatun.

$ sudo pcs status resources

Duban fitar da umarni, an jera albarkatun biyu: \floating_ip da \http_server. An kashe sabis ɗin floating_ip saboda kumburin farko yana aiki.

Idan kuna kunna Tacewar zaɓi akan tsarin ku, kuna buƙatar ba da izinin duk zirga-zirga zuwa Nginx da duk manyan sabis na samuwa ta hanyar Tacewar zaɓi don ingantaccen sadarwa tsakanin nodes:

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

Mataki na ƙarshe kuma mai mahimmanci shine a gwada cewa saitin wadatar mu yana aiki. Bude mai binciken gidan yanar gizo kuma kewaya zuwa adireshin 192.168.10.20 yakamata ku ga tsohon shafin Nginx daga node2.example.com kamar yadda aka nuna a hoton.

Don kwatanta gazawar, gudanar da umarni mai zuwa don dakatar da gungu akan node2.example.com.

$ sudo pcs cluster stop http_server

Sa'an nan kuma sake shigar da shafin a 192.168.10.20, yanzu ya kamata ku sami dama ga tsohuwar shafin yanar gizon Nginx daga node1.example.com.

A madadin, zaku iya kwaikwayi kuskure ta gaya wa sabis ɗin ta tsaya kai tsaye, ba tare da dakatar da gungu akan kowane kumburi ba, ta amfani da umarni mai zuwa akan ɗayan nodes:

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

Sannan kuna buƙatar kunna crm_mon a cikin yanayin hulɗa (tsohuwar), a cikin tazarar tazarar mintuna 2, yakamata ku iya ganin sanarwar tari cewa http_server ya gaza kuma matsar da shi zuwa wani kumburi.

Domin ayyukan gungu su yi aiki da kyau, ƙila kuna buƙatar saita wasu ƙuntatawa. Kuna iya ganin shafin mutum na pcs (man pcs) don jerin duk umarnin amfani.

Don ƙarin bayani kan Corosync da Pacemaker, duba: https://clusterlabs.org/

A cikin wannan jagorar, mun nuna ainihin yadda ake ƙaddamarwa, daidaitawa da kuma kula da babban samuwa/tarawa/maimaitawa a cikin Ubuntu 16.04/18.04 da CentOS 7. Mun nuna yadda ake ƙara sabis na HTTP Nginx zuwa gungu. Idan kuna da kowane tunani don raba ko tambayoyi, yi amfani da fom ɗin amsa da ke ƙasa.