Najprostszy sposób jak wykonać load balancing przy użyciu tylko iptables. Wykorzystujemy do tego moduł “statistic” w trybie “nth” który oznacza nam każdy co czwarty pakiet (–every 4), licząc od zadanego (–packet 0). Same regułki wyglądają tak:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 4 --packet 0 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 4 --packet 1 -j DNAT --to-destination 192.168.1.3:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 4 --packet 2 -j DNAT --to-destination 192.168.1.4:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 4 --packet 3 -j DNAT --to-destination 192.168.1.5:80
Jeśli ustawimy takie regułki na serwerze z adresem 192.168.1.1 to każde nowe połączenie przychodzące na ten serwer na porcie 80 będzie przekierowane na inne maszyny na podstawie licznika (w tym wypadku modulo 4). Czyli pierwsze połączenie poleci na serwer 192.168.1.2, drugie na 192.168.1.3, trzecie na 192.168.1.4, a czwarte na 192.168.1.5, a potem od nowa. Oczywiście można to robić dla dowolnej ilości maszyn oraz dla dowolnych usług. Ważne jest tylko, aby zawsze był sprawdzany stan pakietu i aby regułki stosowane były tylko dla nowych połączeń. W przeciwnym razie kolejne serwery będą dostawać pakiety nie przeznaczone dla nich i usługi nie będą działały.
Recent Comments