Wpisy otagowane ‘load balance’

FortiGate i równoważenie obciążenia

czwartek, 28 Maj 2009

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ń:

Produkcyjnie wykorzystywałem relayd, LVS i mod_jk. Heartbeat testowałem bardzo krótko.
Konfiguracja w FortiGate jest dość prosta (pomijam politykę zapory):

  1. Konfigurujemy Virtual Server
    W CLI konfigurujemy podobnie jak Virtual IP. Jako typ VIP ustawiamy server-load-balance. Rodzaj LB (server-type) możemy ustawić na: HTTP, TCP lub UDP oraz IP. Metod rozkładu obciążenia mamy do wyboru sześć: Static, Round Robin, Weighted, First Alive, Least RTT i Least Session. Do konfiguracji sprawdzania obecności (Health Check) trzeba wrócić później.
  2. 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.
  3. Definiujemy sposób sprawdzania obecności (przypisać go należy do wirtualnego serwera)
    Określamy typ (HTTP, TCP lub PING) i interwał oraz liczbę powtórzeń. W przypadku typu TCP podajemy port usługi, dla HTTP – URL i cią jaki ma być dopasowany do zawartości.
  4. …no i możemy cieszyć się gotowym rozwiązaniem.

lb1

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.
spline-visualizer
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.