HAProxy-aloittelijan opetusohjelma

Haproxy Aloittelijan Opetusohjelma



Sovelluksesi laajenee, tarve lisätä palvelimia käsittelemään enemmän liikennettä. Mitä enemmän liikennettä sovelluksesi vastaanottaa, sitä suuremmat mahdollisuudet kohdata seisokit palvelimen ylikuormituessa. On kuitenkin olemassa työkaluja, kuten HAProxy, joiden avulla voit määrittää, kuinka liikennettä käsitellään palvelimesi kuormituksen tasapainottamiseksi. Ajatuksena on varmistaa, että mikään palvelin ei ylikuormitu. High Availability Proxy on avoimen lähdekoodin ohjelmisto, joka on suunniteltu tarjoamaan luotettava kuormituksen tasapainotus samalla kun se toimii käänteisenä välityspalvelimena TCP/HTTP-sovelluksille.

HAProxy pyrkii vähentämään minkä tahansa palvelimen ylikuormitusta, ja se saavuttaa tämän jakamalla liikennettä varmistaakseen, ettei palvelin ylikuormita, vaan muita palvelimia on saatavilla. Instagramin kaltaisella alustalla on valtava liikenne sekunnissa lähetettävien pyyntöjen vuoksi, joten on tarpeen käyttää HAProxya määrittämään palvelimien käyttöliittymä, taustajärjestelmä ja kuuntelijat ylikuormituksen välttämiseksi.

Miksi käyttää HAProxya

Ennen kuin opit HAProxyn asennuksesta ja määrityksestä, sinun tulee ymmärtää, miksi tarvitsemme sitä sen tarjoamien ominaisuuksien ansiosta. Seuraavat ovat HAProxyn pääominaisuudet:







  1. Kuormituksen tasapainoittaminen - HAProxylla voit jakaa liikenteen mukavasti eri palvelimien kesken välttääksesi yhden palvelimen ylikuormituksen. Näin sovelluksesi ei kohtaa seisokkiongelmia, ja olet saavuttanut nopeamman reagoinnin, luotettavuuden ja saatavuuden.
  2. Kirjaaminen ja seuranta - Saat palvelimillesi yksityiskohtaiset seurantalokit, jotka auttavat ongelmien vianmäärityksessä. Lisäksi HAProxylla on tilastosivu, josta saat reaaliaikaiset suorituskykyanalyysit kuormituksen tasapainottimellesi.
  3. Terveystarkastukset - Jopa palvelimesi vaativat kuntotarkastuksen tilansa määrittämiseksi. HAProxy suorittaa usein terveystarkastuksia saadakseen tietää palvelimesi tilan parantaakseen sen luotettavuutta. Jos epäterveellinen palvelin havaitaan, se reitittää liikenteen toiselle palvelimelle.
  4. Käänteinen välityspalvelin – Yksi tapa parantaa turvallisuutta on piilottaa sisäinen rakenne. Onneksi HAProxy antaa sinun vastaanottaa liikenteen asiakkailta ja reitittää ne sopiville palvelimille. Tällä tavalla sisäinen rakentueesi piilotetaan hakkerin silmältä.
  5. ACL (käyttöoikeusluettelot) – HAProxylla voit määrittää kuinka liikenteen reititys tapahtuu käyttämällä erilaisia ​​kriteerejä, kuten polkuja, otsikoita ja IP-osoitteita. Näin ollen mukautetun reitityslogiikan määrittäminen liikenteelle tulee helpommaksi.
  6. SSL irtisanominen – Oletusarvoisesti taustapalvelimet purkavat SSL/TLS:n, mikä heikentää suorituskykyä. HAProxya käytettäessä SSL/TLS-pääte tapahtuu kuitenkin kuormituksen tasapainottimessa, mikä purkaa tehtävän taustapalvelimissa.

HAProxyn asennus

