โหลดบาลานซ์ของเลเยอร์ 4 กับเลเยอร์ 7


21

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

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

เนื่องจากเป็นเพียง HTTP ฉันจึงสามารถใช้โซลูชันการปรับสมดุลโหลดเลเยอร์ 7 เช่น HAProxy หรือ nginx แต่ฉันยังสามารถใช้โครงการ LVS กับ ldirectord หรือ keepalived หรืออะไรก็ได้

ฉันพยายามที่จะเลิกข้อดีและข้อเสียตามที่เห็นพวกเขา แต่มันก็จบลงด้วยการล้าง คุณจะแนะนำอะไรและทำไม ฉันพลาดอะไรไปรึเปล่า?

คำตอบ:


17

ประโยชน์ที่เป็นประโยชน์อย่างหนึ่งของ "L7" เช่น haproxy คือการสามารถใช้คุกกี้เพื่อให้เบราว์เซอร์เดิมชนเซิร์ฟเวอร์แบ็กเอนด์เดียวกัน สิ่งนี้ทำให้ไคลเอนต์การดีบักเข้าถึงได้ง่ายขึ้นมาก

การทรงตัว L4 อาจเด้งผู้ใช้คนเดียวในเซิร์ฟเวอร์แบ็กเอนด์หลายตัว (ซึ่งในบางกรณีอาจมีข้อได้เปรียบ แต่ในการดีบั๊ก / การทำโปรไฟล์การใช้ "L7" มีค่ามากกว่า)

แก้ไข: นอกจากนี้ยังมีข้อได้เปรียบด้านความเร็วที่อาจเกิดขึ้นจากการใช้การปรับสมดุล HTTP ด้วยไคลเอนต์ Keep-Alives สามารถสร้างเซสชัน TCP เดียวให้กับ balancer ของคุณแล้วส่ง HITs จำนวนมากโดยไม่จำเป็นต้องสร้างเซสชัน TCP ใหม่อีกครั้ง (handshake 3-way) ในทำนองเดียวกัน LBs จำนวนมากยังคงรักษาเซสชันที่ยังมีชีวิตอยู่เพื่อระบบแบ็คเอนด์เอาความจำเป็นในการจับมือกันที่แบ็คเอนด์

การทำโหลดบาลานซ์ที่เข้มงวดอาจไม่สามารถทำได้ทั้งสองอย่างเช่น

/ * FWIW: ฉันจะไม่พูดว่า "L7" หรือ "L4" ฉันจะพูด HTTP หรือ TCP แต่ฉันเป็นคนที่หลีกเลี่ยงการใช้ OSI เพื่ออธิบายสิ่งต่าง ๆ ที่มันไม่เข้ากันได้ดี * /

ฉันคิดว่าพื้นฐานถ้าคุณไม่แน่ใจว่าจะติดตั้งอะไรให้ไปกับสิ่งที่รู้สึกง่ายและเป็นธรรมชาติสำหรับคุณ ทดสอบ (ใช้ apache bench?) และตรวจสอบให้แน่ใจว่าเหมาะกับความต้องการของคุณ สำหรับฉัน HTTP LB นั้นเป็นธรรมชาติมากขึ้น


Stickiness, cookie หรือ IP based เป็นข้อได้เปรียบอย่างแน่นอนจากการสลับ L7 แต่ไม่ใช่ว่าแอปพลิเคชันของเราจะสามารถใช้ประโยชน์ได้เป็นพิเศษ
Scrivener

ข้อเสียของการปรับสมดุลโหลดระดับ HTTP จะไม่ใช่ข้อเดียวหรือไม่ว่าคุณจะต้องมีตัวโหลดบาลานซ์ระดับ TCP หน้า HTTP balancer เพื่อเปิดใช้งานการเฟลโอเวอร์ระหว่างทั้งสอง
Scrivener

@Scrivener - คุณไม่ควรไม่ round-robin DNS สามารถดูแลสิ่งที่ฉันเชื่อได้เว้นแต่ว่าฉันเข้าใจผิดคำถามของคุณ
mfinni

