ฉันมีคลัสเตอร์ฝูงนักเทียบท่าที่มี 12 โหนด คอนเทนเนอร์ที่ใช้งานบนโหนดเดียวสามารถเข้าถึงกันได้ดีผ่านเครือข่ายโอเวอร์เลย์ แต่เมื่อมีการปรับใช้บนโหนดที่แตกต่างกัน จะมีปัญหาในการเชื่อมต่อ: ชื่อโฮสต์ได้รับการแก้ไขแล้ว และฉันสามารถ ping คอนเทนเนอร์หนึ่งจากอีกคอนเทนเนอร์หนึ่งได้ แต่เมื่อฉันพยายามเข้าถึงคอนเทนเนอร์อื่นผ่าน tcp ( ตัวอย่างเช่นกับ telnet) ฉันรอนานและหมดเวลาการเชื่อมต่อ
ไฟร์วอลล์ในแต่ละโหนดได้รับการตั้งค่าแล้วสำหรับ docker swarm โดยเปิดพอร์ต 2377, 7946 และ 4789
ตัวอย่าง:
บนโหนดหลักของฉัน ฉันรันคำสั่งนี้เพื่อสร้างบริการที่กำหนดเวลาไว้สำหรับโหนดต่างๆ:
เครือข่ายนักเทียบท่าสร้าง -d ซ้อนทับ test_net
บริการนักเทียบท่าสร้าง --constraint node.labels.first==true --name first --network test_net ubuntu/nginx:1.18-20.04_beta
บริการนักเทียบท่าสร้าง --constraint node.labels.second==true --name second --network test_net ubuntu/nginx:1.18-20.04_beta
จากนั้นฉันก็เรียกใช้จากคอนเทนเนอร์ก่อน:
root@37be801ebe8b:/# ปิงวินาที
PING วินาที (10.0.5.18): 56 ไบต์ข้อมูล
64 ไบต์จาก 10.0.5.18: icmp_seq=0 ttl=64 เวลา=0.092 ms
64 ไบต์จาก 10.0.5.18: icmp_seq=1 ttl=64 เวลา=0.067 ms
64 ไบต์จาก 10.0.5.18: icmp_seq=2 ttl=64 เวลา=0.083 ms
64 ไบต์จาก 10.0.5.18: icmp_seq=3 ttl=64 เวลา=0.073 ms
^C--- สถิติการ ping ครั้งที่สอง ---
ส่ง 4 แพ็กเก็ต ได้รับ 4 แพ็กเก็ต การสูญเสียแพ็กเก็ต 0%
ไป-กลับ min/avg/max/stddev = 0.067/0.079/0.092/0.000 ms
แต่เมื่อฉันพยายามเชื่อมต่อโหนดอื่นกับ telnet (มี nginx ในคอนเทนเนอร์นี้ที่ฟังพอร์ต 80):
root@37be801ebe8b:/# telnet วินาทีที่ 80
ลอง 10.0.5.18...
telnet: ไม่สามารถเชื่อมต่อกับโฮสต์ระยะไกล: การเชื่อมต่อหมดเวลา
มีคนแนะนำวิธีแก้ไขปัญหานี้ได้ไหม