J'ai un groupe de serveurs CentOS 7.2 s'exécutant en tant que VM sous ESXi 6.0 de VMware. Ceux-ci résident tous sur le même sous-réseau et nous n'avons aucun problème à communiquer entre les différents serveurs. En outre, chacun de ces serveurs exécute un certain nombre de conteneurs LXC basés sur libvirt, également basés sur CentOS 7.2. Les hôtes peuvent communiquer avec leurs conteneurs sans problème et les conteneurs d'un serveur donné peuvent communiquer les uns avec les autres. Cependant, les conteneurs hébergés sur deux serveurs différents ne peuvent pas communiquer entre eux ni avec d'autres serveurs.

Lorsque nous dupliquons cette configuration sur du matériel réel, nous n’avons aucun problème de communication entre les conteneurs. De même, si nous dupliquons la configuration à l'aide de machines virtuelles basées sur KVM au lieu de machines virtuelles ESXi, tout fonctionne correctement - la communication entre les conteneurs ne pose aucun problème, peu importe la machine virtuelle qui les héberge.

Dans un autre test, nous avons configuré une installation AWS avec nos conteneurs s'exécutant sous des instances AWS. Dans ce cas, nous avons rencontré le même problème que nous rencontrions avec ESXi, dans lequel les conteneurs s'exécutant sur des hôtes différents (instances AWS) ne pouvaient pas communiquer entre eux. Nous avons résolu le problème dans AWS en utilisant un proxy arp. Plus précisément, nous définissons les options CentOS suivantes sur chacun de nos serveurs:

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

Avec ces éléments configurés, les conteneurs exécutés sous les différentes instances AWS peuvent communiquer entre eux sans problème, quel que soit leur hébergeur. Malheureusement, nous avons essayé sans succès le même ensemble d’options sur notre configuration ESXi. La seule solution que nous avons trouvée consiste à activer le mode promiscuous sur le vSwitch que nous avons défini dans notre environnement vSphere. Cependant, ce n'est pas une solution idéale car cela signifie que tout le trafic, quel que soit son origine, est autorisé vers les hôtes et les conteneurs. Ce n'est pas idéal du point de vue de la sécurité.

La question est donc de savoir si ce problème peut être résolu avec une solution proxy arp comme celle utilisée avec AWS, ou existe-t-il une autre approche? Comme je l'ai mentionné, notre cluster basé sur KVM fonctionne sans recourir à un arp proxy ou à un mode proche, de sorte qu'il existe peut-être quelque chose dans ESXi qui fonctionnerait de la même manière que KVM. Toute aide dans ce domaine serait très appréciée.

Peter

Peter Steele
la source