Toistaiseksi olemme määritelleet, mitä HAProxy on, ja keskustellut sen tarjoamista ominaisuuksista auttaaksemme sinua ymmärtämään, miksi tarvitset sitä sovellukseesi. Seuraava askel on ymmärtää, miten pääset alkuun asentamalla se järjestelmääsi.



Jos käytät Ubuntu- tai Debian-järjestelmiä, HAProxy voidaan asentaa APT-paketinhallinnasta. Suorita seuraava komento:



$ sudo apt päivitys
$ sudo apt install haproxy

Vastaavasti, jos käytät RHEL-pohjaisia ​​järjestelmiä tai CentOS:ää, HAProxy on saatavana 'yum'-paketinhallinnasta. Suorita seuraavat komennot:





$ sudo yum päivitys
$ sudo yum asenna haproxy

Meidän tapauksessamme käytämme Ubuntua. Näin ollen meillä on seuraava komento:



Voimme sitten tarkistaa sen version varmistaaksemme, että onnistuimme asentamaan HAProxyn onnistuneesti.

$ haproxy -- versio

Kuinka määrittää HAProxy

Kun HAProxy on asennettu, voit nyt avata sen asetustiedoston ( / etc/haproxy/haproxy.cfg) ja määritä asetukset, joita haluat käyttää kuormituksen tasapainottimessasi.

Avaa asetustiedosto editorilla, kuten nano tai vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Saat seuraavan kaltaisen konfigurointitiedoston:

Asetustiedostosta huomaat, että siinä on kaksi pääosaa:

  1. globaali - Se on tiedoston ensimmäinen osa, eikä sen arvoja pidä muuttaa. Se sisältää prosessiasetukset, jotka määrittelevät, kuinka HAProxy toimii. Se esimerkiksi määrittää lokitiedot ja ryhmät tai käyttäjät, jotka voivat suorittaa HAProxy-toimintoja. Huomaa, että tässä konfiguraatiotiedostossa voi olla vain yksi yleinen osio, ja sen arvojen tulee pysyä muuttumattomina.
  1. oletusarvot - Tämä osio sisältää solmujen oletusarvot. Voit esimerkiksi lisätä aikakatkaisut tai toimintatilan HAProxyllesi tähän osioon. Lisäksi HAProxy-määritystiedostossasi voi olla useita oletusosioita.

Tässä on esimerkki 'Oletusasetukset'-osiosta:

Annetussa kuvassa tila määrittää, kuinka HAProxy käsittelee saapuvat pyynnöt. Voit asettaa tilaksi HTTP tai TCP. Mitä tulee aikakatkaisuun, se määrittää, kuinka kauan HAProxyn tulee odottaa. Esimerkiksi aikakatkaisuyhteys on aika, joka on odotettava ennen kuin taustayhteys muodostetaan. Aikakatkaisuasiakas on se, kuinka kauan HAProxyn tulee odottaa, että asiakas lähettää tiedot. Aikakatkaisupalvelin on aika odottaa, että oikea palvelin lähettää tiedot, jotka välitetään asiakkaalle. Oletusarvojen määrittämisellä on paljon merkitystä sovelluksesi vasteajan pidentämisessä.

On kolme muuta osaa, jotka sinun tulee määrittää, jotta kuormantasauslaite toimisi odotetulla tavalla.

  1. etuosa - Tämä osio sisältää IP-osoitteet, joita haluat asiakkaidesi käyttävän yhteyden muodostamiseen.
  2. backend - Se näyttää palvelinvarastot, jotka käsittelevät pyyntöjä käyttöliittymäosiossa määritellyllä tavalla.
  3. kuunnella - Sitä käytetään peräkkäin, kun haluat reitittää tietyn palvelinryhmän. Tämä osio yhdistää käyttöliittymän ja taustajärjestelmän tehtävät.

Otetaan esimerkki

