Visoka dostopnost (HA) se preprosto nanaša na kakovost sistema, ki neprekinjeno deluje brez okvar dlje časa. Rešitve HA se lahko izvajajo s strojno in/ali programsko opremo, ena od pogostih rešitev za izvajanje HA pa je združevanje v gruče.
V računalništvu je grozd sestavljen iz dveh ali več računalnikov (splošno znanih kot vozlišča ali člani), ki skupaj opravljajo nalogo. V takšni nastavitvi samo eno vozlišče zagotavlja storitev, pri kateri sekundarna vozlišča prevzamejo, če ne uspe.
Grozdi so razdeljeni v štiri glavne vrste:
Druga široko uporabljena rešitev za zagotavljanje HA je podvajanje (zlasti podvajanje podatkov). Podvajanje je postopek, s katerim je mogoče eno ali več (sekundarnih) baz podatkov hraniti v sinhronizaciji z eno samo primarno (ali glavno) bazo podatkov.
Za nastavitev gruče potrebujemo vsaj dva strežnika. V tem priročniku bomo uporabili dva strežnika Linux:
V tem članku bomo prikazali osnove, kako razmestiti, konfigurirati in vzdrževati visoko razpoložljivost/združevanje v gruče v Ubuntu 16.04/18.04 in CentOS 7. Pokazali bomo, kako v gručo dodati storitev Nginx HTTP.
Če želite strežnika medsebojno komunicirati, moramo konfigurirati ustrezne lokalne nastavitve DNS v /etc/hosts datoteko na obeh strežnikih.
Odprite in uredite datoteko s svojim najljubši urejevalnik ukazne vrstice.
$ sudo vim /etc /hosts
Dodajte naslednje vnose z dejanskimi naslovi IP vaših strežnikov.
192.168.10.10 node1.example.com. 192.168.10.11 node2.example.com.
Shranite spremembe in zaprite datoteko.
Zdaj namestite spletni strežnik Nginx z naslednjimi ukazi.
$ sudo apt install nginx [Na Ubuntu] $ sudo yum install epel-release && sudo yum install nginx [Na CentOS 7]
Ko je namestitev končana, zaenkrat zaženite storitev Nginx in ji omogočite samodejni zagon ob zagonu, nato pa z ukazom systemctl preverite, ali deluje in deluje.
V Ubuntuju je treba storitev samodejno zagnati takoj po končani predkonfiguraciji paketa, preprosto jo lahko omogočite.
$ sudo systemctl omogoči nginx. $ sudo systemctl zaženite nginx. $ sudo systemctl status nginx.
Po zagonu storitve Nginx moramo ustvariti spletne strani po meri za identifikacijo in preizkušanje operacij na obeh strežnikih. Vsebino privzete indeksne strani Nginx bomo spremenili, kot je prikazano.
$ echo "To je privzeta stran za node1.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS1. $ echo "To je privzeta stran za node2.example.com" | sudo tee /usr/share/nginx/html/index.html #VPS2.
Nato moramo namestiti Srčni spodbujevalnik, Corosync, in Kom na vsakem vozlišču, kot sledi.
$ sudo apt install corosync pacemaker pcs #Ubuntu $ sudo yum install corosync pacemaker pcs #CentOS
Ko je namestitev končana, se prepričajte, da kom daemon deluje na obeh strežnikih.
$ sudo systemctl omogoči pcsd. $ sudo systemctl začni pcsd. $ sudo systemctl status pcsd.
Med namestitvijo je poklical sistemski uporabnik "Hacluster" je ustvarjen. Zato moramo nastaviti potrebno preverjanje pristnosti kom. Začnimo z ustvarjanjem novega gesla za "Hacluster" uporabnik, na vseh strežnikih moramo uporabiti isto geslo:
$ sudo passwd hacluster.
Nato na enem od strežnikov (Node1) zaženite naslednji ukaz, da nastavite potrebno preverjanje pristnosti kom.
$ sudo pcs gruča avt. node1.example.com node2.example.com -u hacluster -p geslo_tukaj -sila.
Zdaj ustvarite gručo in jo napolnite z nekaterimi vozlišči (ime gruče ne sme presegati 15 znakov, v tem primeru smo uporabili examplecluster) na strežniku Node1.
$ sudo pcs nastavitev gruče -ime examplecluster node1.example.com node2.example.com
Zdaj omogočite gručo ob zagonu in zaženite storitev.
Omogoči gručo $ sudo pcs -vse. $ sudo pcs cluster start -vse.
Sedaj preverite, ali je storitev gruče vzpostavljena in deluje z naslednjim ukazom.
$ sudo pcs status. ALI. $ sudo crm_mon -1.
Iz izpisa zgornjega ukaza lahko vidite, da obstaja opozorilo o št STONITH naprave še STONITH je še vedno omogočen v gruči. Poleg tega niso bili konfigurirani viri/storitve grozdov.
Prva možnost je onemogočanje STONITH (oz Ustreli drugo vozlišče v glavo), izvedba ograje naprej Srčni spodbujevalnik.
Ta komponenta ščiti vaše podatke pred poškodbami zaradi hkratnega dostopa. V tem priročniku ga bomo onemogočili, ker nismo konfigurirali nobene naprave.
Izklopiti STONITH, zaženite naslednji ukaz:
$ sudo pcs niz lastnosti stonith-enabled = false.
Nato zanemarite tudi Zbor pravilnika z izvajanjem naslednjega ukaza:
$ sudo pcs niz lastnosti lastnine no-quorum-policy = ignore.
Ko nastavite zgornje možnosti, zaženite naslednji ukaz, da si ogledate seznam lastnosti in zagotovite, da zgornje možnosti, stonith in politika sklepčnosti so onemogočeni.
Seznam nepremičnin $ sudo pcs.
V tem razdelku bomo pogledali, kako dodati vir gruče. Konfigurirali bomo plavajoči IP, ki je naslov IP, ki ga je mogoče takoj premakniti z enega strežnika na drugega v istem omrežju ali podatkovnem centru. Skratka, plavajoči IP je tehnični skupni izraz, ki se uporablja za IP -je, ki niso vezani le na en sam vmesnik.
V tem primeru se bo uporabljal za podporo pri samodejnem preklopu v gruči z visoko razpoložljivostjo. Upoštevajte, da plavajoči IP -ji niso samo za primere napak, ampak imajo še nekaj drugih primerov uporabe. Grozdo moramo konfigurirati tako, da je le aktivni član gruče v vsakem trenutku "lastnik" ali odziv na plavajoči IP.
Dodali bomo dva vira gruče: vir plavajočega naslova IP, imenovan »plavajoči_ip"In vir za spletni strežnik Nginx, imenovan"http_server”.
Najprej začnite z dodajanjem floating_ip na naslednji način. V tem primeru je naš plavajoči naslov IP 192.168.10.20.
$ sudo pcs vir create floating_ip ocf: heartbeat: IPaddr2 ip = 192.168.10.20 cidr_netmask = 24 op monitor interval = 60s.
kje:
Nato dodajte drugi vir z imenom http_server. Tu je agent sredstev storitve ocf: srčni utrip: nginx.
$ sudo pcs vir ustvari http_server ocf: heartbeat: nginx configfile = "/etc/nginx/nginx.conf" op monitor timeout = "20s" interval = "60s"
Ko dodate storitve gruče, izdajte naslednji ukaz, da preverite stanje virov.
viri stanja $ sudo pcs.
Če pogledamo rezultat ukaza, sta dodana dva vira: “Floating_ip” in »Http_server« so bili navedeni. Storitev floating_ip je izklopljena, ker deluje primarno vozlišče.
Če imate v sistemu omogočen požarni zid, morate dovoliti ves promet Nginx in vse storitve visoke razpoložljivosti prek požarnega zidu za pravilno komunikacijo med vozlišči:
CentOS 7 $ sudo firewall-cmd --permanent --add-service = http. $ sudo firewall-cmd --permanent --add-service = visoka razpoložljivost $ sudo firewall-cmd --reload Ubuntu $ sudo ufw dovoli http $ sudo ufw dovoli visoko razpoložljivost $ sudo ufw reload
Zadnji in pomemben korak je preveriti, ali naša nastavitev visoke razpoložljivosti deluje. Odprite spletni brskalnik in se pomaknite do naslova 192.168.10.20 bi morali videti privzeto stran Nginx iz node2.example.com kot je prikazano na posnetku zaslona.
Če želite simulirati napako, zaženite naslednji ukaz, da ustavite gručo na node2.example.com.
$ sudo pcs gruča ustavi http_server.
Nato znova naložite stran na 192.168.10.20, bi morali zdaj dostopati do privzete spletne strani Nginx iz node1.example.com.
Druga možnost je, da simulirate napako, tako da storitvi poveste, naj se ustavi neposredno, ne da bi ustavila gručo na katerem koli vozlišču, z naslednjim ukazom na enem od vozlišč:
$ sudo crm_resource --resource http_server --force-stop
Potem morate teči crm_mon v interaktivnem načinu (privzeto) bi morali v intervalu monitorja, ki traja 2 minuti, videti obvestilo o gruči, da http_server ni uspelo in ga premaknite na drugo vozlišče.
Če želite, da bodo vaše storitve gruče učinkovite, boste morali nastaviti nekaj omejitev. Ogledate si lahko kom man page (man pcs) za seznam vseh ukazov za uporabo.
Za več informacij o Corosync -u in srčnem spodbujevalniku si oglejte: https://clusterlabs.org/
V tem priročniku smo pokazali osnove, kako razmestiti, konfigurirati in vzdrževati visoko razpoložljivost/združevanje v skupine/podvajanje v Ubuntu 16.04/18.04 in CentOS 7. Pokazali smo, kako v gručo dodati storitev Nginx HTTP. Če imate kakršne koli misli ali vprašanja, uporabite spodnji obrazec za povratne informacije.