การรวมลิงค์ FreeBSD ไม่เร็วไปกว่าลิงค์เดียว


10

เราใส่ 4 พอร์ตIntel I340-T4 NIC ใน FreeBSD 9.3 เซิร์ฟเวอร์1และกำหนดค่าสำหรับการรวมลิงค์ในโหมด LACPในความพยายามที่จะลดเวลาที่ใช้ในการกระจก 8-16 TiB ข้อมูลจากไฟล์เซิร์ฟเวอร์หลักเพื่อ 2- 4 โคลนในแบบคู่ขนาน เราคาดหวังว่าจะได้รับแบนด์วิดธ์รวมสูงถึง 4 Gbit / วินาที แต่ไม่ว่าเราจะพยายามอะไรมันก็ไม่เคยออกมาเร็วกว่าการรวม 1 Gbit / วินาที 2

เรากำลังใช้iperf3เพื่อทดสอบสิ่งนี้บน LAN ที่เงียบสงบ 3อินสแตนซ์แรกเกือบจะได้รับกิกะบิตตามที่คาดไว้ แต่เมื่อเราเริ่มต้นครั้งที่สองแบบขนานไคลเอนต์ทั้งสองจะลดความเร็วลงเหลือประมาณ½ Gbit / วินาที การเพิ่มลูกค้ารายที่สามลดความเร็วของลูกค้าทั้งสามให้เป็น ~ ⅓ Gbit / วินาทีและอื่น ๆ

เราได้ดูแลการตั้งค่าการiperf3ทดสอบที่ทราฟฟิกจากไคลเอนต์ทดสอบทั้งสี่เข้าสู่สวิตช์ส่วนกลางในพอร์ตต่าง ๆ :

การตั้งค่าการทดสอบ LACP

เราได้ตรวจสอบแล้วว่าเครื่องทดสอบแต่ละเครื่องมีเส้นทางอิสระกลับไปที่แร็คสวิตช์และเซิร์ฟเวอร์ไฟล์ NIC และสวิตช์ทั้งหมดมีแบนด์วิดท์เพื่อดึงข้อมูลนี้โดยแยกlagg0กลุ่มและกำหนดที่อยู่ IP แยกต่างหากให้กับแต่ละเครื่อง ของสี่อินเตอร์เฟสในการ์ดเครือข่าย Intel นี้ ในการกำหนดค่านั้นเราได้แบนด์วิดท์รวมที่ ~ 4 Gbit / วินาที

เมื่อเราเริ่มต้นลงเส้นทางนี้เรากำลังทำเช่นนี้กับเก่าสวิทช์ SMC8024L2 การจัดการ (แผ่นข้อมูล PDF ขนาด 1.3 MB.) มันไม่ใช่สวิตช์ระดับสูงที่สุดของวัน แต่ควรจะทำเช่นนี้ได้ เราคิดว่าสวิตช์อาจผิดปกติเนื่องจากอายุของมัน แต่การอัพเกรดเป็นHP 2530-24G ที่มีความสามารถมากกว่านั้นไม่เปลี่ยนอาการ

สวิตช์ HP 2530-24G อ้างว่าสี่พอร์ตที่มีปัญหานั้นได้รับการกำหนดค่าให้เป็น LACP trunk แบบไดนามิก:

# show trunks
Load Balancing Method:  L3-based (default)

  Port | Name                             Type      | Group Type    
  ---- + -------------------------------- --------- + ----- --------
  1    | Bart trunk 1                     100/1000T | Dyn1  LACP    
  3    | Bart trunk 2                     100/1000T | Dyn1  LACP    
  5    | Bart trunk 3                     100/1000T | Dyn1  LACP    
  7    | Bart trunk 4                     100/1000T | Dyn1  LACP    

เราได้ลองใช้ LACP ทั้งแบบพาสซีฟและแอคทีฟแล้ว

เราได้ตรวจสอบแล้วว่าพอร์ต NIC ทั้งสี่พอร์ตได้รับปริมาณการใช้ข้อมูลในฝั่ง FreeBSD ด้วย:

$ sudo tshark -n -i igb$n

อย่างผิดปกติtsharkแสดงให้เห็นว่าในกรณีของลูกค้าเพียงคนเดียวสวิตช์จะแยกสตรีม 1 Gbit / วินาทีผ่านสองพอร์ต (ทั้งสวิตช์ SMC และ HP แสดงพฤติกรรมนี้)

