HAProxy-kuormituksen tasapainottimen asentaminen CentOS:ään

Artikkelin käännös valmistettiin kurssin alkamisen aattona "Linux-järjestelmänvalvoja. Virtualisointi ja klusterointi"

HAProxy-kuormituksen tasapainottimen asentaminen CentOS:ään

Kuormituksen tasapainotus on yleinen ratkaisu verkkosovellusten vaakasuoraan skaalaukseen useiden isäntien välillä ja tarjoaa samalla käyttäjille yhden yhteyspisteen palveluun. HAProxy on yksi suosituimmista avoimen lähdekoodin kuormituksen tasapainotusohjelmistoista, joka tarjoaa myös korkean käytettävyyden ja välityspalvelintoiminnallisuuden.

HAProxy pyrkii optimoimaan resurssien käytön, maksimoimaan suorituskyvyn, minimoimaan vasteajan ja välttämään yksittäisten resurssien ylikuormittamista. Se voidaan asentaa useisiin Linux-jakeluihin, kuten CentOS 8:aan, johon keskitymme tässä oppaassa, sekä järjestelmiin Debian 8 и Ubuntu 16.

HAProxy-kuormituksen tasapainottimen asentaminen CentOS:ään

HAProxy sopii erityisen hyvin verkkosivuille, joilla on erittäin paljon liikennettä, ja siksi sitä käytetään usein parantamaan usean palvelimen verkkopalvelukokoonpanojen luotettavuutta ja suorituskykyä. Tässä oppaassa hahmotellaan vaiheet HAProxyn määrittämiseksi kuormituksen tasapainottajaksi CentOS 8 -pilvipalvelimelle, joka sitten reitittää liikenteen verkkopalvelimillesi.

Parhaan tuloksen saavuttamisen edellytyksenä on, että sinulla tulee olla vähintään kaksi verkkopalvelinta ja kuormituksen tasapainotuspalvelin. Verkkopalvelimissa on oltava käytössä vähintään perusverkkopalvelu, kuten nginx tai httpd, jotta niiden välinen kuormituksen tasapainotus voidaan testata.

HAProxyn asentaminen CentOS 8:aan

Koska HAProxy on nopeasti kehittyvä avoimen lähdekoodin sovellus, saatavilla oleva jakelu standardeissa CentOS-varastoissa ei välttämättä ole uusin versio. Saat selville uusimman version suorittamalla seuraavan komennon:

sudo yum info haproxy

HAProxy tarjoaa aina valittavana kolme vakaata versiota: kaksi viimeisintä tuettua versiota ja kolmas, vanhempi versio, joka saa edelleen tärkeitä päivityksiä. Voit aina tarkistaa uusimman vakaan version HAProxy-verkkosivustolta ja päättää sitten, minkä version kanssa haluat työskennellä.

Tässä oppaassa asennamme uusimman vakaan version 2.0, joka ei ollut vielä saatavilla vakiovarastoissa oppaan kirjoitushetkellä. Sinun on asennettava se alkuperäisestä lähteestä. Tarkista kuitenkin ensin, oletko täyttänyt ohjelman lataamisen ja kääntämisen ehdot.

sudo yum install gcc pcre-devel tar make -y

Lataa lähdekoodi alla olevalla komennolla. Voit tarkistaa, onko uudempaa versiota saatavilla HAProxyn lataussivu.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Kun lataus on valmis, pura tiedostot alla olevalla komennolla:

tar xzvf ~/haproxy.tar.gz -C ~/

Siirry pakkaamattomaan lähdehakemistoon:

cd ~/haproxy-2.0.7

Käännä sitten ohjelma järjestelmällesi:

make TARGET=linux-glibc

Ja lopuksi asenna itse HAProxy:

sudo make install

HAProxy on nyt asennettu, mutta se vaatii joitain lisäkäsittelyjä, jotta se toimii. Jatketaan alla olevien ohjelmistojen ja palveluiden määrittämistä.

HAProxyn määrittäminen palvelimellesi

Lisää nyt seuraavat hakemistot ja tilastotiedostot HAProxy-merkinnöille:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Luo symbolinen linkki binäärille, jotta voit suorittaa HAProxy-komentoja tavallisena käyttäjänä:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Jos haluat lisätä välityspalvelimen järjestelmääsi palveluna, kopioi haproxy.init-tiedosto esimerkeistä /etc/init.d-hakemistoosi. Muokkaa tiedoston käyttöoikeuksia niin, että komentosarja toimii, ja käynnistä sitten systemd-daemon uudelleen:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Sinun on myös sallittava palvelun käynnistyminen automaattisesti uudelleen, kun järjestelmä käynnistyy:

sudo chkconfig haproxy on

Mukavuuden vuoksi on myös suositeltavaa lisätä uusi käyttäjä suorittamaan HAProxy:

sudo useradd -r haproxy

