NETWORKING
Load Balancer คืออุปกรณ์หรือซอฟต์แวร์ที่ทำหน้าที่เป็น ผู้จัดการการรับส่งข้อมูล โดยจะ กระจายภาระงาน (Load) หรือคำร้องขอ (Requests) จากผู้ใช้งานอินเทอร์เน็ตไปยัง เซิร์ฟเวอร์หลายเครื่อง ที่ทำงานเหมือนกันในกลุ่ม (Server Farm หรือ Server Pool) อย่างเท่าเทียมและมีประสิทธิภาพ
เป้าหมายหลักคือการทำให้มั่นใจว่าแอปพลิเคชันหรือบริการออนไลน์นั้น:
1. มีความพร้อมใช้งานสูง (High Availability): สามารถทำงานได้อย่างต่อเนื่องแม้ว่าจะมีเซิร์ฟเวอร์บางเครื่องล่ม
2. มีประสิทธิภาพสูง (High Performance): ลดภาระงานของเซิร์ฟเวอร์แต่ละเครื่อง ทำให้การตอบสนองต่อผู้ใช้รวดเร็ว
3. มีความสามารถในการขยายขนาด (Scalability): สามารถเพิ่มหรือลดจำนวนเซิร์ฟเวอร์ในระบบได้อย่างง่ายดายเพื่อรองรับปริมาณการใช้งานที่เปลี่ยนแปลงไป
การทำงานของ Load Balancer
Load Balancer จะนั่งอยู่ด้านหน้า (เป็น Reverse Proxy) ของกลุ่มเซิร์ฟเวอร์ และมีขั้นตอนการทำงานหลักคือ:
1. รับคำร้องขอ: รับคำร้องขอทั้งหมดจากผู้ใช้
2. ตรวจสอบสถานะ (Health Check): ตรวจสอบสถานะของเซิร์ฟเวอร์แต่ละเครื่องอย่างต่อเนื่อง หากพบว่าเซิร์ฟเวอร์ใดไม่พร้อมใช้งาน (ล่มหรือมีปัญหา) จะตัดเซิร์ฟเวอร์นั้นออกจากกลุ่มเพื่อไม่ให้ส่งงานไป
3. ตัดสินใจกระจายงาน: ใช้ อัลกอริทึม (Algorithm) ในการตัดสินใจว่าจะส่งคำร้องขอถัดไปไปยังเซิร์ฟเวอร์ใดในกลุ่มที่ยังคงทำงานอยู่
อัลกอริทึมการกระจายงานที่นิยม (Load Balancing Algorithms)
Load Balancer ใช้วิธีการต่าง ๆ ในการกระจายภาระงาน:
| อัลกอริทึม | หลักการทำงาน | เหมาะสำหรับ |
|---|---|---|
| Round Robin | การมองเห็นแบบครบวงจร (Unified Visibility) กระจายคำร้องขอไปยังเซิร์ฟเวอร์ตามลำดับหมุนเวียนไปทีละเครื่อง (Server 1 Server 2 Server 3 Server 1...) | กรณีที่เซิร์ฟเวอร์ทุกเครื่องมีประสิทธิภาพเท่ากัน |
| Weighted Round Robin | กำหนด น้ำหนัก (Weight) ให้กับแต่ละเซิร์ฟเวอร์ตามประสิทธิภาพ (เช่น เครื่องที่แรงกว่ามีน้ำหนักสูงกว่า) เครื่องที่มีน้ำหนักสูงจะได้รับคำร้องขอมากกว่า | กรณีที่เซิร์ฟเวอร์มีสเปคแตกต่างกัน |
| Least Connections | ส่งคำร้องขอใหม่ไปยังเซิร์ฟเวอร์ที่มี การเชื่อมต่อใช้งานอยู่ (Active Connections) น้อยที่สุดในขณะนั้น | กรณีที่เซสชันของผู้ใช้ใช้เวลาไม่เท่ากัน (Dynamic Load) |
| Least Response Time | ส่งคำร้องขอไปยังเซิร์ฟเวอร์ที่มี เวลาตอบสนอง (Response Time) เร็วที่สุดและมีจำนวนการเชื่อมต่อน้อยที่สุด | เน้นการตอบสนองที่รวดเร็วที่สุด |
| Source IP Hash | ใช้ IP Address ต้นทางของผู้ใช้มาคำนวณค่า (Hash) เพื่อส่งคำร้องขอจากผู้ใช้คนเดิมไปยังเซิร์ฟเวอร์เครื่องเดิมเสมอ (Session Persistence) | เหมาะสำหรับแอปพลิเคชันที่ต้องการรักษา Session ข้อมูล |
ประเภทของ Load Balancer
Load Balancer สามารถทำงานได้ในระดับต่าง ๆ ของแบบจำลอง OSI (Open Systems Interconnection):
• Layer 4 Load Balancer (Network Load Balancer - NLB): ทำงานในระดับ Transport Layer (TCP/UDP) โดยอิงข้อมูลจาก IP Address และ Port Number เป็นหลัก มีความเร็วสูงและมีความหน่วงต่ำ (Low Latency)
• Layer 7 Load Balancer (Application Load Balancer - ALB): ทำงานในระดับ Application Layer (HTTP/HTTPS) สามารถอ่านและอิงการตัดสินใจจากข้อมูลที่อยู่ในคำร้องขอ เช่น URL, HTTP Header, Cookies ซึ่งให้ความยืดหยุ่นในการทำ Content-Based Routing และมักจะมีความสามารถด้านความปลอดภัยเพิ่มเข้ามาด้วย (เช่น SSL Offloading)
To give you a better experience, by continuing to use our website, you are agreeing to the use of cookies and personal data as set out in our Privacy Policy | Terms and Conditions