Am un grup de docker roi cu 12 noduri. Containerele implementate pe un singur nod pot ajunge unul la celălalt prin intermediul rețelei de suprapunere, dar atunci când sunt implementate pe noduri diferite, există o problemă de conectivitate: numele de gazdă sunt rezolvate și pot trimite ping la un container de la altul, dar când încerc să ajung la alt container prin tcp ( de exemplu, cu telnet) am o așteptare lungă și apoi expirarea conexiunii.
Firewall-ul de pe fiecare nod este deja configurat pentru docker roi, cu porturile 2377, 7946 și 4789 deschise.
Exemplu:
Pe nodul meu principal am rulat aceste comenzi pentru a crea servicii programate pentru diferite noduri:
docker network create -d overlay test_net
docker service create --constraint node.labels.first==true --name first --network test_net ubuntu/nginx:1.18-20.04_beta
docker service create --constraint node.labels.second==true --name second --network test_net ubuntu/nginx:1.18-20.04_beta
Apoi din container mai întâi rulez:
root@37be801ebe8b:/# secundă ping
PING secundă (10.0.5.18): 56 de octeți de date
64 de octeți din 10.0.5.18: icmp_seq=0 ttl=64 time=0,092 ms
64 de octeți din 10.0.5.18: icmp_seq=1 ttl=64 time=0,067 ms
64 de octeți din 10.0.5.18: icmp_seq=2 ttl=64 time=0,083 ms
64 de octeți din 10.0.5.18: icmp_seq=3 ttl=64 time=0,073 ms
^C--- a doua statistică ping ---
4 pachete transmise, 4 pachete primite, 0% pierdere de pachete
dus-întors min/avg/max/stddev = 0,067/0,079/0,092/0,000 ms
Dar apoi, când încerc să conectez alt nod cu telnet (există nginx în acest container care ascultă pe portul 80):
root@37be801ebe8b:/# telnet secunda 80
Încercând 10.0.5.18...
telnet: Imposibil de conectat la gazda de la distanță: Conexiunea a expirat
Poate cineva să sugereze o soluție pentru această problemă?