วิธีการทำสมดุลโหลดซ้ำซ้อน?


27

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

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

นี่คือการสมมติว่าคุณไม่ได้ใช้บริการของบุคคลที่สามใด ๆ เช่น AWS ELB หรืออะไรที่คล้ายกัน จะทำอย่างไรถ้าคุณเพียงแค่ใช้พูด Nginx?


ไม่มี"load balancing load balancer"ที่ด้านบนสุดของสถาปัตยกรรมคุณเพียงแค่สร้าง LBs ซ้ำซ้อนและตั้งค่าโซลูชัน High Availability เพื่อจัดการกับความล้มเหลวเช่นเดียวกับการทำคลัสเตอร์ส่วนใหญ่
Xavier Lucas

คำตอบ:


32

มีสองวิธีในการรับ HA (ความพร้อมใช้งานสูง) ของ Load Balancer - หรือบริการที่เกี่ยวข้อง สมมติว่าคุณมีสองเครื่องด้วยที่อยู่ IP:

  • 192.168.100.101
  • 192.168.100.102

ผู้ใช้เชื่อมต่อกับ IP ดังนั้นสิ่งที่คุณต้องการทำคือแยก IP จากกล่องเฉพาะ - เช่นสร้าง IP เสมือน IP นั้นจะเป็น 192.168.100.100

ตอนนี้คุณสามารถเลือกบริการ HA ซึ่งจะดูแลการ failover อัตโนมัติ / failback ของที่อยู่ IP บริการที่ง่ายที่สุดสำหรับยูนิกซ์คือ (u) carp และเก็บไว้เป็นจำนวนมากบริการที่ซับซ้อนกว่านี้บางอย่างเช่น RedHat Cluster Suite หรือ Pacemaker

เป็นตัวอย่างที่เก็บรักษาไว้ซึ่งเป็นบริการสองอย่างที่เก็บรักษาไว้ซึ่งแต่ละบริการทำงานด้วยตนเองและสื่อสารกัน การสื่อสารนั้นมักเรียกว่าการเต้นของหัวใจ

|   VIP   |                           |         |
|  Box A  | ------v^-----------v^---- |  Box B  |
|   IP1   |                           |   IP2   |

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

                                      |   VIP   |
    ------------------ -------------- |  Box B  |
                                      |   IP2   |

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

ข้อผิดพลาดอีกประการของการตั้งค่านี้คือสมองที่แตกแยก - เมื่อทั้งสองกล่องออนไลน์ แต่การเชื่อมโยงขาดไป สิ่งนี้มักได้รับการแก้ไขผ่านกลไกการฟันดาบบางประเภท (การสำรอง SCSI, การรีสตาร์ท IPMI, การตัดไฟ PDU แบบสมาร์ท, ... ), หรือจำนวนคี่ที่ต้องการให้สมาชิกคลัสเตอร์ส่วนใหญ่ยังมีชีวิตอยู่เพื่อให้บริการเริ่มทำงาน

|   VIP   |                           |   VIP   |
|  Box A  |                           |  Box B  |
|   IP1   |                           |   IP2   |

ซอฟต์แวร์การจัดการคลัสเตอร์ที่ซับซ้อนมากขึ้น (เช่น Pacemaker) สามารถย้ายบริการทั้งหมด (เช่นหยุดที่โหนดหนึ่งและเริ่มต้นที่โหนดอื่น) - และนี่คือวิธีที่ HA สำหรับบริการเช่นฐานข้อมูลสามารถทำได้

อีกวิธีหนึ่งที่เป็นไปได้ - หากคุณควบคุมเราเตอร์ใกล้กับตัวโหลดบาลานซ์ของคุณคือใช้ ECMP วิธีการนี้ยังช่วยให้คุณสามารถปรับสมดุลโหลดบาลานซ์ในแนวนอน สิ่งนี้ทำงานโดยสองกล่องของคุณที่พูดถึง BGP กับเราเตอร์ แต่ละกล่องจะต้องโฆษณา IP เสมือน (192.168.100.100) และเราเตอร์จะโหลดทราฟฟิกยอดดุลผ่าน ECMP หากเครื่องตายมันจะหยุดโฆษณา VIP ซึ่งจะหยุดเราเตอร์จากการส่งปริมาณการใช้งาน สิ่งเดียวที่คุณต้องดูแลในการตั้งค่านี้คือการหยุดโฆษณา IP หากตัวโหลดบาลานเซอร์เองตาย


3

การใช้ Nginx เป็น load balancer ของคุณควรอนุญาตให้คุณติดตามการเปลี่ยนเส้นทางที่มีรายละเอียดในโพสต์นี้โดยแก้ไข config ของคุณเพื่อตรวจสอบว่าหมดเวลาการตอบกลับ:

การทำโหลดบาลานซ์อัตโนมัติให้โดยอัตโนมัติ

ในทางทฤษฎีถ้าคุณมีสภาพแวดล้อม HA โหลดบาลานเซอร์หลายคลัสเตอร์ควรอนุญาตให้มีการบำรุงรักษาหากล้มเหลว

หวังว่านี่จะช่วยได้


2

ตัวโหลดบาลานซ์ฮาร์ดแวร์สนับสนุนการตั้งค่า "active / passive" หรือ "active / active" เป็นเวลาหลายปีในทั้งสองกรณีพวกเขาจะตั้งค่าแบบขนานจากมุมมองเลเยอร์ 1/2 ... active / passive ใช้กลไกการติดตาม / keepalive ตามที่อธิบายไว้ สามารถเปิดใช้งาน / ใช้งานได้หลายวิธี หากต้องการปรากฏเป็น IP เดียวที่ส่วนหน้าอาจจะมี balancer สองตัวขึ้นไปตราบเท่าที่พวกเขาทั้งหมด / ทั้งคู่อยู่ในบรรทัดให้ทำสิ่งต่าง ๆ เช่น:

  • เลือกตอบคำขอ ARP ไปยัง IP ที่ใช้ร่วมกันโดยยึดตามที่มีของ MAC ต้นทางหรือที่อยู่ IP เมื่อไคลเอ็นต์อยู่ในเครือข่ายเดียวกัน
  • เจรจาต่อรองระหว่างกันที่จัดการปริมาณการใช้งานของการเชื่อมต่อ TCP ใหม่ที่กำหนด
  • ปล่อยให้ทราฟฟิกเลเยอร์ที่ซ้ำซ้อนหรือผิดพลาด 3-7 เกิดขึ้นโดยประมาทและพึ่งพา TCP / client / router ในการเรียงลำดับ

จากนั้นเปลี่ยนโหมดเป็นยอมรับการรับส่งข้อมูลทั้งหมดหรือมากกว่านั้นเมื่อการสื่อสารกับอุปกรณ์ / a พาร์ทเนอร์หายไป

ที่ด้านหลัง:

  • ตัวสร้างสมดุลแต่ละตัวในการทำงานปกติอาจใช้แอพพลิเคชั่นเซิร์ฟเวอร์ย่อยที่ให้มาเท่านั้น
  • หรือคำขอซ้ำซ้อนอาจสร้างขึ้นที่นี่เช่นกัน ...
  • หรือการเจรจาต่อรองระหว่าง balancer อาจทำได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.