Tämän jälkeen voit tarkistaa asennetun versionumeron uudelleen seuraavalla komennolla:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

Meidän tapauksessamme version pitäisi olla 2.0.7, kuten yllä olevassa esimerkkitulosteessa näkyy.

Lopuksi CentOS 8:n oletuspalomuuri on melko rajoittava tälle projektille. Käytä seuraavia komentoja salliaksesi tarvittavat palvelut ja nollataksesi palomuuri:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Kuormituksen tasapainottimen asetukset

HAProxyn määrittäminen on melko yksinkertainen prosessi. Pohjimmiltaan sinun tarvitsee vain kertoa HAProxylle, mitä yhteyksiä sen tulee kuunnella ja mihin ne välittää.

Tämä tehdään luomalla asetustiedosto /etc/haproxy/haproxy.cfg, jossa määritetään asetukset. Voit lukea HAProxy-määritysvaihtoehdoista dokumentaatiosivullajos haluat tietää siitä lisää.

Kuormituksen tasapainotus kuljetuskerroksessa (kerros 4)

Aloitetaan perusasetuksista. Luo uusi asetustiedosto, esimerkiksi käyttämällä vi alla olevalla komennolla:

sudo vi /etc/haproxy/haproxy.cfg

Lisää tiedostoon seuraavat osat. Korvata palvelimen nimi mikä pitäisi kutsua palvelimiasi tilastosivulla ja yksityinen_ip — niiden palvelimien yksityiset IP-osoitteet, joihin haluat ohjata verkkoliikennettä. Voit tarkistaa yksityiset IP-osoitteet UpCloud-ohjauspaneelissa ja välilehdellä Yksityinen verkko valikossa verkko.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

Tämä määrittelee kuljetuskerroksen kuormituksen tasapainottimen (kerros 4), jonka ulkoinen nimi on http_front-kuuntelu portissa 80, joka sitten välittää liikenteen oletustaustajärjestelmään nimeltä http_back. Lisätilastot /haproxy?stats yhdistää tilastosivun määritettyyn osoitteeseen.

Erilaisia ​​kuormituksen tasapainotusalgoritmeja.

Palvelimien määrittäminen taustaosassa sallii HAProxyn käyttää näitä palvelimia kuormituksen tasapainottamiseen kiertoalgoritmin mukaisesti, kun mahdollista.

Tasapainotusalgoritmeja käytetään määrittämään, mille taustapalvelimen palvelimelle kukin yhteys välitetään. Tässä on joitain hyödyllisiä vaihtoehtoja:

  • Roundrobin: Jokaista palvelinta käytetään vuorotellen painonsa mukaan. Tämä on sujuvin ja oikeudenmukaisin algoritmi, kun palvelimien käsittelyaika pysyy tasaisesti jakautuneena. Tämä algoritmi on dynaaminen, joten palvelimen painoa voidaan säätää lennossa.
  • Leastconn: valitaan palvelin, jolla on vähiten yhteyksiä. Round robin suoritetaan palvelimien välillä, joilla on sama kuorma. Tämän algoritmin käyttöä suositellaan pitkille istunnoille, kuten LDAP, SQL, TSE jne., mutta se ei ole kovin sopiva lyhyille istunnoille, kuten HTTP.
  • Ensimmäinen: Ensimmäinen palvelin, jolla on käytettävissä olevia yhteyspaikkoja, vastaanottaa yhteyden. Palvelimet valitaan pienimmästä numeerisesta tunnuksesta korkeimpaan, mikä on oletuksena palvelimen sijainti maatilalla. Kun palvelin saavuttaa maxconn:n, käytetään seuraavaa palvelinta.
  • Lähde: Lähteen IP-osoite tiivistetään ja jaetaan käynnissä olevien palvelimien kokonaispainolla sen määrittämiseksi, mikä palvelin vastaanottaa pyynnön. Tällä tavalla sama asiakkaan IP-osoite menee aina samalle palvelimelle, kun taas palvelimet pysyvät samoina.

Kuormituksen tasapainotuksen määrittäminen sovellustasolla (kerros 7)

Toinen käytettävissä oleva vaihtoehto on määrittää kuormituksen tasapainottaja toimimaan sovellustasolla (kerros 7), mikä on hyödyllistä, kun verkkosovelluksesi osat sijaitsevat eri isännissä. Tämä voidaan saavuttaa rajoittamalla yhteyden lähetystä esimerkiksi URL-osoitteen kautta.

Avaa HAProxy-määritystiedosto tekstieditorilla:

sudo vi /etc/haproxy/haproxy.cfg

Määritä sitten käyttöliittymä- ja taustasegmentit alla olevan esimerkin mukaisesti:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

Käyttöliittymä ilmoittaa ACL-säännön nimeltä url_blog, joka koskee kaikkia yhteyksiä, joiden polut alkavat /blogilla. Use_backend määrittää, että url_blog-ehtoa vastaavat yhteydet tulee palvella blog_back-nimisen taustajärjestelmän kautta ja kaikki muut pyynnöt käsittelee oletusarvoinen taustaohjelma.

Taustapuolella kokoonpano määrittää kaksi palvelinryhmää: http_back, kuten aiemmin, ja uusi, nimeltään blog_back, joka käsittelee yhteyksiä osoitteeseen example.com/blog.

Kun olet muuttanut asetuksia, tallenna tiedosto ja käynnistä HAProxy uudelleen seuraavalla komennolla:

sudo systemctl restart haproxy

Jos saat varoituksia tai virheilmoituksia käynnistyksen aikana, tarkista niiden määritykset ja varmista, että olet luonut kaikki tarvittavat tiedostot ja kansiot. Yritä sitten käynnistää uudelleen.

Asennuksen testaaminen

Kun HAProxy on määritetty ja käynnissä, avaa kuormituksen tasauspalvelimen julkinen IP-osoite selaimessa ja tarkista, oletko muodostanut yhteyden taustajärjestelmään oikein. Kokoonpanon stats uri -parametri luo tilastosivun määritettyyn osoitteeseen.

http://load_balancer_public_ip/haproxy?stats

Kun lataat tilastosivun, jos kaikki palvelimesi näkyvät vihreinä, asennus onnistui!

HAProxy-kuormituksen tasapainottimen asentaminen CentOS:ään

Tilastosivu sisältää hyödyllisiä tietoja web-isäntäjesi seurantaan, mukaan lukien ylös-/alennusajat ja istuntojen määrä. Jos palvelin on merkitty punaiseksi, varmista, että palvelin on päällä ja että voit pingata sen kuormituksen tasapainotuslaitteesta.

Jos kuormituksen tasapainotin ei vastaa, varmista, että palomuuri ei estä HTTP-yhteyksiä. Varmista myös, että HAProxy toimii käyttämällä alla olevaa komentoa:

sudo systemctl status haproxy

Tilastosivun suojaaminen salasanalla

Kuitenkin, jos tilastosivu on yksinkertaisesti lueteltu käyttöliittymässä, se on avoin kaikille, mikä ei ehkä ole hyvä idea. Sen sijaan voit määrittää sille mukautetun porttinumeron lisäämällä alla olevan esimerkin haproxy.cfg-tiedoston loppuun. Korvata käyttäjätunnus и salasana jotain turvallista:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Kun olet lisännyt uuden kuuntelijaryhmän, poista vanha tilastot uri -linkki käyttöliittymäryhmästä. Kun olet valmis, tallenna tiedosto ja käynnistä HAProxy uudelleen.

sudo systemctl restart haproxy

Avaa sitten kuormituksen tasapainotin uudelleen uudella porttinumerolla ja kirjaudu sisään konfiguraatiotiedostossa määrittämäsi käyttäjänimellä ja salasanalla.

http://load_balancer_public_ip:8181

Varmista, että kaikki palvelimesi näkyvät edelleen vihreinä, ja avaa sitten vain kuormituksen tasapainottimen IP ilman porttinumeroita selaimessasi.

http://load_balancer_public_ip/

Jos sinulla on taustapalvelimillasi ainakin jonkin verran aloitussivuja, huomaat, että joka kerta kun lataat sivun uudelleen, saat vastauksen eri isännältä. Voit kokeilla erilaisia ​​tasapainotusalgoritmeja asetusosiossa tai tarkistaa täydellinen dokumentaatio.

Johtopäätös: HAProxy Load Balancer

Onnittelut HAProxy-kuormituksen tasapainottimen onnistuneesta asennuksesta! Jopa peruskuormituksen tasapainotusasetuksella voit parantaa merkittävästi verkkosovelluksesi suorituskykyä ja saatavuutta. Tämä opas on vain johdatus kuormituksen tasapainottamiseen HAProxylla, joka pystyy paljon enemmän kuin mitä pika-asennusoppaassa voidaan käsitellä. Suosittelemme kokeilemaan erilaisia ​​kokoonpanoja kattava dokumentaatio, HAProxyn käytettävissä, ja ala sitten suunnitella kuormituksen tasapainotusta tuotantoympäristöäsi varten.

Kun käytät useita isäntiä verkkopalvelusi suojaamiseen liikkumavaralla, itse kuormantasaaja voi silti olla vikapaikka. Voit parantaa korkeaa käytettävyyttä entisestään asentamalla kelluvan IP-osoitteen useiden kuormitustasainten välille. Saat lisätietoja tästä meidän artikkeli kelluvista IP-osoitteista UpCloudissa.

Kurssista lisää "Linux-järjestelmänvalvoja. Virtualisointi ja klusterointi"***

Lähde: will.com

Lisää kommentti