Bii o ṣe le Tunto ati Ṣetọju Wiwa giga/Ijọpọ ni Linux


Wiwa giga (HA) nirọrun tọka si didara eto kan lati ṣiṣẹ ni igbagbogbo laisi ikuna fun igba pipẹ. Awọn solusan HA le ṣee ṣe nipa lilo ohun elo ati/tabi sọfitiwia, ati pe ọkan ninu awọn solusan ti o wọpọ si imuse imuse HA ni iṣupọ.

Ni iširo, iṣupọ kan ni awọn kọmputa meji tabi diẹ sii (eyiti a mọ ni awọn apa tabi awọn ọmọ ẹgbẹ) ti n ṣiṣẹ papọ lati ṣe iṣẹ-ṣiṣe kan. Ni iru iṣeto bẹẹ, oju ipade kan ṣoṣo pese iṣẹ pẹlu ipade (awọn) atẹle ti o gba ti o ba kuna.

Awọn iṣupọ ṣubu sinu awọn oriṣi pataki mẹrin:

  • Ipamọ: pese aworan eto faili deede kan kọja awọn olupin ni iṣupọ kan, gbigba awọn olupin laaye lati nigbakan ka ati kọ si eto faili kan ti o pin. Wiwa giga: imukuro awọn aaye kan ti ikuna ati nipa kuna lori awọn iṣẹ lati oju ipade iṣupọ kan si miiran ti o ba jẹ pe oju ipade kan di alainiṣẹ.
  • Iwontunwosi Fifuye: firanṣẹ awọn ibeere iṣẹ nẹtiwọọki si awọn apa iṣupọ ọpọ lati ṣe iwọntunwọnsi fifuye ibeere laarin awọn apa iṣupọ.
  • Iṣe giga: ṣe ni afiwe tabi ṣiṣe nigbakanna, nitorinaa ṣe iranlọwọ lati mu ilọsiwaju awọn ohun elo ṣiṣẹ.

Omiran miiran ti a lo ni ibigbogbo lati pese HA ni atunṣe (pataki awọn ẹda data). Atunse jẹ ilana nipasẹ eyiti ọkan tabi diẹ ẹ sii (awọn atẹle) awọn apoti isura data le wa ni mimuṣiṣẹpọ pẹlu ipilẹ data akọkọ kan (tabi oluwa).

Lati ṣeto iṣupọ kan, a nilo o kere ju awọn olupin meji. Fun idi ti itọsọna yii, a yoo lo awọn olupin Linux meji:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

Ninu àpilẹkọ yii, a yoo ṣe afihan awọn ipilẹ ti bawo ni a ṣe le fi ranṣẹ, tunto ati ṣetọju wiwa giga/iṣupọ ni Ubuntu 16.04/18.04 ati CentOS 7. A yoo ṣe afihan bi a ṣe le ṣafikun iṣẹ Nginx HTTP si iṣupọ.

Tito leto Awọn Eto DNS Agbegbe lori Olukọọkan

Ni ibere fun awọn olupin meji lati ba ara wọn sọrọ, a nilo lati tunto awọn eto DNS agbegbe ti o yẹ ninu faili/ati be be/awọn ogun lori awọn olupin mejeeji.

Ṣii ati ṣatunkọ faili naa pẹlu lilo olootu laini aṣẹ ayanfẹ rẹ.

$ sudo vim /etc/hosts  

Ṣafikun awọn titẹ sii wọnyi pẹlu awọn adirẹsi IP gangan ti awọn olupin rẹ.

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

Fipamọ awọn ayipada ki o pa faili naa.

Fifi Nginx Web Server sii

Bayi fi sori ẹrọ olupin ayelujara Nginx nipa lilo awọn ofin wọnyi.

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

Lọgan ti fifi sori ẹrọ ba ti pari, bẹrẹ iṣẹ Nginx fun bayi ki o mu ki o bẹrẹ ni adaṣe ni akoko bata, lẹhinna ṣayẹwo ti o ba wa ni oke ati ṣiṣe ni lilo pipaṣẹ systemctl.
Lori Ubuntu, iṣẹ yẹ ki o bẹrẹ laifọwọyi lẹhin igbati iṣeto-tẹlẹ package ti pari, o le jiroro ni mu ṣiṣẹ.

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

