IPTables Balanceamento de carga interno

2

Estou tentando configurar um balanceamento de carga dentro da mesma LAN usando IPTables (se possível). Minha ideia é emular nosso principal balanceador de carga, mas, em um ambiente virtual, todos os servidores são máquinas virtuais.

Existe um servidor de Gateway, que encaminha o tráfego de e para os Servidores Virtuais e o Mundo Real, e eu quero usar esse Gateway para balancear algum tráfego dentro dessa LAN Virtual.

Minha configuração é:

  • GatewayServer - > 2 interfaces: eth0 (público), eth2 (privado; 10.x.y.0 / 24)
  • ServerA - > 1 interface: eth2 (Private; 10.x.y.0 / 24)
  • ServerB - > 1 interface: eth2 (Private; 10.x.y.0 / 24)

No ServerB há 2 instâncias de um serviço, escutando nas portas 60003 e 60004.

Meu objetivo é poder abrir uma conexão do ServerA para o GatewayServer: 60002 e ser balanceado para o ServerB nas portas 60003 e 60004 em uma forma Round Robin.

Eu consegui abrir conexões para o ServerB do ServerA através do servidor GateWay, mas o conector sempre alcança o ServerB na porta 60003, e nunca o outro, 60004.

Eu tenho o Gateway configurado dessa maneira:

-A POSTROUTING -i eth2 -s 10.x.y.0/24 -p tcp --dport 60002 -j DNAT --to-destination 10.x.y.18-10.x.y.18:60003-60004

-A POSTROUTING -o eth2 -j MASQUERADE

Sniffing no ServerB Eu vejo os pacotes vindo do GatewayServer, mas sempre hiting porta 60003 como indicado anteriormente.

Alguma ideia?

    
por CarlosH 01.10.2011 / 07:49

1 resposta

2

Você precisará verificar a versão do kernel que está sendo executado, pois os kernels posteriores a 2.6.11-rc1 tiveram a funcionalidade que você deseja usar removida. Para encontrar a versão do seu kernel, use uname, por exemplo.

uname -r 
2.6.32-71.el6.x86_64

Da página man do iptables

In Kernels up to 2.6.10 you can add several --to-destination options. For those kernels, if you specify more than one destination address, either via an address range or multiple --to-destination options, a simple round-robin (one after another in cycle) load balancing takes place between these addresses. Later Kernels (>= 2.6.11-rc1) donât have theability to NAT to multiple ranges anymore.

    
por 01.10.2011 / 18:21