เนื่องจากแบนด์วิดธ์รวมของลูกค้าจะมารวมกันในที่เดียว - ที่สวิตช์ในชั้นวางของเซิร์ฟเวอร์ - เท่านั้นที่มีการกำหนดค่าสวิตช์สำหรับ LACP

ไม่สำคัญว่าเราจะเริ่มลูกค้ารายใดก่อน

ifconfig lagg0 ทางฝั่ง FreeBSD พูดว่า:

lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
    ether 90:e2:ba:7b:0b:38
    inet 10.0.0.2 netmask 0xffffff00 broadcast 10.0.0.255
    inet6 fe80::92e2:baff:fe7b:b38%lagg0 prefixlen 64 scopeid 0xa 
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect
    status: active
    laggproto lacp lagghash l2,l3,l4
    laggport: igb3 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: igb2 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: igb1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
    laggport: igb0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>

เราได้ใช้คำแนะนำในคู่มือการปรับแต่งเครือข่าย FreeBSDให้เหมาะสมกับสถานการณ์ของเรา (ส่วนใหญ่ไม่เกี่ยวข้องเช่นสิ่งที่เกี่ยวกับการเพิ่ม max FDs)

เราได้ลองปิดการแบ่งส่วน TCP ออกโดยไม่มีการเปลี่ยนแปลงในผลลัพธ์

เราไม่มีเซิร์ฟเวอร์ 4 พอร์ตที่สอง NIC เพื่อตั้งค่าการทดสอบครั้งที่สอง เนื่องจากการทดสอบที่ประสบความสำเร็จด้วยส่วนต่อประสานที่แยกจากกัน 4 ตัวเราจึงดำเนินการสมมติว่าไม่มีฮาร์ดแวร์ใดเสียหาย 3

เราเห็นเส้นทางเหล่านี้ไปข้างหน้าไม่มีใครสนใจ:

  1. ซื้อสวิตช์ที่ใหญ่กว่าและแย่กว่าหวังว่าการติดตั้ง LACP ของ SMC จะแย่ลงและสวิตช์ใหม่จะดีขึ้น (การอัพเกรดเป็น HP 2530-24G ไม่ได้ช่วย)

  2. มองที่การlaggกำหนดค่าFreeBSD อีกหวังว่าเราจะพลาดบางสิ่ง 4

  3. ลืมการรวมลิงก์และใช้ round-robin DNS เพื่อให้เกิดความสมดุลในการโหลดแทน

  4. แทนที่เซิร์ฟเวอร์ NIC และสลับอีกครั้งคราวนี้ด้วย10 GigE stuff ที่ราคาฮาร์ดแวร์ประมาณ 4 เท่าของการทดลอง LACP นี้


เชิงอรรถ

  1. ทำไมไม่ย้ายไปที่ FreeBSD 10 คุณถาม? เนื่องจาก FreeBSD 10.0-RELEASE ยังคงใช้พูล ZFS เวอร์ชัน 28 และเซิร์ฟเวอร์นี้ได้รับการอัพเกรดเป็นพูล ZFS 5000 ซึ่งเป็นคุณสมบัติใหม่ใน FreeBSD 9.3 10 xบรรทัดจะไม่ได้รับว่าจนถึง FreeBSD 10.1 เรือประมาณเดือนด้วยเหตุนี้ และไม่ต้องสร้างใหม่จากแหล่งที่มาเพื่อเข้าสู่ขอบเลือดออก 10.0-STABLE ไม่ใช่ตัวเลือกเนื่องจากนี่เป็นเซิร์ฟเวอร์ที่ใช้งานจริง

  2. โปรดอย่าข้ามไปที่ข้อสรุป ผลการทดสอบของเราในคำถามจะบอกคุณว่าทำไมสิ่งนี้จึงไม่ซ้ำกับคำถามนี้

  3. iperf3เป็นการทดสอบเครือข่ายที่แท้จริง ในขณะที่เป้าหมายท้ายที่สุดคือการลองและเติมไปป์ที่รวม 4 Gbit / วินาทีจากดิสก์เรายังไม่ได้เกี่ยวข้องกับระบบย่อยของดิสก์

  4. Buggy หรือได้รับการออกแบบมาไม่ดีอาจจะ แต่ไม่มีอะไรแตกหักไปกว่าตอนที่มันออกจากโรงงาน

  5. ฉันไม่ได้ทำแบบนั้น


