Score:1

การใช้ IP หลายตัวแบบ Round robin สำหรับการเชื่อมต่อขาออกบนอินเทอร์เฟซเดียว

ธง us

ปัญหาของฉัน: ฉันมีกระบวนการสร้างการเชื่อมต่อ TCP มากกว่า 10k ไปยัง IP&พอร์ตปลายทางเดียวกันต่อวินาที หลังจากช่วงเวลาสั้นๆ จะไม่สามารถสร้างการเชื่อมต่อใหม่ได้อีก เนื่องจากไม่มีพอร์ตต้นทางอีกต่อไป

ฉันพยายามลดปัญหานี้แล้วโดยการตั้งค่า net.ipv4.ip_local_port_range และ net.ipv4.tcp_fin_timeout แต่มันไม่ได้แก้ปัญหา

ตอนนี้ความคิดของฉันคือ: ถ้าฉันสามารถบอกเคอร์เนลถึงที่อยู่ IP ต้นทางแบบ Round robin ฉันจะสามารถเพิ่ม IP ลงในอินเทอร์เฟซเดียวของฉันได้อย่างง่ายดาย และทำให้มีขีดจำกัดการเชื่อมต่อขาออกที่สูงขึ้น

ฉันพยายามเพิ่มหลายเส้นทางไปยังปลายทางเดียวกันผ่านอินเทอร์เฟซเดียวกัน แต่ระบุ IP ต้นทางที่แตกต่างกัน:

เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 10.1.1.1 dev eth0 src 10.1.1.10
เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 10.1.1.1 dev eth0 src 10.1.1.11

แต่ฉันได้รับ คำตอบ RTNETLINK: มีไฟล์อยู่.

ฉันมาถูกทางแล้วหรือนี่ การเพิ่ม IP ต้นทางอื่น "เป็นไปได้" ในกรณีเหล่านั้นหรือไม่

มีวิธีการปัดเศษโรบิน / โหลดบาลานซ์การใช้ IP ต้นทางผ่านเคอร์เนลหรือไม่?

ความหวังของฉันคือ ถ้าฉันจัดเส้นทางสองเส้นทางที่มีน้ำหนักเท่ากันแต่มีที่อยู่ src ต่างกันไปยังเครือข่ายเดียวกันได้ เคอร์เนลจะปัดเศษนั้นทิ้ง

(ความเป็นมา: ฉันใช้ HAproxy บนเครื่องนั้นและต้องโหลดบาลานซ์มากกว่า 10k การเชื่อมต่อไปยังเซิร์ฟเวอร์แบ็คเอนด์เครื่องเดียว)

Score:3
ธง iq

ไม่ง่ายผ่านเคอร์เนล ไม่

ฉันใช้ HAproxy บนเครื่องนั้นและต้องโหลดบาลานซ์มากกว่า 10k การเชื่อมต่อไปยังเซิร์ฟเวอร์แบ็คเอนด์เครื่องเดียว

คุณสามารถบอก haproxy ให้ใช้ที่อยู่ IP ต้นทางเฉพาะสำหรับการเชื่อมต่อขาออกไปยังเซิร์ฟเวอร์ เช่น:

  เซิร์ฟเวอร์ app1_s1 10.0.1.1:80 ที่มา 10.1.1.10
  เซิร์ฟเวอร์ app1_s2 10.0.1.1:80 ที่มา 10.1.1.11
  เซิร์ฟเวอร์ app2_s1 10.0.1.2:80 ที่มา 10.1.1.10
  เซิร์ฟเวอร์ app2_s2 10.0.1.2:80 ที่มา 10.1.1.11
