Balanceamento de carga iptables

1

Estou tentando usar o iptable para balanceamento de carga. Eu estou trabalhando com o VirtualBox. Todos os vm (debian) estão na rede interna e os IPs são estáticos. Desejo encaminhar solicitações que chegam ao meu servidor da Web (apache2) com o IPddress 10.0.0.2:80 para os IPs do servidor 10.0.0.3:80 e 192.168.0.2:80 na outra rede.

O gateway faz o encaminhamento IP, ele tem duas interfaces eth0 usadas para a rede 10.0.0.0 e eth1 para a rede 192.168.0.0 . O balanceador de carga tem o IP 10.0.0.2 . Eu tento definir essas regras, mas não funcionou:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 3 --packet 0 -j DNAT --to-destination 10.0.0.3:80

iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 3 --packet 1 -j DNAT --to-destination 192.168.0.2:80

    
por free 09.12.2014 / 15:48

1 resposta

3

Sugiro usar uma solução diferente, como haproxy, um proxy nginx ou quase qualquer outro método de balanceamento de carga real. Geralmente, o balanceamento de carga do iptables é usado para pacotes de saída em vários uplinks.

Se você precisa equilibrar usando o iptables, então você precisa usar um método diferente. Apenas alguns pacotes irão manejar todos os seus pedidos. Eu vi um tutorial decente sobre uma configuração similar ( aqui ) que "encaminha" todos os endereços de origem ímpares para um host, e todos os endereços com numeração par para o outro. Realmente, cada servidor recebe todos os pedidos de conexão e tráfego, mas apenas um estabelece a conexão. Os servidores recebem o mesmo endereço MAC e, em seguida, são informados para remover os pacotes syn de fontes pares ou ímpares. Isso tem o benefício de não adicionar um único ponto de falha, contanto que você faça um script de algo para permitir novamente todo o tráfego no canal ao vivo se o outro falhar.

    
por 09.12.2014 / 15:58