Tässä esimerkissä määrittelemme käyttöliittymän käyttämään localhostia tietyn portin kanssa. Seuraavaksi sidomme sen taustajärjestelmään, joka käyttää localhostia, ja suoritamme sitten Python-palvelimen testataksemme, toimiiko kaikki odotetulla tavalla kuormituksen tasapainotuksessa. Noudata annettuja ohjeita.

Vaihe 1: Oletusasetukset-osion määrittäminen

'Oletusasetukset'-osiossa asetamme arvot, jotka jaetaan solmujen kesken. Meidän tapauksessamme asetimme tilaksi HTTP ja asetamme aikakatkaisut asiakkaalle ja palvelimelle. Voit säätää ajan tarpeidesi mukaan.

Muista, että kaikki nämä muokkaukset ovat HAProxy-kokoonpanossa, joka sijaitsee osoitteessa '/etc/haproxy/haproxy.cfg'. Kun oletusosio on määritetty, määritellään käyttöliittymä.

Vaihe 2: Käyttöliittymäosion määrittäminen

Käyttöliittymä-osiossa määritämme, kuinka haluamme, että asiakkaat voivat käyttää sovellusta tai verkkosivustoa verkossa. Annamme sovelluksen IP-osoitteet. Mutta tässä tapauksessa työskentelemme paikallisen isännän kanssa. Siksi IP-osoitteemme on varaosoite 127.0.0.1 ja haluamme hyväksyä yhteydet portin 80 kautta.

Sinun on lisättävä 'bind'-avainsana, joka toimii IP-osoitteen kuuntelijana määritetyssä portissa. Määrittämäsi IP-osoite ja portti ovat niitä, joita kuormituksen tasapainotin käyttää saapuvien pyyntöjen hyväksymiseen.

Kun olet lisännyt edelliset rivit asetustiedostoon, meidän on käynnistettävä 'haproxy.service' uudelleen seuraavalla komennolla:

$ sudo systemctl käynnistä haproxy uudelleen

Tässä vaiheessa voimme yrittää lähettää pyynnöt verkkosivustollemme 'curl'-komennolla. Suorita komento ja lisää kohde IP-osoite.

$ curl

Koska emme ole vielä määrittäneet, kuinka HAProxymme taustaohjelma tulee olemaan, saamme 503-virheen, kuten seuraavassa näytetään. Vaikka kuormituksen tasapainotin onnistui vastaanottamaan pyynnöt, palvelinta ei tällä hetkellä ole saatavilla käsittelemään sitä, joten virhe.

Vaihe 3: Taustajärjestelmän määrittäminen

Taustaosa-osiossa määritämme palvelimet, jotka käsittelevät kaikki saapuvat pyynnöt. Kuormantasaaja viittaa tähän osioon tietääkseen, kuinka sen tulisi jakaa saapuvat pyynnöt varmistaakseen, että mikään palvelin ei ylikuormitu.

503-virhe, jonka saimme aiemmin, johtui siitä, että meillä ei ollut taustajärjestelmää käsittelemään pyyntöjä. Aloitetaan määrittelemällä 'default_backend' pyyntöjen käsittelemiseksi. Määrität sen käyttöliittymäosiossa. Nimesimme sille 'linux_backend' tässä tapauksessa.

Luo seuraavaksi taustaosa, jolla on sama nimi kuin käyttöliittymäosiossa määritetyllä nimellä. Sinun on sitten käytettävä 'palvelin'-avainsanaa, jota seuraa palvelimesi nimi ja sen IP-osoite. Seuraava kuva osoittaa, että määritimme 'linuxhint1'-palvelimen IP 127.0.0.1:n ja portin 8001 avulla:

Sinulla voi olla taustapalvelimia, mutta määritimme vain yhden tähän tapaukseen. Varmista, että tallennat tiedoston. Meidän on käynnistettävä HAProxy-palvelu uudelleen.

Luodun HAProxy-kuormituksen tasapainottimen testaamiseksi luomme verkkopalvelimen Python3:lla, joka sitoo taustaportit määrittämämme IP-osoitteen avulla. Suoritamme komennon seuraavasti:

$ python3 -m http.server 8001 --bind 127.0.0.1

Varmista, että vaihdat arvot vastaamaan IP-osoitettasi ja porttia, jonka haluat sitoa. Huomaa, kuinka verkkopalvelin luodaan ja kuuntelee saapuvia pyyntöjä.

Toisessa päätteessä käytetään 'curl'-komentoa pyynnön lähettämiseen palvelimelle.

$ curl

Toisin kuin saimme aiemmin 503-virheen, joka osoittaa, ettei palvelinta ole saatavilla käsittelemään pyyntöä, tällä kertaa saamme lähdön, joka vahvistaa, että HAProxy-kuormituksen tasapainottajamme toimii.

Jos palaat edelliseen päätteeseen, jossa loimme verkkopalvelimen, näet, että saamme onnistumistulosteen 200, joka vahvistaa, että HAProxy vastaanotti pyynnön ja käsitteli sen lähettämällä sen määritetylle palvelimelle taustaosassamme.

Näin voit asettaa yksinkertaisen HAProxyn verkkosivustollesi tai sovelluksellesi.

Työskentely sääntöjen kanssa

Ennen kuin päätämme tämän aloittelijan HAProxy-opetusohjelman, puhutaanpa nopeasti siitä, kuinka voit määrittää säännöt, jotka ohjaavat sitä, kuinka kuormituksen tasapainottaja käsittelee pyynnöt.

Noudattamalla samoja vaiheita kuin aiemmin, jätetään oletusosiomme ennalleen ja määritetään eri IP-osoitteet käyttöliittymäosaan. Sidomme saman IP-osoitteen, mutta hyväksymme yhteydet eri porteista.

Lisäksi meillä on 'default_backend' ja toinen 'use_backend', joka on erilainen palvelinvalikoima, jota käytämme riippuen portista, josta pyynnöt tulevat. Seuraavassa kokoonpanossa kaikki pyynnöt portin 81 kautta käsitellään 'Linux2_backendin' palvelimella. Kaikki muut pyynnöt käsittelee 'default_backend'.

Luomme sitten taustaosat käyttöliittymässä määritetyllä tavalla. Huomaa, että meillä on jokaiselle taustajärjestelmälle eri palvelin, jota määritämme käytettäväksi pyyntöjen käsittelyyn.

Käynnistä HAProxy-palvelu nopeasti uudelleen.

Luodaan verkkopalvelin Python3:lla ja sidotaan pyynnöt porttiin 8002, joka on vaihtoehtoinen taustapalvelin.

Kun lähetämme sille pyyntöjä, määritämme portiksi 81, jotta kuormituksen tasapainotin lähettää pyynnöt vaihtoehtoiselle palvelimelle, joka ei ole oletuspalvelin.

Tarkistamalla verkkopalvelimemme uudelleen voimme nähdä, että se onnistuu vastaanottamaan ja käsittelemään pyynnöt ja antaa 200 (onnistuneen) vastauksen.

Näin voit määrittää säännöt, jotka ohjaavat sitä, kuinka kuormantasaajasi vastaanottaa ja käsittelee pyynnöt.

Johtopäätös

HAProxy on ihanteellinen ratkaisu TCP/HTTP-sovellusten kuormituksen tasapainottamiseen. Asennuksen jälkeen voit muokata konfigurointitiedostoa mukavasti määrittääksesi oletusasetukset, käyttöliittymän ja taustaosan osiot, jotka ohjaavat kuormituksen tasaajan toimintaa. Tämä viesti on HAProxy-aloittelijan opas. Se alkoi määrittelemällä HAProxy ja sen ominaisuuksia. Seuraavaksi se kaivettiin ymmärtämään HAProxyn konfigurointia ja päätti antamalla esimerkin HAProxyn käyttämisestä kuormituksen tasaajana.