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.comuse_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.