Load Balancing entre várias interfaces de rede virtual

6

Eu tenho uma instância do AWS com várias interfaces de rede virtual, todas com diferentes IPs elásticos. Desde que eu rastreio desta máquina, os IPs são bloqueados frequentemente. Distribuir o tráfego de saída através de todas essas interfaces impedirá que ele seja mapeado para diferentes IPs elásticos.

eth0      Link encap:Ethernet  HWaddr 0A:E6:A3:DD:F1:E0  
          inet addr:10.0.0.120  Bcast:10.0.0.127  Mask:255.255.255.128
          inet6 addr: fe80::8e6:a3ff:fedd:f1e0/64 Scope:Link

eth0:0    Link encap:Ethernet  HWaddr 0A:E6:A3:DD:F1:E0  
          inet addr:10.0.0.122  Bcast:10.0.0.127  Mask:255.255.255.128
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:1    Link encap:Ethernet  HWaddr 0A:E6:A3:DD:F1:E0  
          inet addr:10.0.0.18  Bcast:10.0.0.127  Mask:255.255.255.128
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Eu quero enviar meu tráfego de saída de todas as interfaces de rede de forma round robin. Como essas interfaces são virtuais, não consigo fazer isso usando o pacote iproute2 . Alguém pode me dizer como posso conseguir isso?

    
por pradeepchhetri 28.01.2014 / 12:57

1 resposta

4

Você pode usar a suite iproute2 para isso. O fato de os IPs de origem serem atribuídos a aliases de interface não afeta o problema.

Vamos supor que seu gateway padrão é 10.0.0.1

ip route del default
ip route add default via 10.0.0.1 dev eth0 src 10.0.0.122

É isso. Basta substituir a rota padrão pela segunda linha, substituindo 10.0.0.122 pelo IP de origem do qual você deseja rotear o tráfego.

Se você quiser usar todos os seus IPs ao mesmo tempo, basta atribuir cada uma delas a determinadas sub-redes:

ip route add 64.0.0.0/2 via 10.0.0.1 dev eth0 src 10.0.0.122
ip route add 128.0.0.0/2 via 10.0.0.1 dev eth0 src 10.0.0.18

Isso fará com que todo o tráfego de saída para 64.0.0.0 - 127.255.255.255 use 10.0.0.122 e 128.0.0.0 - 191.255.255.255 use 10.0.0.18 . Todo o outro tráfego usará o padrão de 10.0.0.120

O fato de os IPs serem atribuídos a aliases de interface (eth0: 0) não tem absolutamente nenhum impacto. IProute2 (ou realmente o kernel) não se importa.
E sim, eu tentei isso na minha rede doméstica, funciona muito bem.

    
por 29.01.2014 / 06:32