Hvernig á að stilla og viðhalda mikilli aðgengi/þyrping í Linux


High Availability (HA) vísar einfaldlega til gæða kerfis til að starfa stöðugt án bilunar í langan tíma. Hægt er að innleiða HA lausnir með því að nota vélbúnað og/eða hugbúnað og ein af algengustu lausnunum til að innleiða HA er þyrping.

Í tölvuvinnslu er þyrping samsett úr tveimur eða fleiri tölvum (almennt þekktur sem hnútar eða meðlimir) sem vinna saman að því að framkvæma verkefni. Í slíkri uppsetningu veitir aðeins einn hnútur þjónustuna með aukahnútinn/-hnútana sem taka við ef hann mistekst.

Klasar falla í fjórar megingerðir:

  • Geymsla: Gefðu samræmda skráarkerfismynd yfir netþjóna í klasa, sem gerir þjónum kleift að lesa og skrifa samtímis í eitt sameiginlegt skráarkerfi.
  • Mikið framboð: útrýmdu einstökum bilunarpunktum og með því að bregðast við þjónustu frá einum klasahnút til annars ef hnútur verður óvirkur.
  • Álagsjöfnun: sendu netþjónustubeiðnir til margra klasahnúta til að jafna álag beiðna á milli klasahnúta.
  • Mikil afköst: framkvæma samhliða eða samhliða vinnslu og hjálpa þannig til við að bæta árangur forrita.

Önnur mikið notuð lausn til að veita HA er afritun (sérstaklega afritun gagna). Afritun er ferlið þar sem hægt er að halda einum eða fleiri (einni) gagnagrunnum samstilltum við einn aðal (eða aðal) gagnagrunn.

Til að setja upp þyrping þurfum við að minnsta kosti tvo netþjóna. Í tilgangi þessarar handbókar munum við nota tvo Linux netþjóna:

  • Hnútur1: 192.168.10.10
  • Hnútur2: 192.168.10.11

Í þessari grein munum við sýna grunnatriði hvernig á að dreifa, stilla og viðhalda miklu framboði/þyrpingum í Ubuntu 16.04/18.04 og CentOS 7. Við munum sýna hvernig á að bæta Nginx HTTP þjónustu við klasann.

Stilla staðbundnar DNS stillingar á hverjum netþjóni

Til þess að þjónarnir tveir geti átt samskipti sín á milli þurfum við að stilla viðeigandi staðbundnar DNS stillingar í /etc/hosts skránni á báðum netþjónum.

Opnaðu og breyttu skránni með uppáhalds skipanalínuritlinum þínum.

$ sudo vim /etc/hosts  

Bættu við eftirfarandi færslum með raunverulegum IP tölum netþjónanna þinna.

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

Vistaðu breytingarnar og lokaðu skránni.

Að setja upp Nginx vefþjón

Settu nú upp Nginx vefþjón með eftirfarandi skipunum.

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

Þegar uppsetningunni er lokið skaltu ræsa Nginx þjónustuna í bili og gera hana kleift að ræsast sjálfkrafa við ræsingu, athugaðu síðan hvort hún sé í gangi með systemctl skipuninni.
Í Ubuntu ætti þjónustan að vera ræst sjálfkrafa strax eftir að forstillingu pakkans er lokið, þú getur einfaldlega virkjað hana.

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

Eftir að hafa hafið Nginx þjónustuna þurfum við að búa til sérsniðnar vefsíður til að bera kennsl á og prófa aðgerðir á báðum netþjónum. Við munum breyta innihaldi sjálfgefna Nginx vísitölusíðunnar eins og sýnt er.

$ 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

Uppsetning og uppsetning Corosync og gangráðs

Næst verðum við að setja upp Pacemaker, Corosync og Pcs á hvern hnút eins og hér segir.

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

Þegar uppsetningunni er lokið skaltu ganga úr skugga um að pcs daemon sé í gangi á báðum netþjónum.

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

Við uppsetninguna verður til kerfisnotandi sem heitir \hacluster. Þannig að við þurfum að setja upp auðkenninguna sem þarf fyrir tölvur. Byrjum á því að búa til nýtt lykilorð fyrir \hacluster notandann, við þurfum að nota sama lykilorð á allir netþjónar:

$ sudo passwd hacluster

Næst, á einum af netþjónunum (Node1), keyrðu eftirfarandi skipun til að setja upp auðkenninguna sem þarf fyrir stk.

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

Búðu til þyrping og fylltu hann með nokkrum hnútum (þyrpinganafnið má ekki vera meira en 15 stafir, í þessu dæmi höfum við notað dæmiþyrping) á Node1 þjóninum.

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

Virkjaðu nú þyrpinguna við ræsingu og ræstu þjónustuna.

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

Athugaðu nú hvort klasaþjónustan sé í gangi með eftirfarandi skipun.

$ sudo pcs status
OR
$ sudo crm_mon -1

Frá úttakinu á ofangreindri skipun geturðu séð að það er viðvörun um engin STONITH tæki enn STONITH er enn virkt í þyrpingunni. Að auki hefur engin klasatilföng/þjónusta verið stillt.

