HAProxy, jak název napovídá, je proxy server a load balancer pro zajištění vysoké dostupnosti. V tomto článku nejprve ukážu, jak nainstalovat HAProxy ve FreeBSD. Dále se nastavíme tak, aby fungoval jako reverzní proxy.
Instalace
Ve FreeBSD rád sestavuji a instaluji svůj software ze stromu portů, takže spusťte jako root:
# cd /usr/ports/net/haproxy
# make install clean
Věnujte pozornost obrazovce, kde se zobrazí dialogové okno s možnostmi (většinou ze závislostí). Po instalaci povolte HAProxy v /etc/rc.conf a pokračujte další částí:
# /usr/local/etc/rc.d/haproxy enable
haproxy enabled in /etc/rc.conf
Konfigurace
Než budeme pokračovat v úpravách konfiguračního souboru, dovolte mi vysvětlit scénář:
Nejprve máme k dispozici pouze jednu veřejnou IP. Za druhé, máme několik služeb, které chceme vystavit na internetu, řekněme aplikaci (webapp) a naše webové stránky. Oba běží na svých vlastních serverech. Konečně máme třetí náhradní server, kam jsme již nainstalovali HAProxy v předchozí sekci a tento bude vystaven na internetu.
Uživatel nasměruje svůj prohlížeč na http://haproxy/website nebo http://haproxy/app a haproxy odešle dotaz na správný server a vrátí výsledky do prohlížeče.
________ /------- [server A] [ client browser] -----> | haproxy |-----+ +----------+ \--------[server B]
Každopádně, wikipedie lépe popíše, jak funguje reverzní proxy.
Přidejte následující části do /usr/local/etc/haproxy.conf. Chcete-li spustit globální výchozí hodnoty, jsou v pořádku:
frontend http-in bind *:80 option forwardfor use_backend uno if { path_beg /app} use_backend dos if { path_beg /www } backend uno mode http server nodea ipAp.or.fqdn:port backend dos mode http server nodeb ipB.or.fqdn:port
Pokud jako já nemáte příklad haproxy.conf, přidejte tuto sekci na začátek souboru:
global daemon maxconn 4096 defaults log global mode http timeout connect 5s timeout client 10s timeout server 10s
S touto minimální konfigurací můžete zkontrolovat, zda je vše v pořádku, a spustit službu:
Pro testovací účely jsem udělal haproxy, abych mohl získat věci z mého vlastního počítače:
Mám Apache, kam ukládám nějaké programy, které bych mohl potřebovat, když jsem na cizím PC. Kouzelné slovo je úplná adresa URL některých z těchto programů.
A co nějaké skutečné použití HAProxy?
Toto je minimální příklad, mimochodem nepříliš užitečný. Důrazně doporučuji přečíst si alespoň dva dokumenty HAProxy:
- Příručka pro začátečníky a
- Konfigurační příručka
A váš haproxy.conf soubor by byl tak komplikovaný nebo jednoduchý, jak je potřeba.