Kā konfigurēt un uzturēt augstas pieejamības/kopu izveidi Linux


Augsta pieejamība (HA) vienkārši attiecas uz sistēmas kvalitāti, kas ilgstoši darbojas nepārtraukti bez kļūmēm. HA risinājumus var ieviest, izmantojot aparatūru un/vai programmatūru, un viens no izplatītākajiem HA ieviešanas risinājumiem ir kopu veidošana.

Aprēķināšanā kopu veido divi vai vairāki datori (parasti pazīstami kā mezgli vai dalībnieki), kas darbojas kopā, lai veiktu uzdevumu. Šādā uzstādījumā tikai viens mezgls nodrošina pakalpojumu ar sekundārā (-o) mezgla (-u) pārņemšanu, ja tas neizdodas.

Kopas iedala četros galvenajos veidos:

  • Krātuve: nodrošiniet konsekventu failu sistēmas attēlu visos klastera serveros, ļaujot serveriem vienlaikus lasīt un rakstīt vienā koplietojamā failu sistēmā.
  • Augsta pieejamība: novērsiet atsevišķus kļūmes punktus un neizdodoties pakalpojumiem no viena klastera mezgla citam, ja mezgls kļūst nedarbīgs.
  • Slodzes līdzsvarošana: nosūta tīkla pakalpojuma pieprasījumus vairākiem klastera mezgliem, lai līdzsvarotu pieprasījuma slodzi starp klastera mezgliem.
  • Augsta veiktspēja: veiciet paralēlu vai vienlaicīgu apstrādi, tādējādi palīdzot uzlabot lietojumprogrammu veiktspēju.

Vēl viens plaši izmantots HA nodrošināšanas risinājums ir replikācija (īpaši datu replikācijas). Replikācija ir process, kurā vienu vai vairākas (sekundārās) datu bāzes var sinhronizēt ar vienu primāro (vai galveno) datu bāzi.

Lai izveidotu kopu, mums ir nepieciešami vismaz divi serveri. Šajā ceļvedī mēs izmantosim divus Linux serverus:

  • 1. mezgls: 192.168.10.10
  • 2. mezgls: 192.168.10.11

Šajā rakstā mēs parādīsim pamatus, kā izvietot, konfigurēt un uzturēt augstu pieejamību/kopu izveidi Ubuntu 16.04/18.04 un CentOS 7. Mēs parādīsim, kā pievienot Nginx HTTP pakalpojumu klasterim.

Vietējo DNS iestatījumu konfigurēšana katrā serverī

Lai abi serveri varētu sazināties savā starpā, mums abos serveros/etc/hosts failā jākonfigurē atbilstošie vietējie DNS iestatījumi.

Atveriet un rediģējiet failu, izmantojot iecienīto komandrindas redaktoru.

$ sudo vim /etc/hosts  

Pievienojiet šādus ierakstus ar savu serveru faktiskajām IP adresēm.

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

Saglabājiet izmaiņas un aizveriet failu.

Nginx tīmekļa servera instalēšana

Tagad instalējiet Nginx tīmekļa serveri, izmantojot šādas komandas.

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

Kad instalēšana ir pabeigta, pagaidām palaidiet pakalpojumu Nginx un ļaujiet tam automātiski startēt sāknēšanas laikā, pēc tam pārbaudiet, vai tas darbojas un darbojas, izmantojot komandu systemctl.
Operētājsistēmā Ubuntu pakalpojums jāsāk automātiski tūlīt pēc pakotnes iepriekšējas konfigurēšanas pabeigšanas, jūs to varat vienkārši iespējot.

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

Pēc pakalpojuma Nginx palaišanas mums jāizveido pielāgotas tīmekļa lapas, lai identificētu un pārbaudītu operācijas abos serveros. Mēs pārveidosim noklusējuma Nginx indeksa lapas saturu, kā parādīts.

$ 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

Corosync un elektrokardiostimulatora instalēšana un konfigurēšana

Tālāk mums katrā mezglā jāinstalē Pacemaker, Corosync un Pcs šādi.

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

Kad instalēšana ir pabeigta, pārliecinieties, ka abos serveros darbojas datora dēmons.

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

Instalēšanas laikā tiek izveidots sistēmas lietotājs ar nosaukumu “hacluster”. Tāpēc mums ir jāiestata autentifikācija, kas nepieciešama gab. Sāksim ar jaunas paroles izveidošanu “hacluster” lietotājam, un mums visiem serveriem jāizmanto viena un tā pati parole:

$ sudo passwd hacluster

Pēc tam vienā no serveriem (Node1) izpildiet šādu komandu, lai iestatītu gabaliem nepieciešamo autentifikāciju.

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

Tagad izveidojiet kopu un aizpildiet to ar dažiem mezgliem (klastera nosaukums nedrīkst pārsniegt 15 rakstzīmes, šajā piemērā mēs esam izmantojuši examplecluster) Node1 serverī.

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

Tagad iespējojiet kopu sāknēšanas laikā un palaidiet pakalpojumu.

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

Tagad pārbaudiet, vai klastera pakalpojums darbojas un darbojas, izmantojot šo komandu.

$ sudo pcs status
OR
$ sudo crm_mon -1

No iepriekš minētās komandas izejas jūs varat redzēt, ka ir brīdinājums par nevienu STONITH ierīci, tomēr STONITH joprojām ir iespējota kopā. Turklāt nav konfigurēti klastera resursi/pakalpojumi.

