Ativando a comunicação do contêiner entre hosts em um ambiente VMware ESXi

1

Eu tenho um grupo de servidores CentOS 7.2 em execução como VMs no ESXi 6.0 da VMware. Todos eles residem na mesma sub-rede e não temos problemas de comunicação entre os diferentes servidores. Além disso, cada um desses servidores executa vários contêineres LXC baseados em libvirt, também baseados no CentOS 7.2. Os hosts podem se comunicar com seus contêineres sem problemas e os contêineres em um determinado servidor podem se comunicar uns com os outros. No entanto, contêineres hospedados em dois servidores diferentes não podem se comunicar entre si ou com outros servidores.

Quando duplicamos essa configuração em hardware real, não temos problemas de comunicação entre os contêineres. Da mesma forma, se duplicarmos a configuração usando VMs baseadas em KVM em vez de VMs do ESXi, tudo funcionará bem - não há problema na comunicação entre os contêineres, independentemente de qual VM os hospede

Em outro teste, configuramos uma instalação baseada na AWS com nossos contêineres em execução nas instâncias da AWS. Neste caso, encontramos o mesmo problema que atingimos no ESXi, no qual os contêineres em execução em hosts diferentes (instâncias do AWS) não podiam se comunicar entre si. Resolvemos o problema no AWS usando proxy arp. Especificamente, definimos as seguintes opções do CentOS em cada um dos nossos servidores:

echo 1 > /proc/sys/net/ipv4/conf/br0/forwarding
echo 1 > /proc/sys/net/ipv4/conf/br0/proxy_arp_pvlan
echo 1 > /proc/sys/net/ipv4/conf/br0/proxy_arp
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/br0/send_redirects

Com esses configurados, os contêineres em execução nas diversas instâncias do AWS podem se comunicar entre si sem problemas, independentemente de quem os hospeda. Infelizmente, tentamos o mesmo conjunto de opções em nossa instalação baseada no ESXi sem sucesso. A única solução encontrada é ativar o modo promíscuo no vSwitch que definimos em nosso ambiente vSphere. No entanto, essa não é uma solução ideal, pois isso significa que todo o tráfego, independentemente do local de origem, é permitido para hosts e contêineres. Isso não é ideal do ponto de vista da segurança.

Portanto, a questão é que esse problema pode ser resolvido com uma solução de proxy arp como usamos com a AWS, ou existe outra abordagem inteiramente? Como mencionei, nosso cluster baseado em KVM funciona sem a necessidade de proxy arp ou promiscuous mode, então talvez haja algo no ESXi que funcione de maneira semelhante ao KVM. Qualquer ajuda neste assunto seria muito apreciada.

Peter

    
por Peter Steele 02.02.2017 / 18:05

0 respostas