HTTP vahendaja ja koormusjaotur Pound

Allikas: Kuutõrvaja

Sissejuhatus

Tarkvara Pound http://www.apsis.ch/pound/ võimaldab korraldada järgmisi tegevusi veebiserverite ees

  • HTTP vahendamine (ingl. k. reverse proxy)
  • koormusjaotus (ingl. k. load balancing)
  • tarkvaraline SSL-kiirendi (ingl. k. SSL offload)
  • Pound ei vahelaosta (ingl. k. caching) andmeid

Kasutusskeem võiks näiteks näha välja selline


           avalik võrk
 
                 |
               __|__
              |     |  tulemüür
              |_____|
                 |
                 |
                 |
        ---------|----------|------------
                            |
                          __|__
                         |     |  Pound (10.0.0.3)
                         |_____|
                            |
                            |
            ----|-----------|-------------|------------------|-----
                |                         |                 ...
              __|__                     __|__
             |     | http server 1     |     | http server 2
             |_____|                   |_____|
           (10.0.0.11)                (10.0.0.12)

Sõltuvalt vajadusest võib korraldada ka nii, et veebiserverite ees töötab iga ühe külge fikseeritud Pound ning Poundide vahel korraldab koormusjaotust tulemüür.

Paigaldamine

Pound peaks leiduma enamuse levinumae operatsioonis pakihalduses

Näiteks selle paigaldamiseks Debianis tuleb öelda

 # apt-get install pound

FeeBSD's leiab tarkvara portsude kaustast www/pound alt.

Seadistusfail on /etc/pound/pound.cfg ning käivitamine ja seiskamine toimub tavapäraselt skriptiga

 # /etc/init.d/pound stop|start

HTTP vahendamine

HTTP vahendamise korraldab näiteks selline seadistusfail

 User            "www-data"
 Group           "www-data"
 LogLevel        4
 Alive           5
 Daemon 1
 
 ListenHTTP
   Address 10.0.6.12
   Port    80
  
   Service
     URL "/mujale"
     Redirect "http://mujale.loomaaed.tartu.ee/"
   End
 
   Service
     BackEnd
       Address 10.0.1.14
       Port    8880
       TimeOut 1200
     End
   End
 End

Pound käivitamiseks tuleb öelda

 # /etc/init.d/pound start

Käivitamise tulemusena hakkab Pound kuulama päringuid soketil 10.0.6.12:80 ning ise pöörduma pärigutele vastuste saamiseks soketi 10.0.1.14:8880 poole.

Vaikimisi salvestatakse logi /var/log/syslog faili.

Oluline on tähele panna, et esitatud konfiguratsioonis Pound ei pööra päringute edastamisel tähelepanu päringus sisalduvale domeeninimele.

Tarkvaraline SSL-kiirendi

SSL-kiirendamise korraldab selline seadistusfaili sektsioon

 ListenHTTPS
   Address 10.0.6.12
   Port    443
   Cert    "/etc/pound/www.loomaaed.tartu.ee.pem"
   Ciphers "HIGH:MEDIUM:!ADH:!SSLv2"

   Service
     BackEnd
       Address 10.0.1.14
       Port    8889
       TimeOut 1200
     End
   End
 End

kus

  • failis /etc/pound/www.loomaaed.tartu.ee.pem esinevad andmed sellises järjekorras
 Veebiserveri sertifikaadi salajane võti
 Veebiserveri sertifikaat
 Kõrgema taseme sertifikaat, mille suhtes veebiserveri sertifikaat on väljastatud
 ..
 CA juursertifikaat
  • Ciphers määrab milliseid šiffreid ja protokolle kasutatakse, vaikimisi on ka 40bitised šiffrid lubatud

HTTP vahendamise ja SSL-kiirendamise sektsioonid võivad esineda samas seadistusfailis koos.

Veateated

Pound võimaldab kostümiseerida standarseid veateateid, nt

  • Err503 - direktiivi kasutamisel ListenHTTP sektsioonis esitatakse faili /srv/www/err-503.html sisu
Err503 "/srv/www/err-503.html"

Päiste järgi edasisuunamine

Päise järgi klapitades saab suunata brauserit Location direktiiviga edasi teisele aadressile

 Service
   HeadRequire "Host:.*sedapole.loomaaed.tartu.ee.*"
   Redirect "https://www.loomaaed.tartu.ee/"
 End

Koormusjaotus

User            "nobody"
Group           "nobody"
 
LogLevel        1
Alive           2
 
ListenHTTP
        Address 10.40.0.3
        Port    80
End
 
Service
        HeadRequire "Host: .*zoo.tartu.ee.*"
 
        BackEnd
                Address 10.0.0.11
                Port    80
  		 TimeOut 300
        End
 
        BackEnd
                Address 10.0.0.12
                Port 80
 		 TimeOut 300
        End
 
        Session
                Type Cookie
                ID   "JSESSIONID"
                TTL  300
        End
End

Märkused

  • 2009 aasta Pound versiooni abil ei ole võimalik nõuda üksiku URI puhul kliendisertifikaati ning muude jaoks mitte, saab nõuda kas kogu veebikoha kohta või siis üldse mitte kliendisertifikaadikontrolli kasutada
  • 2009 aasta Pound versiooni abil ei saa kasutada AddHeader direktiivi Service sektsiooni see, ainult Listener'is
  • Debian Lenny kasutamisel tuleb arvestada, et maksimaalse query string suuruse piiranguks on 1024 baiti, selle muutmiseks sobib nt kompileerida src pound paketist tarkvara kasutades seejuures pound-2.4.3/debian/rules failis real
env LDFLAGS="$(LDFLAGS)" CFLAGS="$(CFLAGS)" ./configure ...

lisaks parameetrit '--with-maxbuf=4096'. Uueks query string piiranguks on siis 4kB.

Kasulikud lisamaterjalid

Lingid

http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/ php sessioonide salvestamine proxymise jaoks, et need ei läheks katki serveri muutumisel.