Pirmā iespēja ir atslēgt STONITH (vai nošaut otru mezglu galvā), nožogojuma ieviešanu elektrokardiostimulatorā.

Šis komponents palīdz aizsargāt jūsu datus no vienlaicīgas piekļuves bojāta. Šajā ceļvedī mēs to atspējosim, jo neesam konfigurējuši nevienu ierīci.

Lai izslēgtu STONITH, palaidiet šādu komandu:

$ sudo pcs property set stonith-enabled=false

Pēc tam ignorējiet arī Kvoruma politiku, izpildot šādu komandu:

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

Pēc iepriekš minēto opciju iestatīšanas palaidiet šo komandu, lai redzētu rekvizītu sarakstu un pārliecinātos, ka iepriekš minētās opcijas, stonith un kvoruma politika ir atspējotas.

$ sudo pcs property list

Šajā sadaļā mēs aplūkosim, kā pievienot klastera resursu. Mēs konfigurēsim peldošu IP, kas ir IP adrese, kuru tajā pašā tīklā vai datu centrā var uzreiz pārvietot no viena servera uz otru. Īsāk sakot, peldošais IP ir tehniski izplatīts termins, ko lieto IP, kas nav stingri saistīti ar vienu saskarni.

Šajā gadījumā tas tiks izmantots, lai atbalstītu kļūmjpārlēces augstas pieejamības klasterī. Paturiet prātā, ka peldošie IP nav domāti tikai kļūmjpārlēces situācijām, tiem ir daži citi lietošanas gadījumi. Mums ir jākonfigurē klasteris tā, lai tikai aktīvais klastera dalībnieks jebkurā brīdī “piederētu” vai atbildētu uz peldošo IP.

Mēs pievienosim divus klastera resursus: peldošā IP adreses resursu ar nosaukumu “floating_ip” un resursu Nginx tīmekļa serverim ar nosaukumu “http_server”.

Vispirms sāciet, pievienojot floating_ip šādi. Šajā piemērā mūsu peldošā IP adrese ir 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

kur:

  • floating_ip: ir pakalpojuma nosaukums.
  • “ocf: heartbeat: IPaddr2”: norāda elektrokardiostimulatoram, kurš skripts jāizmanto, šajā gadījumā - IPaddr2, kurā vārda telpā tas atrodas (elektrokardiostimulatorā) un kādam standartam tas atbilst okf.
  • “op monitor interval = 60s”: uzdod elektrokardiostimulatoram ik pēc minūtēm pārbaudīt šī pakalpojuma stāvokli, izsaucot aģenta monitora darbību.

Pēc tam pievienojiet otro resursu ar nosaukumu http_server. Šeit pakalpojuma resursu aģents ir ocf: heartbeat: nginx.

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

Kad esat pievienojis kopas pakalpojumus, izdodiet šādu komandu, lai pārbaudītu resursu statusu.

$ sudo pcs status resources

Aplūkojot komandas izvadi, ir uzskaitīti divi pievienotie resursi: “floating_ip” un “http_server”. Pakalpojums floating_ip ir izslēgts, jo darbojas galvenais mezgls.

Ja jūsu sistēmā ir iespējots ugunsmūris, caur ugunsmūri ir jāļauj visa datplūsma uz Nginx un visi augstas pieejamības pakalpojumi, lai pareizi sazinātos starp mezgliem:

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

Pēdējais un svarīgais solis ir pārbaudīt, vai darbojas mūsu augstās pieejamības iestatīšana. Atveriet tīmekļa pārlūkprogrammu un dodieties uz adresi 192.168.10.20. Jums vajadzētu redzēt noklusējuma Nginx lapu no node2.example.com, kā parādīts ekrānuzņēmumā.

Lai imitētu kļūmi, izpildiet šo komandu, lai apturētu kopu mezglā2.example.com.

$ sudo pcs cluster stop http_server

Pēc tam atkārtoti ielādējiet lapu 192.168.10.20, tagad jums vajadzētu piekļūt noklusējuma Nginx tīmekļa lapai no node1.example.com.

Varat arī simulēt kļūdu, sakot pakalpojumam tieši apstāties, neapstādinot klasteri nevienā mezglā, izmantojot šādu komandu vienā no mezgliem:

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

Tad jums jāpalaiž crm_mon interaktīvajā režīmā (noklusējums), 2 minūšu monitora intervālā jums jāspēj redzēt klastera paziņojumu, ka http_server neizdevās, un pārvietot to uz citu mezglu.

Lai klastera pakalpojumi darbotos efektīvi, iespējams, būs jānosaka daži ierobežojumi. Visu izmantošanas komandu sarakstu varat skatīt datora man lapā (man pc).

Lai iegūtu papildinformāciju par Corosync un elektrokardiostimulatoru, skatiet vietni: https://clusterlabs.org/

Šajā ceļvedī mēs esam parādījuši pamatus par to, kā izvietot, konfigurēt un uzturēt augstu pieejamību/kopu veidošanu/replikāciju Ubuntu 16.04/18.04 un CentOS 7. Mēs parādījām, kā Nginx HTTP pakalpojumu pievienot kopai. Ja jums ir kādas domas, ko dalīties, vai jautājumi, izmantojiet tālāk sniegto atsauksmju veidlapu.