Teknologian jakaminen

Haproxy rakentaa verkkoklusterin

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: Tapausanalyysi

1: Tapauksen yleiskatsaus

2: Ennakkotieto

3: Tapausympäristö

2: Tapauksen toteutus

1: Käännä ja asenna nginx-palvelin (kahden nginx-sivuston vaiheet ovat täsmälleen samat, vain testisivu on erilainen)

[root@localhost ~]# yum -y asentaa pcre-devel zlib-devel gcc*

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[root@localhost ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.12.0]# tee && tee asennus

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "test web01" > test.html

[root@localhost ~]# systemctl pysäyttää palomuuri

[root@localhost ~]# nginx -t

[root@localhost ~]# nginx ##Aloita nginx-prosessi

[root@localhost ~]# netstat -anpt | grep nginx

2: Käännä ja asenna Haproxy

[root@localhost ~]# systemctl pysäyttää palomuuri

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y asennus pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# make TARGET=linux26

[root@localhost haproxy-1.5.19]# tee asennus

Huomautus:

linux22 Linux 2.2:lle

linux24 Linux 2.4:lle ja uudemmille (oletus)

linux24e Linux 2.4:lle, jossa on tuki toimivalle epollille (> 0.21)

linux26 Linux 2.6:lle ja uudemmille

solaris Solaris 8:lle tai 10:lle (muut testaamattomat)

freebsd for FreeBSD 5 - 8.0 (muut testaamattomat)

openbsd OpenBSD 3.1 - 4.6 (muut testaamattomat)

cygwin Cygwinille

yleinen mille tahansa muulle käyttöjärjestelmälle.

mukautettu säätämään jokaista asetusta manuaalisesti

3: Haproxy-palvelimen kokoonpano

(1) Luo haproxy-määritystiedosto

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/

(2) Luo palveluskripti

