Równoważenie obciążenia (LB + HA) w FortiGate sprawdzone! Działa. Na razie w środowisku mocno testowym, produkcyjnie na razie nie mam potrzeby używania. Zanim opiszę jak używać, odnośniki do alternatywnych rozwiązań:
- relayd z OpenBSD (i jakiś port dla FreeBSD),
- LVS,
- Heartbeat,
- mod_jk – LB dla Apache Tomcat (vide mój projekt pracowniczy w P. I. Kamsoft AD 2005).
Produkcyjnie wykorzystywałem relayd, LVS i mod_jk. Heartbeat testowałem bardzo krótko.
Konfiguracja w FortiGate jest dość prosta (pomijam politykę zapory):
- Konfigurujemy Virtual Server
W CLI konfigurujemy podobnie jak Virtual IP. Jako typ VIP ustawiamyserver-load-balance. Rodzaj LB (server-type) możemy ustawić na:HTTP,TCPlubUDPorazIP. Metod rozkładu obciążenia mamy do wyboru sześć:Static,Round Robin,Weighted,First Alive,Least RTTiLeast Session. Do konfiguracji sprawdzania obecności (Health Check) trzeba wrócić później. - Definiujemy rzeczywiste serwery
Oprócz nazwy i adresu IP podajemy port usługi, a także wagę i maksymalną liczbę połączeń. Serwery rzeczywiste przypisujemy serwera wirtualnego. - Definiujemy sposób sprawdzania obecności (przypisać go należy do wirtualnego serwera)
Określamy typ (HTTP,TCPlubPING) i interwał oraz liczbę powtórzeń. W przypadku typuTCPpodajemy port usługi, dlaHTTP– URL i cią jaki ma być dopasowany do zawartości. - …no i możemy cieszyć się gotowym rozwiązaniem.
Przykładowa konfiguracja może wyglądać tak:
config firewall ldb-monitor
edit "DEV-HCH"
set type tcp
set port 80
next
end
config firewall vip
edit "DEV"
set type server-load-balance
set extip 192.168.1.230
set extintf "wan1"
set server-type tcp
set monitor "DEV-HCH"
set ldb-method first-alive
set extport 80
config realservers
edit 1
set ip 10.1.0.1
set port 80
next
edit 2
set ip 10.1.0.2
set port 80
next
edit 3
set ip 10.1.0.3
set port 80
next
end
next
end
Jedyny minus jaki dotychczas dostrzegłem, to brak jakiejkolwiek informacji w logach (pamięć, FortiAnalyzer) o tym, że dany serwer nie działa lub zmienił swój stan.
Poniżej wykres z JMeter – duży skok na początku to wyłączenie pierwszego serwera; metoda rozkładania obciążenia: First Alive i 10 sekund pomiędzy kolejnymi testami.

Innych testów nie chciało mi się robić. Środowisko testowe jeszcze trochę będzie stało (planuję m. in. testy MySQL w klastrze), więc jak ktoś chce wyniki testów LB przy konkretnych ustawieniach, proszę o kontakt.