@mfinni: DNS ทางภูมิศาสตร์ทั่วโลกจะสามารถชี้ไปที่หนึ่ง IP ต่อดาต้าเซ็นเตอร์ ฉันต้องการบางสิ่งเพื่อตอบสนองต่อ IP นั้น
Scrivener

ฉันเห็น. ขึ้นอยู่กับความสามารถของอุปกรณ์ของคุณ คุณอาจพบอุปกรณ์ที่มีคุณสมบัติ L7 ที่สามารถทำงานเป็นคู่กับวีไอพีคลัสเตอร์เดียวที่ไม่ต้องใช้โหลด TCP / IP ของฮาร์ดแวร์ ถ้า IIS และ MS Windows NLB สามารถทำได้ฉันคิดว่าผลิตภัณฑ์เชิงพาณิชย์อื่น ๆ ส่วนใหญ่สามารถทำได้
mfinni

4

เนื่องจากขาดความได้เปรียบจากการทำ L7 ฉันจึงตัดสินใจใช้ L4 แทน ฉันเป็นแฟนตัวยงของการทำให้มันง่ายที่สุดเท่าที่จะทำได้โดยไม่ต้องเสียสละมากเกินไป

L7 กำหนดให้ผู้ใช้ balancer ตรวจสอบส่วนหัว http ในแพ็คเก็ตที่จะผ่านเพื่อกำหนดเส้นทางที่เหมาะสมเพิ่มค่าใช้จ่ายเพิ่มเติมและเพิ่มระยะเวลาแฝงสำหรับผู้ใช้ปลายทาง ดูเหมือนว่าฉันจะไม่มีค่าใช้จ่ายใด ๆ


0

ผู้ให้บริการ DNS บางรายมีฟังก์ชั่นการทำงานล้มเหลวอย่างง่าย คุณได้กล่าวถึงสิ่งที่ต้องการของคุณจะไม่ได้และไม่สิ่งที่พวกเขามี แต่ถ้าสิ่งที่คุณต้องการคือโรบินกลมที่มีบางสิ่งบางอย่างล้มเหลวถ้าลงแล้วคุณสามารถใช้เช่นzoneedit.com ของ Failover ทั้งนี้ขึ้นอยู่กับความต้องการ HA ของคุณที่อาจดีพอและคุณต้องข้ามระดับทั้งหมดในสถาปัตยกรรมของคุณ


ฉันหวังว่ามันง่ายมาก - เราต้องการอะไรมากกว่านี้เช่น round-robin ที่ล้มเหลวรวมถึงการแยกทางภูมิศาสตร์ ทั้งหมดนี้ไม่ได้อยู่ในคำถามอย่างไรก็ตามเพราะมันถูกทำโดย บริษัท ภายนอก
Scrivener

คุณหมายถึงอะไร - ฉันเดาว่าฉันหมายถึง DNS ที่ถูกทำโดย บริษัท ภายนอกและบางแห่งก็สนับสนุนทั้งการปรับสมดุลทางภูมิศาสตร์และความล้มเหลวในฐานะบริการ DNS - หรือคุณหมายความว่ามีบุคคลที่สามเพิ่มเติมระหว่างคุณและผู้ให้บริการ DNS หรือว่าคุณไม่ได้พูดโดยตรงผ่าน DNS?
Ernest Mueller

อดีต - เรากำลังทำ DNS กับ บริษัท ภายนอกที่กำลังทำ failover และ load balancing ทางภูมิศาสตร์กับดาต้าเซ็นเตอร์ที่แตกต่างกัน ฉันต้องการโหลดยอดเงินภายในศูนย์ข้อมูล
Scrivener

คุณสามารถใช้ round robin เดียวกันสำหรับเซิร์ฟเวอร์โดยเซิร์ฟเวอร์ที่ส่วนหน้าใช่ไหม? DNS สำหรับการทำ load balin round balancing มักใช้กับ data center เดียว การระบุตำแหน่งทางภูมิศาสตร์ที่หลากหลายเป็นสิ่งที่เด็กหนุ่มต้องการ
เออร์เนสต์มุลเลอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.