Lẹhin ti bẹrẹ iṣẹ Nginx, a nilo lati ṣẹda awọn oju-iwe wẹẹbu aṣa fun idanimọ ati idanwo awọn iṣẹ lori awọn olupin mejeeji. A yoo ṣe atunṣe awọn akoonu ti oju-iwe atokọ Nginx aiyipada bi o ti han.

$ 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

Fifi ati tunto Corosync ati Pacemaker

Nigbamii ti, a ni lati fi sori ẹrọ Pacemaker, Corosync, ati Pcs lori oju ipade kọọkan bi atẹle.

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

Lọgan ti fifi sori ẹrọ ba pari, rii daju pe awọn pem daemon n ṣiṣẹ lori awọn olupin mejeeji.

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

Lakoko fifi sori ẹrọ, olumulo eto ti a pe ni\"hacluster" ti ṣẹda. Nitorina a nilo lati ṣeto ifitonileti ti o nilo fun awọn kọnputa. Jẹ ki a bẹrẹ nipa ṣiṣẹda ọrọigbaniwọle tuntun fun olumulo\"hacluster", a nilo lati lo ọrọ igbaniwọle kanna lori gbogbo awọn olupin:

$ sudo passwd hacluster

Itele, lori ọkan ninu awọn olupin (Node1), ṣiṣe aṣẹ atẹle lati ṣeto iṣeduro ti o nilo fun awọn kọnputa.

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

Bayi ṣẹda iṣupọ kan ki o ṣe agbejade rẹ pẹlu diẹ ninu awọn apa (orukọ iṣupọ ko le kọja awọn ohun kikọ 15, ninu apẹẹrẹ yii, a ti lo iṣupọ apẹẹrẹ) lori olupin Node1.

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

Bayi mu iṣupọ naa ṣiṣẹ lori bata ki o bẹrẹ iṣẹ naa.

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

Bayi ṣayẹwo ti iṣẹ iṣupọ ba wa ni oke ati ṣiṣe ni lilo pipaṣẹ atẹle.

$ sudo pcs status
OR
$ sudo crm_mon -1

Lati iṣẹjade ti aṣẹ ti o wa loke, o le rii pe ikilọ kan wa nipa ko si awọn ẹrọ STONITH sibẹsibẹ STONITH ṣi ṣiṣiṣẹ ninu iṣupọ naa. Ni afikun, ko si awọn orisun/iṣẹ iṣupọ ti tunto.

Aṣayan akọkọ ni lati mu STONITH (tabi Iyaworan Ẹkun Omiiran Ni Ori), imuse adaṣe lori Pacemaker.

Paati yii ṣe iranlọwọ lati daabobo data rẹ lati bajẹ nipasẹ irawọle nigbakanna. Fun idi ti itọsọna yii, a yoo mu o ṣiṣẹ nitori a ko ti tunto eyikeyi awọn ẹrọ.

Lati pa STONITH, ṣiṣe aṣẹ wọnyi:

$ sudo pcs property set stonith-enabled=false

Nigbamii, tun foju eto imulo Quorum nipasẹ ṣiṣe pipaṣẹ wọnyi:

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

Lẹhin ti o ṣeto awọn aṣayan ti o wa loke, ṣiṣe aṣẹ atẹle lati wo atokọ ohun-ini ati rii daju pe awọn aṣayan ti o wa loke, stonith ati quorum policy ti ni alaabo.

$ sudo pcs property list

Ni apakan yii, a yoo wo bi a ṣe le ṣafikun orisun iṣupọ kan. A yoo tunto IP lilefoofo kan eyiti o jẹ adiresi IP ti o le gbe lesekese lati ọdọ olupin kan si omiiran laarin nẹtiwọọki kanna tabi ile-iṣẹ data. Ni kukuru, IP ti n ṣanfo loju omi jẹ ọrọ ti o wọpọ ti imọ-ẹrọ, ti a lo fun awọn IP eyiti ko sopọ mọ muna si wiwo kan ṣoṣo.

Ni ọran yii, yoo lo lati ṣe atilẹyin failover ni iṣupọ wiwa to gaju. Ranti pe awọn IP ti n ṣanfo kii ṣe fun awọn ipo ailagbara nikan, wọn ni awọn ọran lilo miiran diẹ. A nilo lati tunto iṣupọ ni iru ọna ti ọmọ ẹgbẹ ti nṣiṣe lọwọ iṣupọ\"nikan ni o ni" tabi ṣe idahun si IP ti n ṣanfo nigbakugba.

