Utilizzo di reti fisiche private con la modalità sciame Docker


11

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.

Collegamento al diagramma semplificato che visualizza la configurazione

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.


1
È possibile utilizzare iptables per riscrivere l'ip di destinazione dei fratelli nello stesso datacenter sui propri IP di rete privata. Inoltre, questo dovrebbe essere su serverfault non SO;)
n00b32

Sì, qualche altro scavo mi ha portato alla stessa conclusione. Sarà comunque una seccatura, avrei davvero bisogno di uno strumento per farlo automaticamente per me (riscrivere tutti gli IP tra tutti i nodi in un cluster / DC). Dopotutto, per N nodi avrei bisogno di (N-1) ^ 2 regole iptables.

Risposte:


1

(Probabilmente dovrebbe essere un commento, ma non posso ancora commentare)

Poiché non è possibile utilizzare nomi host e / o DNS per avviare il cluster, non vedo alcun modo per forzare lo scambio di dati della zattera del cluster sulla rete corretta non misurata, ma vedo che è possibile utilizzare un nome di interfaccia. Curiosamente, non è indicato nei documenti dello sciame ma un problema mostra che il messaggio di errore prevede un IP o un'interfaccia.

Mi chiedo se è possibile impostare i membri del cluster in modo che facciano pubblicità utilizzando il nome dell'interfaccia privata, in modo da ottenere la maggior parte del traffico nel modo desiderato.

Non posso mettermi alla prova in questo momento, ma la prossima settimana potrei imbattermi in un problema simile per un progetto imminente.


Grazie, per favore fatemi sapere se scoprirete qualcosa la prossima settimana. Il problema a cui ti sei collegato riguarda la "vecchia" funzionalità dello sciame Docker, mentre sto usando (e ti consiglierei di usare) la nuova modalità sciame Docker che è integrata e non richiede un archivio di chiavi / valori esterno.
Ede,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.