[root@localhost haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --add haproxy

(3) Haproxy-kokoonpanon esittely

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

maailmanlaajuisesti

loki 127.0.0.1 local0

loki 127.0.0.1 local1 ilmoitus

#log loghost local0 tiedot

maxconn 4096

uid 99

gid 99

demoni

#debug

#hiljainen

oletusarvot

kirjaudu maailmanlaajuisesti

tila http

vaihtoehto httplog

vaihtoehto dontlognull

yrittää uudelleen 3

#uudelleenlähetys

maxconn 2000

jatkoaika 5000

ilmaston yli 50 000

srvtimeout 50000

kuuntele verkkoklusteri 0.0.0.0:80

vaihtoehto httpchk GET /index.html

tasapaino roundrobin

palvelin inst1 192.168.1.61:80 check inter 2000 fall 3

palvelin inst2 192.168.1.62:80 check inter 2000 fall 3

Voit lisätä painon jokaisen palvelimen jälkeen painoarvon asettamiseksi.

palvelin inst1 192.168.1.61:80 check inter 2000 fall 3paino 1

palvelin inst2 192.168.1.62:80 check inter 2000 fall 3paino 2

Jokaisen väitteen selitys

maailmanlaajuisesti

loki 127.0.0.1 local0 \määritä lokikirjaus,paikallinen0Onko lokilaite, oletus on järjestelmäloki

loki 127.0.0.1 local1 ilmoitus \Lokin taso onilmoitus

#log loghost local0 tiedot

maxconn 4096 \Liitäntöjen enimmäismäärä

uid 99 \käyttäjäuid

gid 99 \käyttäjägid

demoni \Suorita demoniprosessina

#debug \Virheenkorjaustila, tulosta käynnistystiedot vakiolähtöön

#hiljainen \Hiljainen tila, ei lähtöä käynnistyksen yhteydessä

oletusarvot

kirjaudu globaaliin \käyttääpalloloki määritelty sisään

tila http \Mode onhttp

vaihtoehto httplog \käyttäähttpKirjauksen muoto

vaihtoehto dontlognull \varmistaaHAProxyÄlä tallenna ylemmän tason kuormituksen tasapainottimen lähettämiä sykepaketteja tilatietojen havaitsemiseksi.

yrittää uudelleen 3 \Tarkista solmuyhteysvirheiden määrä, joka ylittää3Solmu ei ole käytettävissä

  #uudelleenlähetys\latauksen aikanaKun arvo on erittäin korkea, yhteydet, joita on käsitelty nykyisessä jonossa pitkään, katkaistaan ​​automaattisesti.

maxconn 2000 \Liitäntöjen enimmäismäärä

contimeout 5000 \Yhteyden aikakatkaisuneiti

ilmaston yli 50 000Asiakkaan aikakatkaisuneiti

srvtimeout 50000Palvelimen aikakatkaisuneiti

kuuntele verkkoklusteri 0.0.0.0:80 \Määritä klusterin ja kuunteluportin numerot

vaihtoehto httpchk GET /index.html \Tarkista palvelimenindex.htmlasiakirja,Syketunnistuksen URL-asetukset

tasapaino roundrobin \Kuormantasauksen ajoitusalgoritmi on round robin

palvelin inst1 192.168.1.61:80 check inter 2000 fall 3 \Määritä online-solmut

palvelin inst2 192.168.1.62:80 check inter 2000 fall 3

tarkista välillä 2000on havaita sydämenlyöntitaajuus (jokainen2000 mshavaittu kerran),syksy 3Joo3Palvelin ei ole käytettävissä, jos se epäonnistuu

Uudessa versiossa aikakatkaisuasetuksia on muutettu seuraavasti:

contimeout korvataan aikakatkaisuyhteydellä:Määritä aikakatkaisujakso, jonka haproxy odottaa edelleenlähettääkseen asiakaspyyntöjä taustapalvelimelle

clitimeout korvataan aikakatkaisuasiakkaalla:Asiakkaan käyttämättömyyden aikakatkaisuaika on aika, joka kuluu sovellukselta yhteyden muodostamiseen haproxyyn

srvtimeout korvataan aikakatkaisupalvelimella:Kun asiakas muodostaa yhteyden palvelimeen, palvelinta odottava aikakatkaisujakso on aika, joka kuluu haproxylle yhteyden muodostamiseen taustaverkkopalvelimeen.

Huomautus:

haproxyAikataulutusalgoritmeja on kahdeksan

    1. saldo vähintään connLiitäntöjen vähimmäismäärä
    2. tasapaino roundrobinäänestys
    3. tasapainon lähdeAsiakkaan mukaanIPKuinka tehdä hajautus
    4. static-rrPainon mukaan
    5. uripyynnöstäURI
    6. url_parampyynnöstäURLparametri
    7. hdr(nimi)mukaanHTTPpyydä otsikkoa lukitsemaan joka kertaHTTPkysyä
    8. rdp-eväste(nimi)mukaaneväste (nimi)lukita ja hajauttaa joka kertaTCPkysyä

chroot /usr/share/haproxy \Tämä tarkoittaa juurihakemiston sijainnin vaihtamista, kun ohjelma suoritetaan. Jos sinulla on tämä koodi, sinun on luotava tämä hakemisto.

Tietoja lokitasoista

staattisen tason DEBUG

DEBUG Level huomauttaa, että hienojakoiset tietotapahtumat ovat erittäin hyödyllisiä sovellusten virheenkorjauksessa.

staattisen tason INFO

INFO-taso ilmaisee, että viesti korostaa sovelluksen käynnissä olevaa prosessia karkearakeisella tasolla.

staattinen taso VAROITUS

WARN-taso ilmaisee mahdollisen virhetilanteen.

staattisen tason VIRHE

ERROR-taso osoittaa, että vaikka virhetapahtuma tapahtuu, se ei silti vaikuta järjestelmän jatkuvaan toimintaan.

staattinen taso FATAL

FATAL-taso osoittaa, että jokainen vakava virhetapahtuma aiheuttaa sovelluksen sulkemisen.

Lisäksi saatavilla on kaksi erityistä kirjaustasoa:

staattinen taso KAIKKI

ALL Level on alin taso ja sitä käytetään kytkemään kaikki kirjaukset päälle.

staattinen taso OFF

OFF Level on korkein taso ja sitä käytetään sammuttamaan kaikki kirjaukset.

4: Aloita

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start

5: Testaa verkkoklusteria

http://192.168.1.60/test.html

Päivitä sivu testattavaksi

tai testaa skriptillä

[root@localhost ~]# for i in $(seq 10); tee curl http://192.168.1.60/test.html ;valmis

6: Haproxy loki

Haproxy ei tallenna lokeja oletuksena. Sen lisäksi, että määrität lokitulosteen haproxy.conf-tiedoston globaalissa osiossa, sinun on määritettävä myös järjestelmälokin määritystiedosto.

menetelmä yksi:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

maailmanlaajuisesti

# loki 127.0.0.1 local0

# log 127.0.0.1 local1 ilmoitus

#log loghost local0 tiedot

maxconn 4096

chroot /usr/share/haproxy

uid 99

gid 99

demoni

#debug

#hiljainen

log /dev/log local0 tiedot

log /dev/log local0 ilmoitus

[root@localhost haproxy-1.4.24]# touch /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

if ($programname == 'haproxy' ja $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log

& ~

if ($programname == 'haproxy' ja $syslogseverity-text == 'huomautus') then -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# palvelun rsyslogin uudelleenkäynnistys

[root@localhost ~]#/etc/init.d/haproxy-uudelleenkäynnistys

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

Tapa kaksi:

(1) Muokkaa /etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

maailmanlaajuisesti

loki 127.0.0.1 paikallinen3

#local3 on laite, joka vastaa tiedoston /etc/rsyslog.conf kokoonpanoa, ja lokitietojen taso kierrätetään oletusarvoisesti.

(2) Kirjoita haproxy-lokitiedosto

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

&~

Huomautus:

$ModLoad imudpUDP-protokolla lokien keräämiseen

$UDPServerRun 514Määritä lokin keräämiseen käytetty portin numero

local3.* /var/log/haproxy.logMääritä lokin tallennuspaikka

(3) Määritä rsyslogin päämääritystiedosto ja ota käyttöön etäloki (valinnainen)

[root@localhost ~]# vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS=”-c 2 -r -m 0″

#-c 2 Käytä yhteensopivuustilaa, oletus on -c 5

#-r Ota etäkirjaus käyttöön

#-m 0-merkin aikaleima.Yksikkö on minuutit. Kun se on 0, se tarkoittaa, että toiminto on poistettu käytöstä.

(4) Käynnistä haproxy- ja rsyslog-palvelut uudelleen

[root@localhost ~]# systemctl käynnistä rsyslog uudelleen

[root@localhost ~]# systemctl käynnistä haproxy uudelleen

(5) Tarkista loki verkkosivustolla käynnin jälkeen

[root@localhost ~]# kissa /var/log/haproxy.log

Laajennus: välityspalvelin mysql

kuuntele mysql 0.0.0.0:3306

palvelin mysql1 192.168.10.205:3306 tarkista portti 3306 maxconn 300