A yoo ṣafikun awọn orisun iṣupọ meji: orisun orisun adiresi IP ti nfo loju omi ti a pe ni\"floating_ip" ati orisun kan fun olupin ayelujara Nginx ti a pe ni "" http_server ".

Akọkọ bẹrẹ nipa fifi floating_ip sii bi atẹle. Ninu apẹẹrẹ yii, adiresi IP ti n ṣanfo wa ni 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

ibo:

  • floating_ip: ni orukọ iṣẹ naa.
  • "lili
  • "op atẹle aarin = 60s": kọ fun Pacemaker lati ṣayẹwo ilera ti iṣẹ yii ni iṣẹju kọọkan ni pipe pipe iṣẹ atẹle oluranlowo.

Lẹhinna ṣafikun ohun elo keji, ti a npè ni http_server. Nibi, oluranlowo orisun ti iṣẹ jẹ ocf: heartbeat: nginx.

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

Lọgan ti o ba ti ṣafikun awọn iṣẹ iṣupọ, fun ni aṣẹ atẹle lati ṣayẹwo ipo awọn orisun.

$ sudo pcs status resources

Ti n wo ijade ti aṣẹ naa, awọn orisun ti a ṣafikun meji:\"floating_ip" ati\"http_server" ti wa ni atokọ. Iṣẹ floating_ip wa ni pipa nitori oju ipade akọkọ ti n ṣiṣẹ.

Ti o ba ti mu ogiriina ṣiṣẹ lori eto rẹ, o nilo lati gba gbogbo ijabọ si Nginx ati gbogbo awọn iṣẹ wiwa giga nipasẹ ogiriina fun ibaraẹnisọrọ to dara laarin awọn apa:

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

Igbese ikẹhin ati pataki ni lati ṣe idanwo pe iṣeto wiwa giga wa ṣiṣẹ. Ṣii ẹrọ lilọ kiri lori ayelujara kan ki o lọ kiri si adirẹsi 192.168.10.20 o yẹ ki o wo oju-iwe Nginx aiyipada lati node2.example.com bi o ṣe han ninu sikirinifoto.

Lati ṣedasilẹ ikuna, ṣiṣe aṣẹ atẹle lati da iṣupọ naa duro lori node2.example.com.

$ sudo pcs cluster stop http_server

Lẹhinna tun gbe oju-iwe naa pada ni 192.168.10.20, o yẹ ki o wọle si oju-iwe ayelujara Nginx aiyipada lati node1.example.com.

Ni omiiran, o le ṣedasilẹ aṣiṣe nipa sisọ fun iṣẹ naa lati da taara, laisi didaduro iṣupọ lori eyikeyi oju ipade, ni lilo pipaṣẹ atẹle lori ọkan ninu awọn apa naa:

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

Lẹhinna o nilo lati ṣiṣẹ crm_mon ni ipo ibanisọrọ (aiyipada), laarin aarin atẹle ti awọn iṣẹju 2, o yẹ ki o ni anfani lati wo akiyesi iṣupọ pe http_server kuna ati gbe e si oju ipade miiran.

Fun awọn iṣẹ iṣupọ rẹ lati ṣiṣẹ daradara, o le nilo lati ṣeto diẹ ninu awọn idiwọ. O le wo oju-iwe eniyan awọn kọnputa (awọn pcs man) fun atokọ ti gbogbo awọn aṣẹ lilo.

Fun alaye diẹ sii lori Corosync ati Pacemaker, ṣayẹwo: https://clusterlabs.org/

Ninu itọsọna yii, a ti fihan awọn ipilẹ ti bawo ni a ṣe le fi ranṣẹ, tunto ati ṣetọju wiwa giga/iṣupọ/idapọ ni Ubuntu 16.04/18.04 ati CentOS 7. A ṣe afihan bi a ṣe le ṣafikun iṣẹ Nginx HTTP si iṣupọ kan. Ti o ba ni awọn ero eyikeyi lati pin tabi awọn ibeere, lo fọọmu esi ni isalẹ.