Erinevus lehekülje "HAProxy" redaktsioonide vahel
114. rida: | 114. rida: | ||
SSL offloadi põhimõtet iseloomustab järgnev skeem: | SSL offloadi põhimõtet iseloomustab järgnev skeem: | ||
− | [[Pilt:offloading.png]] | + | [[Pilt:Ssl offloading.png]] |
<source lang=bash> | <source lang=bash> |
Redaktsioon: 7. mai 2014, kell 09:50
Toores. Ehk seda pala võib täiendada.
HAProxy on üsna võimas proksiserver, mis suunab edasi nii TCP kui ka HTTP-protokolli ühendusi. Lisaks põhifunktsioonile (ehk proksimisele) töötab HAproxy ka koormusjaoturina, jagades defineeritud serverite vahel koormust erinevate meetoditega.
2014. märtsi seisuga on viimane versioon arenduses 1.5-dev21, mida oleme ka näidete juures kasutanud. Siiamaani pole vigu esinenud. Viimane stabiilne versioon on 1.4. Kui https tuge on vaja, siis on vaja kasutada versiooni 1.5 ja riskida mõningate vigadega, mis võivad esineda.
Sisukord
HAProxy installeerimine ja konfigureerimine
Käsurealt saab installeerida HAproxy kasutades käsku
sudo apt-get install haproxy
Sellepeale paigaldatakse vajalikud failid ja konfiguratsioonifaili loetakse asukohast */etc/haproxy/haproxy.cfg* Seal oli vist veel teid, kus neid otsitakse, aga etc asukoht oli mu arust esimene.
Võimalik installeerida ka binaarpaki kaudu. Selleks tuleb HAProxy kodulehelt tõmmata vastav fail, see lahti pakkida ja anda tekkinud failile käivitamisõigus (execute).
Parameetrid
Konfiguratsioonis on neli põhilist sektsiooni - defaults, frontend, backend ja listen.
- Defaults kehtib kõikidele sektsioonidele, kusjuures igas sektsioonis mainitud sama parameeter kirjutab default väärtuse üle.
- Frontend kehtib sissetulevatele ühendustele
- Backend kehtib suunatud ühendustele
- Listen kombineerib endas frontendi ja backendi. Listeni süntaks on lühem, kuid võib olla keerulisem lugeda.
Kõiki parameetreid (ja mis parameeter kuskil blokis lubatud on), saad lugeda HAProxy konfiguratsioonist. (Vaata: Ver 1.5 konfiguratsioon 4.1 Proxy keyword matrix)
Põhilised parameetrid
balance
Balance määrab koormusjaoturi algoritmi. Võimalikud variandid on leastconn, source ja roundrobin.
- leastconn saadab ühenduse kõige vähem koormatud serverile
- source saadab kõik ühelt IP-lt tulnud ühendused ühele ja samale serverile
- roundrobin saadab ühendused vaheldumisi kõigile serveritele (vaikeväärtus)
weight
Weight parameeter on valikuline ja lubab serveri juures määrata kaalu. Kaalu võib kasutada siis, kui serverid on erineva konfiguratsiooniga ja soov on võimsamale serverile anda suuremat koormust. Soovitatav on kasutada koormusi kümnendsammuga (10, 20, 30), siis on lihtsam võimalus vahele lisada mõnda serverit, kui seesugune vajadus peaks tekkima.
Väärtus peab olema vahemikus 0...100, kus 0 on kõige väiksema ja 100 kõige suurema kaaluga server. Serverid võivad olla ka sama kaaluga (nt 3 tükki on kaaluga 30 ja 2 tükki kaaluga 50).
minconn, maxconn
Parameeter peaks olema kindlasti seadistatud, kui kasutatakse roundrobin tüüpi koormuse jaotust. Ehk siis, kuna roundrobin on vaikeväärtus, siis peaks igaljuhul need parameetrid kasutusele võtma.
minconn ja maxconn on vastavalt madala koormuse ja suure koormusega lubatud ühenduste arv. Kui ühenduste arv on täis, siis pannakse ülejäänud ühendused ootele, et mitte serverit koormata.
Näidiskonfiguratisoon
Konfiguratsioonis eeldatakse,
- proksiserver aadressiga 192.168.0.2
- server 1 aadressiga 192.168.0.10
- server 2 aadressiga 192.168.0.20
- server 3 aadressiga 192.168.0.30
Näidiskonfiguratsioon /etc/haproxy/haproxy.cfg
global daemon pidfile /var/run/haproxy.pid maxconn 4096 defaults mode http timeout client 240s timeout connect 500s timeout server 240s frontend sissetulevad_yhendused *:80 maxconn 1000 default backend arvutus_serverid backend arvutus_serverid mode tcp balance source server serveri_nimi1 192.168.0.10:5555 check server serveri_nimi2 192.168.0.20:5555 check server serveri_nimi3 192.168.0.30:5555 check listen statistika 192.168.0.2:8080 mode http stats enable stats uri / stats realm HAProxy\ statistika.\ Parool\ palun! stats auth admin:1234
Kommentaarid konfiguratsiooni kohta
Konfiguratsiooni saab kirjutada väga mitmel erineval moel. Näiteks üks erinevus:
frontend yhenduse_nimi bind *:80
VERSUS
frontend yhenduse_nimi *:80
Kirjapildilt kaks erinevat, kuid mõte ja toimimine on mõlemal sama - kuulatakse kõiki sissetulevaid ühendusi kõikidele masinale omistatud IP aadressidele pordile 80.
Serveri nimi on niiöelda sinu enda jaoks, et saaksid statistika lehel eristada ja identifitseerida servereid. Kui kasutad parameetrit "check" serveri järel, siis kontrollitakse, kas server on "elus" ja sellest antakse ka statistika lehel märku.
Kui kuskil nimes on vaja kasutada tühikut " ", siis tuleb tühikule eelnevalt kirjutada tagurpidi kaldkriips "\" (ilma jutumärkideta!). Vt konfiguratsioonis näiteks parameetrit "stats realm".
Konfiguratsiooni muutmisel saab teha testi konfiguratsiooni vigade kohta:
sudo haproxy -f /etc/haproxy/haproxy.cfg -c
Muudatuste tegemisel jõustuvad need pärast teenuse taaskäivitamist:
sudo /etc/init.d/haproxy restart
Https offload
SSL offloadi põhimõtet iseloomustab järgnev skeem:
frontend ft_test
mode http
maxconn 1000
bind 0.0.0.0:443 ssl crt /etc/haproxy/haproxy.pem
default_backend bk_test
backend bk_test
mode http
server srv1 10.10.0.4:80
Lisada võib ka automaatse ümbersuunamise 80 pordilt 443 peale
frontend production-http-in
bind *:80
redirect scheme https if !{ ssl_fc }
Statistika
Statistika lehekülge on võimalik lubada / keelata. Selleks tuleb konfiguratsioonifaili see sisse kirjutada, vaikimisi on statistika lehekülg keelatud. Samuti saab vahetada statistikalehe porti, URI, admin kasutajanime ja parooli. Kui ligipääs tulemüürist on lubatud vaid sisevõrgust, siis võib jätta admin-admin, kui väline ligipääs, siis oleks mõistlik need ära vahetada. :)
Ekraanitõmmis statistika lehelt, kus konfiguratsioon seadistatud järgmiselt: Kasutusel 3 serverit, sissetulev http ühendus suunatakse edasi TCP ühenduseks pordile 443 (https), vaikimisi kasutatakse https ühendust. HTTPS ühendus kasutab kolme serverit, mille vahel koormust jaotatakse - test1, test2 ja test3. Kui ühendus on TCP portidele 5900, 5901 või 5092, siis need suunatakse edasi "konsool"-idele, mis on tegelikult samad serverid, aga millel pordid seadistatud eraldi.
Lisamaterjal
- http://haproxy.1wt.eu/
- Cybernetica AS juhend - https://x-road.ee/docs/est/haproxy_kasutamine_turvaserverite_koormusjaotuseks.pdf Mõeldud küll X-Tee turvaserveri seadistamiseks, aga lugemiseks ja tutvumiseks sobib kenasti.