Fyrsti kosturinn er að slökkva á STONITH (eða skjóta hinn hnútinn í höfuðið), girðingarútfærsluna á gangráði.

Þessi hluti hjálpar til við að vernda gögnin þín gegn skemmdum af samhliða aðgangi. Í tilgangi þessarar handbókar munum við gera hana óvirka þar sem við höfum ekki stillt nein tæki.

Til að slökkva á STONITH skaltu keyra eftirfarandi skipun:

$ sudo pcs property set stonith-enabled=false

Næst skaltu líka hunsa sveitarstefnuna með því að keyra eftirfarandi skipun:

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

Eftir að hafa stillt ofangreinda valkosti skaltu keyra eftirfarandi skipun til að sjá eignalistann og tryggja að ofangreindir valkostir, stonith og sveitarstefnan séu óvirk.

$ sudo pcs property list

Í þessum hluta munum við skoða hvernig á að bæta við klasaauðlind. Við munum stilla fljótandi IP-tölu sem er IP-talan sem hægt er að færa samstundis frá einum netþjóni til annars innan sama nets eða gagnaver. Í stuttu máli er fljótandi IP tæknilegt algengt hugtak, notað fyrir IP-tölur sem eru ekki bundnar nákvæmlega við eitt viðmót.

Í þessu tilviki verður það notað til að styðja við bilun í þyrping með mikilli aðgengi. Hafðu í huga að fljótandi IP-tölur eru ekki bara fyrir bilunaraðstæður, þær hafa nokkur önnur notkunartilvik. Við þurfum að stilla klasann á þann hátt að aðeins virki meðlimurinn í klasanum „eigi“ eða svari fljótandi IP-tölu hverju sinni.

Við munum bæta við tveimur klasaauðlindum: fljótandi IP-tölutilföngum sem kallast \floating_ip og auðlind fyrir Nginx vefþjóninn sem heitir \http_server\.

Byrjaðu fyrst á því að bæta við floating_ip sem hér segir. Í þessu dæmi er fljótandi IP-tala okkar 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

hvar:

  • floating_ip: er heiti þjónustunnar.
  • \ocf:heartbeat:IPaddr2”: segir Pacemaker hvaða forskrift á að nota, IPaddr2 í þessu tilfelli, í hvaða nafnrými það er (gangráð) og hvaða staðal það er í samræmi við ocf.
  • “op monitor interval=60s”: skipar gangráði að athuga heilsu þessarar þjónustu á einnar mínútu fresti með því að hringja í eftirlitsaðila umboðsmannsins.

Bættu síðan við annarri auðlindinni, sem heitir http_server. Hér er auðlindafulltrúi þjónustunnar ocf:heartbeat:nginx.

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

Þegar þú hefur bætt við klasaþjónustunni skaltu gefa út eftirfarandi skipun til að athuga stöðu auðlinda.

$ sudo pcs status resources

Þegar litið er á úttak skipunarinnar, hafa tvö bætt við auðlindir: \floating_ip\ og \http_server\ verið skráð. Slökkt er á floating_ip þjónustunni vegna þess að aðalhnúturinn er í gangi.

Ef þú ert með eldvegg virkan á kerfinu þínu þarftu að leyfa alla umferð til Nginx og alla þjónustu með háa framboði í gegnum eldvegginn fyrir rétt samskipti milli hnúta:

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

Síðasta og mikilvæga skrefið er að prófa að uppsetningin okkar með mikla framboð virkar. Opnaðu vafra og farðu að heimilisfanginu 192.168.10.20 þú ættir að sjá sjálfgefna Nginx síðu frá node2.example.com eins og sýnt er á skjámyndinni.

Til að líkja eftir bilun skaltu keyra eftirfarandi skipun til að stöðva þyrpinguna á node2.example.com.

$ sudo pcs cluster stop http_server

Síðan skaltu endurhlaða síðuna á 192.168.10.20, þú ættir nú að opna sjálfgefna Nginx vefsíðu frá node1.example.com.

Að öðrum kosti er hægt að líkja eftir villu með því að segja þjónustunni að hætta beint, án þess að stöðva þyrpinguna á einhverjum hnút, með því að nota eftirfarandi skipun á einum af hnútunum:

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

Þá þarftu að keyra crm_mon í gagnvirkri stillingu (sjálfgefið), innan 2 mínútna eftirlitsbilsins ættirðu að geta séð þyrpinguna taka eftir því að http_server bilaði og færa hann í annan hnút.

Til þess að klasaþjónustan þín geti keyrt á skilvirkan hátt gætirðu þurft að setja nokkrar skorður. Þú getur séð PCs man page (man pcs) fyrir lista yfir allar notkunarskipanir.

Fyrir frekari upplýsingar um Corosync og Pacemaker, skoðaðu: https://clusterlabs.org/

Í þessari handbók höfum við sýnt grunnatriði hvernig á að dreifa, stilla og viðhalda miklu framboði/þyrpingum/afritun í Ubuntu 16.04/18.04 og CentOS 7. Við sýndum hvernig á að bæta Nginx HTTP þjónustu við klasa. Ef þú hefur einhverjar hugsanir til að deila eða spurningar skaltu nota álitsformið hér að neðan.