ตกลงนี่ถูกถามสักครู่แล้วฉันก็ไปงานปาร์ตี้ช้า ยังมีบางสิ่งที่จะเพิ่มที่นี่
แจ็กกี้คุณจับมันได้สวยมาก ภาพประกอบของคุณแสดงวิธีจัดการสมดุลภาระในการติดตั้งขนาดเล็กและขนาดกลางส่วนใหญ่
คุณควรอ่านบทแนะนำการปรับสมดุลโหลดโดย Willy Tarreauซึ่ง Nakedible เชื่อมโยงกับ ยังคงใช้ได้และเป็นการแนะนำที่ดี
คุณต้องพิจารณาว่าสิ่งเหล่านี้เหมาะสมกับความต้องการของคุณอย่างไร:
- ตัวโหลดบาลานซ์ TCP / IP ระดับ (Linux Virtual Server และคณะ) ค่าใช้จ่ายต่ำสุดต่อการเชื่อมต่อความเร็วสูงสุดไม่สามารถ "เห็น" HTTP
- ตัวโหลดบาลานซ์ระดับ HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR และอื่น ๆ ) ค่าโสหุ้ยที่สูงขึ้นสามารถเห็น HTTP, สามารถ gzip HTTP, สามารถทำ SSL, สามารถทำสมดุลเซสชันการโหลดได้
- HTTP reverse proxies (Apache Traffic Server, วานิช, Squid) สามารถจัดเก็บวัตถุที่แคชได้ (บางหน้าเว็บ, css, js, รูปภาพ) ใน RAM และส่งต่อไปยังไคลเอนต์ที่ตามมาโดยไม่ต้องเกี่ยวข้องกับเว็บเซิร์ฟเวอร์แบ็กเอนด์ มักจะทำสิ่งเดียวกันกับที่ L7 HTTP load balancer ทำ
มีบาลานเซอร์ที่สองเพราะผมมั่นใจในบางประเด็นบาลานเซอร์ก็ต้องการความช่วยเหลือเช่นกัน
แน่นอน แต่สมดุลภาระเป็นเรื่องง่ายและมักจะ balancer โหลดเดียวสามารถไปได้อย่างรวดเร็ว ฉันเชื่อมโยงไปยังบทความนี้ซึ่งเป็นจุดสนใจในเว็บเป็นเพียงตัวอย่างของballpark ประสิทธิภาพที่เซิร์ฟเวอร์สมัยใหม่เดียวสามารถให้ได้ อย่าใช้ LB หลายตัวก่อนที่คุณจะต้องการ เมื่อคุณต้องการวิธีการทั่วไปคือตัวปรับสมดุลโหลด IP ระดับแนวหน้า (หรือ DNS Round Robin) ไปที่ตัวโหลดบาลานซ์ระดับ HTTP ไปยังพร็อกซีและเว็บเซิร์ฟเวอร์
ช่วยในสิ่งที่ "balancer / s" ควรและวิธีปฏิบัติที่ดีที่สุดในการตั้งค่า
จุดที่เกิดปัญหาคือการจัดการสถานะเซสชั่นและในระดับความล้มเหลว การตั้งค่าตัวโหลดบาลานซ์นั้นค่อนข้างตรงไปตรงมา
หากคุณเพิ่งใช้เซิร์ฟเวอร์เว็บแอปพลิเคชัน 2-4 แบ็กเอนด์การแฮชแบบสแตติกตามที่อยู่ IP ต้นทางสามารถใช้งานได้ สิ่งนี้หลีกเลี่ยงความต้องการสถานะเซสชันที่ใช้ร่วมกันระหว่างเซิร์ฟเวอร์เว็บแอป แต่ละโหนดของเว็บแอพเห็น 1 / N ของปริมาณการใช้โดยรวมและการแมปลูกค้ากับเซิร์ฟเวอร์นั้นเป็นแบบคงที่ในการทำงานปกติ มันไม่เหมาะสำหรับการติดตั้งที่ใหญ่กว่า
สองโหลดสมดุลที่ดีที่สุดของอัลกอริทึมในแง่ที่ว่าพวกเขามีพฤติกรรมอ่อนโยนภายใต้ภาระสูงและการกระจายโหลดแม้กระทั่งเป็นรอบโรบินและเป็นความจริงสมดุลภาระสุ่ม ทั้งสองสิ่งนี้ต้องการให้เว็บแอปพลิเคชันของคุณมีสถานะเซสชันส่วนกลางที่พร้อมใช้งานบนโหนดเว็บแอป วิธีการทำสิ่งนี้ขึ้นอยู่กับกองเทคโนโลยีของ webapp แต่โดยทั่วไปจะมีโซลูชันมาตรฐานสำหรับสิ่งนี้
หากไม่มีการแฮชแบบคงที่และสถานะเซสชันที่ใช้ร่วมกันไม่เหมาะสำหรับคุณดังนั้นตัวเลือกคือการทำโหลดแบบ ' เซสชันที่เหนียว ' และสถานะเซสชันต่อเซิร์ฟเวอร์ ในกรณีส่วนใหญ่ใช้งานได้ดีและเป็นตัวเลือกที่ทำงานได้อย่างสมบูรณ์
balancer / s จะเห็นจำนวนการเชื่อมต่อในแต่ละอินสแตนซ์ apache (ผ่านรายการการกำหนดค่าบางอย่างของ IP ภายในหรือ IP นิรันดร์) และกระจายการเชื่อมต่ออย่างเท่าเทียมกัน
ใช่บางเว็บไซต์ใช้สิ่งนี้ มีชื่อมากมายสำหรับอัลกอริทึมการโหลดบาลานซ์ที่แตกต่างกันมากมายที่มีอยู่ หากคุณสามารถเลือกโรบินกลมหรือสุ่ม (หรือถ่วงน้ำหนักรอบโรบินถ่วงน้ำหนักสุ่ม) แล้วฉันจะแนะนำให้คุณทำเช่นนั้นด้วยเหตุผลที่ได้รับข้างต้น
สิ่งสุดท้าย:อย่าลืมว่าผู้ค้าหลายราย (F5, Cisco และคนอื่น ๆ ในระดับ high-end, fx Coyote Point และ Kemp Technologies ในราคาที่สมเหตุสมผลมากขึ้น) นำเสนออุปกรณ์ปรับสมดุลภาระที่ครบกำหนด