Sto lavorando a una configurazione di produzione con Docker in modalità sciame (usando Docker 17.03.1-ce). Saranno coinvolti 2 data center. In entrambi i data center, tutte le macchine hanno sia un IP pubblico che un IP privato (da locale a data center) su una rete privata, quindi ci saranno 2 reti private.
Il traffico di rete sulle interfacce di rete private è gratuito, mentre il traffico sull'interfaccia pubblica non ha un certo limite (ed è più lento), quindi dove possibile preferirei che il traffico di rete passasse attraverso le interfacce private.
Ora da quello che ho capito (penso), tutto il traffico tra i nodi Docker in modalità sciame passerà attraverso la stessa interfaccia di rete utilizzata per comunicare con i padroni dello sciame, che nel mio caso dovranno essere quelli pubblici per creare reti multi DC possibile. Il traffico più atteso sarà tuttavia tra i nodi negli stessi controller di dominio, e sarebbe molto bello se Docker potesse in qualche modo instradare il traffico attraverso le mie reti private se i nodi di origine e di destinazione si trovavano sulla stessa rete privata.
Temo che questo potrebbe non essere possibile perché gli sciamani non conoscono queste reti private e gli IP che i nodi hanno su di esse.
Una soluzione che mi viene in mente è quella di impostare una VPN e distribuire lo sciame in aggiunta, ma questo aggiunge ulteriore complessità e preferirei una soluzione sciami Docker pura.
Aggiornamento : come suggerito in un commento, la base di una soluzione potrebbe essere l'utilizzo di iptables per indirizzare il traffico in uscita verso IP privati anziché pubblici. Tuttavia, se volessi farlo, il mio prossimo problema sarebbe come gestire tutte queste regole. Con 10 server in un controller di dominio, avrei bisogno di 10 * 9 = 90 di essi per instradare tutto il traffico locale possibile sulla rete privata. Posso immaginare che forse esiste uno strumento che potrebbe aiutare in tale compito o che potrei crearne uno, ma forse c'è un modo molto più semplice per farlo.