1
การคาดเดาเบื้องต้นของฉันอาจเป็นสิ่งที่เกี่ยวข้องกับอัลกอริทึมการแปลงแป้นพิมพ์ที่ใช้ แต่จะต้องปิดการตรวจสอบแพ็คเก็ต หากวิธีนี้ไม่ได้ผลให้ลองเปลี่ยนหน้าต่าง TCP ของ iperf เป็นอะไรที่ใหญ่กว่า หน้า man lagg (4) มีบางอย่างเกี่ยวกับการปิดใช้งานการถ่ายแฮชคุณอาจต้องการลองใช้
Giovanni Tirloni

คำตอบ:


2

อัลกอริธึมการปรับสมดุลโหลดที่ใช้บนทั้งระบบและสวิตช์คืออะไร?

ประสบการณ์ทั้งหมดของฉันเกี่ยวกับสิ่งนี้คือบน Linux และ Cisco ไม่ใช่ FreeBSD และ SMC แต่ยังคงใช้ทฤษฎีเดียวกัน

โหมดโหลดบาลานซ์เริ่มต้นบนโหมด LACP ของไดรเวอร์การเชื่อม Linux และสวิตช์ Cisco รุ่นเก่าเช่น 2950 นั้นจะทำการปรับสมดุลตามที่อยู่ MAC เท่านั้น

ซึ่งหมายความว่าหากทราฟฟิกทั้งหมดของคุณไปจากระบบหนึ่ง (ไฟล์เซิร์ฟเวอร์) ไปยัง MAC อื่น ๆ (ทั้งเกตเวย์เริ่มต้นหรือ Switched Virtual Interface บนสวิตช์) ดังนั้น MAC ต้นทางและปลายทางจะเหมือนกันดังนั้นทาสเพียงคนเดียวจะเคย นำมาใช้

จากไดอะแกรมของคุณดูเหมือนว่าคุณกำลังส่งทราฟฟิกไปยังเกตเวย์เริ่มต้น แต่ฉันไม่แน่ใจว่าเซิร์ฟเวอร์ทดสอบนั้นอยู่ใน 10.0.0.0/24 หรือว่าระบบทดสอบนั้นอยู่ในเครือข่ายย่อยอื่นและถูกกำหนดเส้นทางผ่าน อินเตอร์เฟส Layer 3 บนสวิตช์

หากคุณกำลังกำหนดเส้นทางบนสวิตช์มีคำตอบของคุณ

วิธีแก้ปัญหานี้คือการใช้อัลกอริธึมการปรับสมดุลโหลดอื่น

อีกครั้งฉันไม่มีประสบการณ์กับ BSD หรือ SMC แต่ Linux และ Cisco สามารถสร้างความสมดุลได้ทั้งข้อมูล L3 (ที่อยู่ IP) หรือข้อมูล L4 (หมายเลขพอร์ต)

เนื่องจากระบบทดสอบแต่ละระบบของคุณต้องมี IP ที่แตกต่างกันให้ลองทำสมดุลตามข้อมูล L3 หากยังไม่ได้ผลให้เปลี่ยน IP สักสองสามรอบแล้วดูว่าคุณเปลี่ยนรูปแบบการทำโหลดบาลานซ์หรือไม่


ขอบคุณ แต่เดาของคุณไม่ถูกต้อง การกำหนดค่าสวิตช์ของ HP ที่แสดงด้านบนระบุว่ากำลังทำการปรับสมดุล L3 นอกจากนี้สิ่งเหล่านี้ไม่ใช่ L3 "สวิตช์" เราเตอร์ที่รู้จัก พวกเขามีสมาร์ทโฟน L3 เพียงพอที่จะทำการสอดแนม IGMP และ LACP เราเตอร์ที่แท้จริงเพียงตัวเดียวในอาคารคือตัวหนึ่งในเกตเวย์อินเทอร์เน็ตซึ่งปิดที่ขาข้างจากมุมมองของแผนภาพทดสอบด้านบน
Warren Young

ไม่สำคัญว่านี่จะเป็นสวิตช์ L2 หรือ L3 นี่คือการกำหนดค่าที่พันธะใช้ในการโหลดบาลานซ์ซึ่งเป็นสิ่งที่แตกต่าง สวิตช์เองอาจไม่มีสมาร์ทที่จะกำหนดเส้นทางระหว่าง VLAN หรือเพื่อควบคุมปริมาณการใช้งานที่นอกเหนือจาก L2 แต่อัลกอริทึมการปรับสมดุลภาระของพันธะ (อาจ) สามารถ
suprjami

Load Balancing Method: L3-based (default)ผมดูด้านบนสวิทช์ของคุณว่า ลองเปลี่ยนสิ่งนี้
suprjami
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.