us flag
อย่างน้อยนั่นจะป้องกันปัญหาของฉัน ดังนั้นขอบคุณมากสำหรับตอนนี้ :) ความหวังของฉันคือการปล่อยให้เคอร์เนลจัดการสิ่งนั้น แต่ถ้าเป็นไปไม่ได้ ฉันก็จะจัดการตามนั้น เมื่อคุณพูดว่า "ไม่ง่ายผ่านเคอร์เนล ไม่" มันหมายความว่าไม่มีวิธีง่ายๆ หรือหมายความว่าไม่มีทางเลยจริงๆ ฉันไม่ชอบความจริงที่ว่าฉันต้องกำหนดเซิร์ฟเวอร์แบ็คเอนด์ทุกตัวสองครั้ง แต่ฉันจะแก้ไขปัญหานี้ต่อ HAProxy และวางคำขอคุณสมบัติเพื่อเพิ่ม IP ต้นทางมากกว่าหนึ่งรายการให้กับบรรทัดเซิร์ฟเวอร์เดียว / ไปยังบล็อกการกำหนดค่าแบ็คเอนด์หนึ่งบล็อก
iq flag
นั่นคือสิ่งที่ฉันคิดถึงและมีอยู่ในผลิตภัณฑ์อื่น - ความสามารถในการระบุที่อยู่หลายรายการหรือช่วงของที่อยู่เพื่อใช้ที่นี่แทนที่อยู่เดียว
Score:2
ธง za

คุณยังไม่ net.ipv4.ip_local_port_range ควรจะเพียงพอแม้กับการตั้งค่าเริ่มต้น ดังนั้นฉันพนันได้เลยว่าคุณมีการเชื่อมต่อมากกว่า 10K หรือคุณวินิจฉัยผิด

เห็นไหมว่า "ipsrc:พอร์ต ipdst:พอร์ต" ควอดรูเพลตไม่ซ้ำกันในสแต็ก IP ของเครื่อง และเนื่องจากจำนวนพอร์ตทั้งหมดในสแต็กเครือข่ายคือ 65536 สิ่งนี้ทำให้คุณมีความเป็นไปได้ที่จะมีการเชื่อมต่อ 65536 ตามทฤษฎี โอเค เราลบบล็อก WKS (-1024) แต่นี่ก็ยังให้การเชื่อมต่อ 55536 แก่คุณด้วยการดัดแปลง net.ipv4.ip_local_port_range. คุณต้องใช้ IP/อินเทอร์เฟซเพิ่มเติมเฉพาะในกรณีที่คุณต้องการมากกว่านั้น

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

us flag
ฉันมีการเชื่อมต่อใหม่ 10,000 ครั้งต่อวินาที และมันก็ค่อนข้างสั้น แต่: เมื่อการเชื่อมต่อถูกปิด (เท่าที่ฉันเข้าใจ) พวกเขาจะเข้าสู่สถานะ TIME_WAIT ดังนั้นจึงไม่สามารถใช้งานได้เป็นเวลา 60 วินาที และนั่นเป็นเหตุผลที่ฉันดูเหมือนจะใช้ `net.ipv4.ip_local_port_range` ที่ปรับแต่งแล้วจนหมดสิ้น :/ เซิร์ฟเวอร์ไม่ได้อยู่ในสแต็กของฉัน ดังนั้นการปรับจึงไม่มีทางเลือกสำหรับฉัน นั่นเป็นเหตุผลที่ฉันต้องการใช้ตัวเลือกในการใช้ที่อยู่ IPv4 หลายที่อยู่บนอินเทอร์เฟซเดียวกัน และให้โหลดเคอร์เนลสมดุลระหว่างที่อยู่เหล่านั้น
drookie avatar
za flag
จำนวนการเชื่อมต่อทั้งหมดมีความสำคัญ ไม่ใช่แค่การเชื่อมต่อที่จัดตั้งขึ้นเท่านั้น การเชื่อมต่อคือการเชื่อมต่อโดยไม่คำนึงถึงสถานะของมัน
us flag
ใช่ ฉันรู้เรื่องนั้นดี และเนื่องจากจำนวนการเชื่อมต่อเกินพอร์ตที่มีอยู่ แม้ว่าหลังจากปรับ `net.ipv4.ip_local_port_range แล้ว' ฉันกำลังมองหาวิธีที่จะทำให้เคอร์เนลสมดุลระหว่าง IP ต้นทางหลายรายการบนอินเทอร์เฟซเดียว (เนื่องจากฉันไม่สามารถแก้ไขอะไรในฝั่งเซิร์ฟเวอร์ได้) เฉพาะในกรณีที่เคอร์เนลไม่สามารถทำเช่นนั้นได้ ฉันจะใช้ตัวเลือกอื่นในการให้ HAProxy จัดการ IP ต้นทางหลายตัว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา