Introduction to HAProxy and MetalLB

Published on July 5, 2026
Introduction to HAProxy and MetalLB

ทำความรู้จักกับ HAProxy และ MetalLB: หัวใจสำคัญของระบบ Load Balancing ใน Kubernetes

บทนำ
เมื่อองค์กรเริ่มพัฒนาโครงสร้างพื้นฐานด้าน IT เช่นซอฟแวร์การให้บริการต่างๆ อยู่บนเว็บหรือโมบอย และทำให้มันรองรับผู้ใช้งานจำนวนมาก ความสามารถในการ Load Balancing (การกระจายโหลด) และ High Availability (ความพร้อมใช้งานสูง) กลายเป็นองค์ประกอบสำคัญของระบบแบบขาดเสียไม่ได้ เพราะมันเป็นส่วนหนึ่งที่จะทำให้ availability หรือความพร้อมให้บริการนั้นสูงขึ้น

ในอดีต การออกแบบระบบมักใช้ Keepalived ร่วมกับ HAProxy บนเครื่อง Physical Server หรือ Virtual Machine แต่เมื่อเข้าสู่ยุคของ container และ Kubernetes ซึ่งมีการสร้างและทำลาย Pods ได้ตลอดเวลา แนวคิดในการให้บริการ IP Address และการกระจายโหลดจึงเปลี่ยนไป โดยจะมีส่วนของซอฟต์แวร์ที่เรียกว่า MetalLB เข้ามาทำหน้าที่แทน Keepalived

บทความนี้จะอธิบายหน้าที่ของ HAProxy และ MetalLB รวมถึงความแตกต่างและการทำงานร่วมกันอย่างละเอียด

Load Balancer คืออะไร และทำไมเราต้องมี
Load Balancer คือระบบที่ทำหน้าที่รับคำขอ (Request) จากผู้ใช้งาน แล้วกระจายคำขอเหล่านั้นไปยังเซิร์ฟเวอร์หลายเครื่องหรือหลายปลาทางหรือหลายโหนด เพื่อให้ทุกเครื่องทำงานร่วมกันอย่างมีประสิทธิภาพ และลดการทำงานในโหนดหรือหน่วยการประมวลตัวหนึ่งตัวใดเป็นพิเศษ เพื่อไม่ให้แต่ละตัวทำงานหนักจนเกิดไป

ประโยชน์ของ Load Balancer ได้แก่

  • ทำให้ระบบรองรับผู้ใช้งานจำนวนมาก
  • ป้องกันไม่ให้เซิร์ฟเวอร์เครื่องใดเครื่องหนึ่งทำงานหนักเกินไป
  • เพิ่มความต่อเนื่องในการให้บริการเมื่อมีเครื่องใดเครื่องหนึ่งขัดข้อรองรับการขยายระบบ (Horizontal Scaling)

HAProxy คืออะไร

HAProxy (High Availability Proxy) เป็นซอฟต์แวร์ประเภท Reverse Proxy และ Load Balancer ที่ได้รับความนิยมสูงในระดับองค์กร โดยมันจะทำงานอยู่ในชั้นของ Application เป็นหลัก โดยมันมีหน้าที่หลักของ ได้แก่

  • กระจายโหลดระหว่าง Web Server หรือ Application Server
  • กระจายโหลดระหว่าง API Server
  • รองรับทั้ง TCP และ HTTP/HTTPS
  • ทำ SSL/TLS Termination
  • ตรวจสอบสถานะ (Health Check) ของ Backend Server
  • รองรับ Sticky Session
  • Routing ตาม URL, Host Header หรือ Cookie
  • รองรับการเชื่อมต่อพร้อมกันหลายแสนถึงหลายล้าน Connections

 

เมื่อผู้ใช้งานส่งคำขอเข้ามา HAProxy จะเลือกว่าจะส่งคำขอนั้นไปยัง Backend Server ตัวใด ตามอัลกอริทึมที่กำหนด เช่น

  • Round Robin
  • Least Connections
  • Source IP Hash
  • Weighted Load Balancing

กล่าวได้ว่า HAProxy เป็นผู้ตัดสินใจว่า “คำขอนี้ควรไปที่เซิร์ฟเวอร์ใด”

Keepalived คืออะไร

ในระบบ Bare Metal หรือ Virtual Machine หากต้องการให้ HAProxy มีความพร้อมใช้งานสูง มักจะติดตั้ง Keepalived ควบคู่กัน โดยที่ Keepalived มีหน้าที่สร้าง Virtual IP (VIP) หรืออาจจะพูดง่ายๆ ได้ว่า สร้าง IP อยู่ตรงกลาง โดย ไอพีดังกล่าว อาจจะหมายถึงหลายเครื่องหรือมากกว่า หรือ ทำให้หลายเครื่องมีไอพีเดียวกันนั่นเอง (secondary ip) Keepalived จะย้าย VIP ไปยังเครื่องสำรองโดยอัตโนมัติ ทำให้ผู้ใช้งานยังคงเชื่อมต่อผ่าน IP เดิม

แล้วพอมาเป็น Kubernetes มันแตกต่างอย่างไรกับของเดิม หรือ ที่ใช้อยู่เดิมใน Bare Metal

Kubernetes มีแนวคิดที่แตกต่างจากระบบ VM แบบเดิม เพราะภายใน Kubernetes

  • Pods สามารถถูกสร้างใหม่ได้ตลอดเวลา
  • Pods สามารถย้ายไปอยู่ Node อื่นได้
  • Pods สามารถ Scale เพิ่มหรือลดจำนวนได้อัตโนมัติ

ดังนั้นจึงไม่สามารถกำหนด IP ของ Pod แบบคงที่เหมือน VM ได้จึงเกิดองค์ประกอบใหม่คือ Kubernetes Service และ MetalLB

MetalLB คืออะไร

MetalLB คือ Load Balancer สำหรับ Kubernetes แบบ Bare Metal หรือ On-Premises MetalLB ทำหน้าที่คล้าย Keepalived แต่ถูกออกแบบมาเพื่อ Kubernetes โดยเฉพาะหน้าที่ของ MetalLB ได้แก่

  • แจก External IP ให้ Kubernetes Service
  • ประกาศ IP ผ่าน Layer 2 หรือ BGP
  • ย้าย IP ไปยัง Node อื่นเมื่อ Node ปัจจุบันล่ม
  • ทำให้ Kubernetes สามารถใช้งาน Service ประเภท LoadBalancer ได้ แม้จะไม่ได้อยู่บน Cloud

MetalLB ไม่ใช่ HAProxy

หลายคนเข้าใจผิดว่า MetalLB เป็น Load Balancer ที่สามารถแทน HAProxy ได้

ความจริงแล้วทั้งสองตัวทำงานคนละระดับ

MetalLB “ไม่” สามารถทำสิ่งเหล่านี้ได้

  • อ่าน HTTP Header
  • อ่าน URL
  • อ่าน Cookie
  • ทำ SSL Termination
  • Routing ตาม Path
  • Routing ตาม Domain

MetalLB สนใจเพียงว่า IP นี้ควรอยู่ที่ Node ไหนเท่านั้น

HAProxy และ MetalLB ไม่ได้แข่งขันกัน แต่ทำงานเสริมกัน โดยที่ MetalLB มีหน้าที่ทำให้ Kubernetes มี IP Address ภายนอกที่ผู้ใช้งานสามารถเข้าถึงได้ พร้อมทั้งรับผิดชอบการย้าย IP เมื่อ Node เกิดปัญหา เพื่อให้บริการยังคงทำงานต่อได้ HAProxy มีหน้าที่รับคำขอจากผู้ใช้งาน วิเคราะห์ข้อมูลในระดับแอปพลิเคชัน เช่น URL, Host Header หรือ Cookie แล้วเลือก Backend Server หรือ Application Pod ที่เหมาะสมที่สุดในการให้บริการ

กล่าวโดยสรุป หากเปรียบเทียบกับระบบแบบดั้งเดิม Keepalived เปรียบเสมือน MetalLB และ HAProxy ยังคงเป็น HAProxy เช่นเดิม ความแตกต่างคือ Kubernetes เพิ่มองค์ประกอบอย่าง Service เข้ามาเพื่อบริหารจัดการ Pods ที่สามารถสร้าง ย้าย หรือปรับจำนวนได้ตลอดเวลา ทำให้ระบบมีความยืดหยุ่น รองรับการขยายตัว และมีความพร้อมใช้งานสูงกว่าสถาปัตยกรรมแบบเดิมอย่างมาก

Introduction to HAProxy and MetalLB

ทำความรู้จักกับ HAProxy และ MetalLB: หัวใจสำคัญของระบบ Load Balancing ใน Kubernetes บทนำ...

Read more »

Erasure Coding vs Replication Factor 3

หนึ่งในคำถามที่มักจะเกิดขึ้นในขณะที่ตั้งค่าเกี่ยวกับ Software Defined Storage โดยใช้ Ceph คือ เราจะเลือกใช้ หลักการกระจายข้อมูลแบบไหน จะใช้...

Read more »

Software Performance and Load Testing Services

ในปัจจุบัน ระบบซอฟต์แวร์ส่วนใหญ่มีการสื่อสารผ่าน Application Programming Interface (API) ไม่ว่าจะเป็น Web Application, Mobile...

Read more »

Smart Energy Management for Apartments, Condominiums and Residences

Smart Energy Management for Apartments, Condominiums and Residences บริหารจัดการพลังงานไฟฟ้าอย่างชาญฉลาด พร้อมระบบเติมเงินล่วงหน้า...

Read more »

Tailscale Subnet Routers

Tailscale คือระบบสร้างเครือข่ายส่วนตัว (Private Network) แบบ VPN ที่ทำให้คอมพิวเตอร์ เซิร์ฟเวอร์ โทรศัพท์ หรืออุปกรณ์ต่าง...

Read more »

MinIO vs Garage S3 vs Ceph RGW

เปรียบเทียบระบบ S3 Storage แบบ On-Premise: MinIO vs Garage S3 vs...

Read more »