Kuinka määrittää ja ylläpitää korkeaa käytettävyyttä/klusterointia Linuxissa
High Availability (HA) viittaa yksinkertaisesti järjestelmän laatuun, joka toimii jatkuvasti ilman vikoja pitkän ajan. HA-ratkaisut voidaan toteuttaa laitteistolla ja/tai ohjelmistolla, ja yksi yleisimmistä ratkaisuista HA:n toteuttamiseen on klusterointi.
Tietojenkäsittelyssä klusteri koostuu kahdesta tai useammasta tietokoneesta (tunnetaan yleisesti nimellä solmut tai jäsenet), jotka toimivat yhdessä suorittaakseen tehtävän. Tällaisessa asennuksessa vain yksi solmu tarjoaa palvelun ja toissijaiset solmut ottavat haltuunsa, jos se epäonnistuu.
Klusterit jakautuvat neljään päätyyppiin:
- Tallennus: Tarjoa yhtenäinen tiedostojärjestelmäkuva klusterin palvelimille, jolloin palvelimet voivat samanaikaisesti lukea ja kirjoittaa yhteen jaettuun tiedostojärjestelmään.
- Korkea käytettävyys: eliminoi yksittäiset vikakohdat ja siirtämällä palvelut klusterin solmusta toiseen, jos solmu menee epäkuntoon.
- Kuormituksen tasapainotus: lähetä verkkopalvelupyynnöt useille klusterin solmuille pyyntökuormituksen tasapainottamiseksi klusterin solmujen välillä.
- Suuri suorituskyky: suorita rinnakkaista tai samanaikaista käsittelyä, mikä auttaa parantamaan sovellusten suorituskykyä.
Toinen laajalti käytetty ratkaisu HA:n tarjoamiseen on replikointi (erityisesti tietojen replikaatiot). Replikointi on prosessi, jolla yksi tai useampi (toissijainen) tietokanta voidaan pitää synkronoituna yhden ensisijaisen (tai pää-) tietokannan kanssa.
Klusterin määrittämiseksi tarvitsemme vähintään kaksi palvelinta. Tässä oppaassa käytämme kahta Linux-palvelinta:
- Solmu1: 192.168.10.10
- Node2: 192.168.10.11
Tässä artikkelissa esittelemme perusasiat korkean käytettävyyden/klusteroinnin käyttöönotosta, määrittämisestä ja ylläpitämisestä Ubuntu 16.04/18.04:ssä ja CentOS 7:ssä. Näytämme kuinka Nginx HTTP -palvelu lisätään klusteriin.
Paikallisten DNS-asetusten määrittäminen jokaiselle palvelimelle
Jotta kaksi palvelinta voivat kommunikoida keskenään, meidän on määritettävä asianmukaiset paikalliset DNS-asetukset molempien palvelimien /etc/hosts-tiedostossa.
Avaa ja muokkaa tiedostoa käyttämällä suosikkikomentorivieditoria.
sudo vim /etc/hosts
Lisää seuraavat merkinnät palvelimiesi todellisilla IP-osoitteilla.
192.168.10.10 node1.example.com
192.168.10.11 node2.example.com
Tallenna muutokset ja sulje tiedosto.
Nginx-verkkopalvelimen asentaminen
Asenna nyt Nginx-verkkopalvelin käyttämällä seuraavia komentoja.
sudo apt install nginx [On Ubuntu]
sudo yum install epel-release && sudo yum install nginx [On CentOS 7]
Kun asennus on valmis, käynnistä Nginx-palvelu toistaiseksi ja ota se käyttöön automaattisesti käynnistyksen yhteydessä. Tarkista sitten, onko se käynnissä systemctl-komennolla.
Ubuntussa palvelun pitäisi käynnistyä automaattisesti heti paketin esimääritysten valmistuttua, voit ottaa sen käyttöön.
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
Nginx-palvelun käynnistämisen jälkeen meidän on luotava mukautettuja verkkosivuja molempien palvelimien toimintojen tunnistamiseksi ja testaamiseksi. Muokkaamme Nginx-oletushakemistosivun sisältöä kuvan mukaisesti.
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
Corosyncin ja sydämentahdistimen asentaminen ja määrittäminen
Seuraavaksi meidän on asennettava Pacemaker, Corosync ja PC jokaiseen solmuun seuraavasti.
sudo apt install corosync pacemaker pcs #Ubuntu
sudo yum install corosync pacemaker pcs #CentOS
Kun asennus on valmis, varmista, että pcs-daemon on käynnissä molemmilla palvelimilla.
sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl status pcsd
Klusterin luominen
Asennuksen aikana luodaan järjestelmän käyttäjä nimeltä "hacluster". Joten meidän on määritettävä tietokoneille tarvittava todennus. Aloitetaan luomalla uusi salasana "hacluster" -käyttäjälle. Meidän on käytettävä samaa salasanaa kaikissa palvelimissa:
sudo passwd hacluster
Suorita seuraavaksi jollakin palvelimista (Node1) seuraava komento määrittääksesi tietokoneille tarvittava todennus.
sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force
Luo nyt klusteri ja täytä se joillakin solmuilla (klusterin nimi ei saa ylittää 15 merkkiä, tässä esimerkissä olemme käyttäneet esimerkkiklusteria) Node1-palvelimella.
sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com
Ota nyt klusteri käyttöön käynnistyksen yhteydessä ja käynnistä palvelu.
sudo pcs cluster enable --all
sudo pcs cluster start --all
Tarkista nyt, onko klusteripalvelu käytössä ja käynnissä seuraavalla komennolla.
sudo pcs status
OR
sudo crm_mon -1
Yllä olevan komennon tulosteesta näet, että STONITH-laitteita ei ole varoitettu, mutta STONITH on edelleen käytössä klusterissa. Lisäksi klusterin resursseja/palveluita ei ole määritetty.
Klusteriasetusten määrittäminen
Ensimmäinen vaihtoehto on poistaa käytöstä STONITH (tai Shoot The Other Node In The Head), joka on Pacemaker-suojaus.
Tämä komponentti auttaa suojaamaan tietojasi samanaikaisen käytön aiheuttamalta turmeltumiselta. Tätä opasta varten poistamme sen käytöstä, koska emme ole määrittäneet laitteita.
Poista STONITH käytöstä suorittamalla seuraava komento:
sudo pcs property set stonith-enabled=false
Ohita seuraavaksi myös Päätösvaltaisuus-käytäntö suorittamalla seuraava komento:
sudo pcs property set no-quorum-policy=ignore
Kun olet asettanut yllä olevat asetukset, suorita seuraava komento nähdäksesi ominaisuusluettelon ja varmistaaksesi, että yllä olevat vaihtoehdot, stonith ja quorum policy on poistettu käytöstä.
sudo pcs property list
Resurssi-/klusteripalvelun lisääminen
Tässä osiossa tarkastellaan klusterin resurssin lisäämistä. Määritämme kelluvan IP-osoitteen, joka on IP-osoite, joka voidaan siirtää välittömästi palvelimelta toiselle samassa verkossa tai datakeskuksessa. Lyhyesti sanottuna kelluva IP on tekninen yleinen termi, jota käytetään IP-osoitteille, jotka eivät ole tiukasti sidottu yhteen rajapintaan.
Tässä tapauksessa sitä käytetään tukemaan vikasietoa korkean käytettävyyden klusterissa. Muista, että kelluvat IP-osoitteet eivät ole vain vikasietotilanteita varten, vaan niillä on muutamia muita käyttötapauksia. Meidän on määritettävä klusteri siten, että vain klusterin aktiivinen jäsen "omistaa" kelluvan IP-osoitteen tai vastaa siihen kulloinkin.
Lisäämme kaksi klusteriresurssia: kelluvan IP-osoiteresurssin "floating_ip" ja Nginx-verkkopalvelimen resurssin "http_server".
Aloita lisäämällä floating_ip seuraavasti. Tässä esimerkissä kelluva IP-osoitteemme on 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
missä :
- floating_ip: on palvelun nimi.
- "ocf:heartbeat:IPaddr2": kertoo tahdistimelle, mitä komentosarjaa tulee käyttää, tässä tapauksessa IPaddr2:ta, missä nimiavaruudessa se on (tahdistin) ja minkä standardin se on ocf.
- "op monitor interval=60s ": kehottaa sydämentahdistinta tarkistamaan tämän palvelun kunnon minuutin välein kutsumalla agentin valvontatoimintoa.
Lisää sitten toinen resurssi, nimeltä http_server. Tässä palvelun resurssiagentti on ocf:heartbeat:nginx.
sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"
Kun olet lisännyt klusteripalvelut, tarkista resurssien tila antamalla seuraava komento.
sudo pcs status resources
Tarkasteltaessa komennon tulosta, kaksi lisättyä resurssia: "floating_ip" ja "http_server" on listattu. Kelluva_ip-palvelu on pois päältä, koska ensisijainen solmu on toiminnassa.
Jos palomuuri on käytössä järjestelmässäsi, sinun on sallittava kaikki liikenne Nginxiin ja kaikki korkean käytettävyyden palvelut palomuurin kautta, jotta solmujen välinen viestintä on asianmukaista:
-------------- 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
Korkean käytettävyyden/klusteroinnin testaus
Viimeinen ja tärkeä vaihe on testata, että korkean käytettävyyden asetukset toimivat. Avaa verkkoselain ja siirry osoitteeseen 192.168.10.20. Sinun pitäisi nähdä Nginx-oletussivu osoitteesta node2.example.com, kuten kuvakaappauksessa näkyy.
Voit simuloida virhettä suorittamalla seuraavan komennon pysäyttääksesi klusterin osoitteessa node2.example.com.
sudo pcs cluster stop http_server
Lataa sitten sivu uudelleen osoitteessa 192.168.10.20. Nyt sinun pitäisi käyttää Nginx-oletusverkkosivua osoitteesta node1.example.com.
Vaihtoehtoisesti voit simuloida virhettä käskemällä palvelua pysähtymään suoraan, pysäyttämättä klusteria missään solmussa, käyttämällä seuraavaa komentoa jossakin solmussa:
sudo crm_resource --resource http_server --force-stop
Sitten sinun on suoritettava crm_mon interaktiivisessa tilassa (oletus) 2 minuutin monitorointivälin sisällä. Sinun pitäisi nähdä klusterin ilmoitus, että http_palvelin epäonnistui, ja siirry sen toiseen solmuun.
Jotta klusteripalvelusi toimisivat tehokkaasti, saatat joutua asettamaan joitain rajoituksia. Näet pcs-man-sivun (man kpl) luettelon kaikista käyttökomennoista.
Lisätietoja Corosyncistä ja Pacemakerista on osoitteessa https://clusterlabs.org/
Yhteenveto
Tässä oppaassa olemme näyttäneet perusasiat korkean käytettävyyden/klusteroinnin/replikoinnin käyttöönotosta, määrittämisestä ja ylläpitämisestä Ubuntu 16.04/18.04:ssä ja CentOS 7:ssä. Osoitimme, kuinka Nginx HTTP -palvelu lisätään klusteriin. Jos sinulla on jaettavaa ajatuksia tai kysymyksiä, käytä alla olevaa palautelomaketta.