Nejprve by bylo vhodné připomenout, k čemu technika zvaná Load Balancing slouží. Jedná se rozkládání zátěže např. provozu httpd web serveru mezi více zdrojů, přesněji serverů.
Load Balancing – součást systému
Základní instalace pfSense disponuje jednoduchou funkcionalitou Load Balancer. Technicky se o rozkládání stará služba relayd, která je součástí FreeBSD. Původ tohoto daemona je v projektu OpenBSD.
Konfigurace
Nastavení se provádí v menu Services / Load Ballancer
, kde jsou dvě záložky Pools
a Virtual Servers
. Editací Pools nastavíme IPv4 adresy předinstalovaných webserverů a určíme, na jaký port má být provoz rozkládán. Dále definujeme, jakým způsobem si má pfSense monitorovat dostupnost jednotlivých nodů web serveru, použijeme ICMP.
V záložce Virtual servers definujeme IPv4 adresu, ze které se bude rozkládat provoz na nastavené Pools. Nastavení je velmi jednoduché. Další podrobnosti konfigurace naleznete v dokumentaci.
Pro fungování je nutné povolit patřičnou komunikaci na WAN interface. Pro zjednodušení pravidla si nadefinujeme Alias obsahující seznam IPv4 adres. Samotné jednořádkové pravidlo povoluje protokol TCP na seznam adres ip_LB na port 80.
Sledování stavu
V pfSense je možné sledovat stav Load Balancingu v menu Status / Load Balancer / Virtual Servers
. Dále pak existuje stejnojmenný widget pro zobrazení v dashboardu. Pokud jeden z nodů vypneme, nebo na něm jen stopneme službu httpd, pfSense tuto aktivitu detekuje a dále službu zajišťuje jen jeden node. Ve statusu nedostupný node zčervená.
Pro test funkčnosti v tomto malém prostředí, postačí výchozí webová stránka v CentOS. Při přístupech na stránku můžeme nahlédnout do logu web serveru a pozorovat jednotlivé rozkládané hity.
Alternativy LB
Pokud nám z nějakého důvodu nevyhovuje vestavěná funkcionalita relayd
, máme možnost nainstalovat balíček HAProxy, jehož možnosti jsou mnohem širší.