Haproxy használata XEN alatt

Death_to_stock_photography_weekend_work (1 of 10)Első post-om, egy régi jól bevált programról, a haproxy-ról.

Eddig, csak olyan megoldást kellett alkalmaznom a XEN guest gépek között, ahol elegendő volt a hostnál egy portforward-ot csinálni, valahogy így:

iptables -A PREROUTING -t nat -p tcp -i eth0 –dport <from-port> -j DNAT –to <to ip:port>

Ez praktis és egyszerű megoldás, de mi van, ha ugyanazon szolgáltatások között (pl.: web) elosztani a forgalmat. Ilyenkor tesz jó szolgálatot a haproxy. Telepítése pofonegyszerű, rengeteg kiváló írás van róla a neten. A megoldás a szóban forgó problémára a következő:

Az /etc/haproxy.cfg-be kellenek a következők:

Egy frontend-et kell definiálni először:

frontend http-in
bind *:80
acl host_mail hdr(host) -i mail.valami.com
acl host_web hdr(host) -i valami.com

use_backend mail if host_mail
use_backend web if host_web

magyarázat: Adott egy kisvállalati szerver, amin két quest egymástól elválasztva működik. Az egyik a cég webes felületét adja, a másik a céges levelezést végzi. Viszont a levelezéshez a külsős, vagy épp nem a céges gépen dolgozó munkatársaknak webmail-re is szükségük lehet. Az url alapján el tudja dönteni a host (pontosabban a haproxy), hogy melyik questre (haproxyul backend) irányítsa a csomagokat.

 

Definiálni kell a backend-eket:

backend mail
balance leastconn
option httpclose
option forwardfor
cookie JSESSIONID prefix
server node1 <quest1-ip>:80 check
backend web
balance leastconn
option httpclose
option forwardfor
cookie JSESSIONID prefix
server node1 <quest2-ip>:80 check

Ennyi. Egyszerű, üzembiztos. Többféle szolgáltatásra használható, webszerverek közötti loadbalance-ra is lehet használni.