การใช้เครือข่ายทางกายภาพส่วนตัวด้วยโหมด Docker Swarm


11

ฉันกำลังทำงานกับการตั้งค่าการผลิตด้วย Docker ในโหมดจับกลุ่ม (ใช้ Docker 17.03.1-ce) จะมีศูนย์ข้อมูล 2 แห่งที่เกี่ยวข้อง ในศูนย์ข้อมูลทั้งสองเครื่องทุกเครื่องมี IP สาธารณะและ IP ส่วนตัว (ภายในศูนย์ข้อมูล) บนเครือข่ายส่วนตัวดังนั้นจะมี 2 เครือข่ายส่วนตัว

ลิงก์ไปยังการตั้งค่าการแสดงแผนภาพอย่างง่าย

การรับส่งข้อมูลเครือข่ายผ่านอินเทอร์เฟซเครือข่ายส่วนตัวไม่เสียค่าใช้จ่ายในขณะที่การรับส่งข้อมูลผ่านส่วนต่อประสานสาธารณะไม่ได้อยู่ในขีด จำกัด (และช้าลง) ดังนั้นถ้าเป็นไปได้

ตอนนี้จากสิ่งที่ฉันเข้าใจ (ฉันคิดว่า) การรับส่งข้อมูลทั้งหมดระหว่างโหนดนักเทียบท่าในโหมดจับกลุ่มจะต้องผ่านอินเตอร์เฟซเครือข่ายเดียวกับที่ใช้สำหรับการสื่อสารกับผู้ชำนาญการจับกลุ่มซึ่งในกรณีของฉันจะต้องเป็นสาธารณะ เป็นไปได้ ทราฟฟิกส่วนใหญ่คาดว่าจะอยู่ระหว่างโหนดใน DC เดียวกันและมันจะดีมากถ้านักเทียบท่าสามารถกำหนดเส้นทางทราฟฟิกผ่านเครือข่ายส่วนตัวของฉันถ้าโหนดต้นทางและโหนดเป้าหมายเกิดขึ้นบนเครือข่ายส่วนตัวเดียวกัน

ฉันเกรงว่าสิ่งนี้อาจไม่สามารถทำได้นอกกรอบเพราะผู้ชำนาญการไม่รู้เรื่องเครือข่ายส่วนตัวเหล่านี้และ IP ที่โหนดมีอยู่

ทางออกหนึ่งที่ฉันคิดได้ก็คือการตั้งค่า VPN และปรับใช้ฝูงที่ด้านบนของสิ่งนั้น แต่มันเพิ่มความซับซ้อนมากขึ้นและฉันต้องการโซลูชัน Docker Swarm ที่แท้จริง


อัปเดต : ตามที่แนะนำในความคิดเห็นพื้นฐานสำหรับการแก้ปัญหาอาจใช้ iptables เพื่อกำหนดเส้นทางทราฟฟิกขาออกไปยัง IP ส่วนตัวแทนที่จะเป็นสาธารณะ อย่างไรก็ตามหากฉันต้องการทำสิ่งนี้ปัญหาต่อไปของฉันคือวิธีจัดการกฎเหล่านี้ทั้งหมด ด้วย 10 เซิร์ฟเวอร์ใน DC ฉันต้องการ 10 * 9 = 90 เซิร์ฟเวอร์เพื่อกำหนดเส้นทางทราฟฟิกที่เป็นไปได้ทั้งหมดบนเครือข่ายส่วนตัว ฉันนึกภาพได้ว่ามีเครื่องมือบางอย่างที่สามารถช่วยงานนี้ได้หรือฉันอาจสร้างเครื่องมือขึ้นมา แต่อาจจะมีวิธีที่ง่ายกว่านี้มาก


1
คุณสามารถใช้ iptables เพื่อเขียน ip ปลายทางของพี่น้องในดาต้าเซ็นเตอร์เดียวกันกับ IP เครือข่ายส่วนตัวของพวกเขา นอกจากนี้ควรอยู่ใน serverfault ไม่ใช่ SO;)
n00b32

ใช่การขุดมากกว่านี้ทำให้ฉันได้ข้อสรุปเดียวกัน นั่นจะเป็นเรื่องยุ่งยาก แต่ฉันต้องการเครื่องมือที่จะทำเพื่อฉันโดยอัตโนมัติ (เขียน IP ทั้งหมดระหว่างโหนดทั้งหมดในคลัสเตอร์ / DC) ท้ายที่สุดสำหรับ N nodes ฉันต้องการ (N-1) ^ 2 iptables กฎ

คำตอบ:


1

(อาจเป็นความคิดเห็น แต่ยังไม่สามารถแสดงความคิดเห็นได้)

เนื่องจากคุณไม่สามารถใช้ชื่อโฮสต์และ / หรือ DNS ในการบูตกลุ่มได้ฉันไม่เห็นวิธีการบังคับใช้ข้อมูลแพแลกเปลี่ยนของคลัสเตอร์บนเครือข่ายที่ไม่มีการตรวจสอบที่ถูกต้อง แต่ฉันเห็นว่าคุณสามารถใช้ชื่ออินเตอร์เฟสได้ อยากรู้อยากเห็นมันไม่ได้ระบุไว้ในเอกสารประกอบฝูงแต่ปัญหาแสดงข้อความข้อผิดพลาดคาดว่า IP หรืออินเตอร์เฟซ

ฉันสงสัยว่าคุณสามารถตั้งค่าสมาชิกคลัสเตอร์ให้โฆษณาโดยใช้ชื่ออินเทอร์เฟซส่วนตัวเพื่อให้คุณได้รับปริมาณการใช้งานมากที่สุดในแบบที่คุณต้องการหรือไม่

ไม่สามารถทดสอบตัวเองได้ในขณะนี้ แต่จะทำในสัปดาห์หน้าเนื่องจากฉันอาจพบปัญหาที่คล้ายกันสำหรับโครงการที่กำลังจะมาถึง


ขอบคุณโปรดแจ้งให้เราทราบหากคุณพบสิ่งใดในสัปดาห์หน้า ปัญหาที่คุณเชื่อมโยงนั้นเป็นเรื่องเกี่ยวกับฟังก์ชั่น 'Docker Swarm' ในขณะที่ฉันกำลังใช้ (และแนะนำให้คุณใช้) โหมด Swarm ของ Docker ใหม่ที่มีอยู่แล้วภายในและไม่จำเป็นต้องมีที่เก็บคีย์ / ค่าภายนอก
Ede
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.