Load Balancer Haproxy Nginx Linux

Load Balancer Haproxy Nginx

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Load Balancer Haproxy Nginx คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยเจอปัญหาเว็บเข้าไม่ได้ไหม? หรือเข้าได้แต่โหลดช้าสุดๆ? นั่นแหละ! ปัญหาที่ Load Balancer เข้ามาช่วยแก้ สมัยผมทำร้านเน็ต SiamCafe นี่เจอบ่อยมาก เว็บเกมดังๆ เปิดตัวทีนึง เด็กๆ แห่กันเข้าไปเล่น Server ล่มระเนระนาด

Load Balancer เหมือนเป็น "Traffic Cop" คอยจัดสรรการจราจรของ Data Traffic ไม่ให้ Server ตัวใดตัวหนึ่งทำงานหนักเกินไป กระจายงานไปให้ Server ตัวอื่นที่ว่างกว่า ทำให้เว็บเราเข้าได้ตลอดเวลา ไม่ว่าจะ User เยอะแค่ไหน

Haproxy กับ Nginx ก็คือโปรแกรม Load Balancer ยอดนิยม ที่เขาใช้กันทั่วโลก Nginx นอกจากเป็น Load Balancer ได้แล้ว ยังเป็น Web Server ชั้นดีอีกด้วยนะ เดี๋ยวเรามาดูกันว่าแต่ละตัวมันเจ๋งยังไง

พื้นฐานที่ต้องรู้

ก่อนจะไปลุยเรื่อง Haproxy กับ Nginx เราต้องเข้าใจพื้นฐานพวกนี้ก่อนนะ จะได้ไม่งงเวลาเขียน Config

TCP/IP Protocol

TCP/IP ก็คือภาษาที่คอมพิวเตอร์ใช้คุยกันบน Internet นั่นแหละ ถ้าเราไม่รู้เรื่องนี้ ก็เหมือนเราจะสร้างบ้าน แต่ไม่รู้จักอิฐ หิน ปูน ทราย ไปอ่านเพิ่มเติมได้ที่ SiamCafe Blog นะ

HTTP/HTTPS Protocol

HTTP/HTTPS คือ Protocol ที่ใช้สำหรับส่งข้อมูลบน Web Browser เวลาเราพิมพ์ www.google.com Browser เราจะส่ง Request ไปหา Server ของ Google ด้วย Protocol HTTP หรือ HTTPS นี่แหละ

Reverse Proxy

Reverse Proxy คือตัวกลางที่คอยรับ Request จาก Client แล้วส่งต่อไปยัง Server ที่แท้จริง ซึ่ง Load Balancer ส่วนใหญ่มักจะทำงานเป็น Reverse Proxy ด้วย เพื่อซ่อน Server จริงของเราจากโลกภายนอก

วิธีใช้งาน / เริ่มต้นยังไง

เอาล่ะ! มาถึงส่วนที่สำคัญที่สุด นั่นก็คือการลงมือทำ สมัยผมทำร้านเน็ตนี่ต้อง Config เองทุกอย่าง ไม่มี Docker ไม่มี Cloud แบบสมัยนี้

ขั้นตอนปฏิบัติจริง

ผมจะยกตัวอย่างการ Config Haproxy แบบง่ายๆ ให้ดูก่อนนะ ส่วน Nginx เดี๋ยวค่อยว่ากัน

ติดตั้ง Haproxy

อันดับแรก เราต้องติดตั้ง Haproxy ก่อน บน Linux Server ของเรา

sudo apt update
sudo apt install haproxy

Config Haproxy

หลังจากติดตั้งเสร็จแล้ว เราต้อง Config Haproxy ให้รู้จัก Server ของเรา โดยแก้ไขไฟล์ /etc/haproxy/haproxy.cfg

frontend http_front
    bind *:80
    mode http
    default_backend http_back

backend http_back
    balance roundrobin
    server web1 192.168.1.101:80 check
    server web2 192.168.1.102:80 check

Code นี้หมายความว่า Haproxy จะรับ Request ที่ Port 80 แล้วกระจายไปยัง Server 192.168.1.101 และ 192.168.1.102 โดยใช้ Algorithm roundrobin ซึ่งจะวน Server ไปเรื่อยๆ

อย่าลืม Restart Haproxy หลังจากแก้ไข Config นะ

sudo systemctl restart haproxy

เปรียบเทียบกับทางเลือกอื่น

Haproxy กับ Nginx ไม่ได้มีแค่สองตัวนะ ยังมี Load Balancer ตัวอื่นๆ อีกเยอะแยะ แต่สองตัวนี้เป็นที่นิยมที่สุดแล้ว

สมัยผมทำร้านเน็ต ก็เคยลองใช้ Load Balancer ตัวอื่นเหมือนกัน แต่สุดท้ายก็กลับมาใช้ Haproxy กับ Nginx เพราะมันเสถียรและ Config ง่าย

คุณสมบัติ Haproxy Nginx
ประเภท Load Balancer Web Server / Load Balancer
Algorithm หลากหลาย เช่น roundrobin, leastconn, source IP roundrobin, leastconn, IP Hash
Protocol Support HTTP, HTTPS, TCP HTTP, HTTPS, TCP, UDP
Config ซับซ้อนกว่า ง่ายกว่า
เหมาะกับ Load Balancing โดยเฉพาะ Load Balancing และ Web Server

ถ้าเราต้องการ Load Balancer ที่เน้นประสิทธิภาพและความยืดหยุ่น Haproxy คือตัวเลือกที่ดี แต่ถ้าเราต้องการ Web Server ที่ทำ Load Balancing ได้ด้วย Nginx ก็เป็นตัวเลือกที่น่าสนใจ

สุดท้ายแล้ว การเลือก Load Balancer ขึ้นอยู่กับความต้องการและ Skill ของเรา ถ้าอยากรู้เรื่อง IT ลึกๆ ตามไปอ่านที่ SiamCafe Blog ได้เลย

Best Practices / เคล็ดลับจากประสบการณ์

เฮ้ น้องๆ มาถึงตรงนี้ แสดงว่าเริ่มสนใจ Load Balancer จริงจังแล้วสินะ สมัยผมทำร้านเน็ต SiamCafe เนี่ย บอกเลยว่า Load Balancer ช่วยชีวิตไว้หลายครั้ง จากเครื่องพัง กลายเป็นแค่ลูกค้าสะดุดแป๊บเดียว

ไม่ได้โม้! เพราะว่าถ้า Server ตัวนึงเดี้ยง อีกตัวก็ยังทำงานต่อได้ ลูกค้าแทบไม่รู้ตัวเลยว่ามีอะไรเกิดขึ้น นี่แหละคือหัวใจของการทำ High Availability ที่แท้จริง

3-4 เทคนิคที่ใช้ได้จริง

1. Health Check ให้ละเอียด: อย่าแค่ ping! ต้องเช็คให้ลึกถึงระดับ Application ว่ามันยังทำงานได้จริงไหม สมัยก่อนผมเคยเจอ Server ที่ตอบ ping ได้ แต่ Application ค้าง ต้อง reboot อย่างเดียว เสียลูกค้าไปหลายคนเลย


# Example HAProxy health check
option httpchk GET /healthcheck.php
http-check expect status 200

2. Sticky Session (Cookie): ถ้า Application ของน้องมันต้องจำ Session ของ User (เช่น Login) ให้ใช้ Sticky Session หรือ Cookie Based Persistence ไม่งั้น User จะ Login วนไปวนมา เพราะถูกส่งไป Server คนละตัวตลอด


# Example HAProxy sticky session
cookie SERVERID insert indirect nocache
server server1 192.168.1.10:80 cookie SERVER1 check
server server2 192.168.1.11:80 cookie SERVER2 check

3. Monitor อย่างสม่ำเสมอ: ตั้งระบบ Monitor ที่คอยเช็ค Load ของ Server แต่ละตัว รวมถึง Load Balancer เองด้วย ถ้า Load สูงเกินไป ต้องรีบหาสาเหตุ สมัยก่อนผมใช้ Nagios กับ Cacti ช่วยชีวิตไว้เยอะ

4. Backup and Restore: อย่าลืม Backup Configuration ของ Load Balancer ไว้เสมอ เผื่อวันดีคืนดีมันพังขึ้นมา จะได้ Restore กลับมาได้เร็วๆ

FAQ คำถามที่พบบ่อย

Load Balancer ตัวไหนดีกว่ากัน HAProxy หรือ Nginx?

อันนี้ตอบยาก มันแล้วแต่ Use Case เลย HAProxy เก่งเรื่อง TCP Load Balancing ส่วน Nginx เก่งเรื่อง HTTP Load Balancing ถ้าไม่แน่ใจ ลองทำ Benchmark ดูเลยว่าตัวไหนตอบโจทย์มากกว่ากัน

Load Balancer จำเป็นสำหรับ Web Site ขนาดเล็กไหม?

ถ้า Web Site น้องเล็กๆ Traffic ไม่เยอะ Server ตัวเดียวก็อาจจะพอ แต่ถ้าอยากให้ Web Site มันเสถียรจริงๆ การมี Load Balancer ก็เป็นทางเลือกที่ดี ถึงแม้ว่ามันจะ Overkill ไปบ้างก็ตาม

Load Balancer ช่วยป้องกัน DDoS ได้ไหม?

Load Balancer ช่วยได้ในระดับนึง แต่ไม่ใช่ Silver Bullet มันช่วยกระจาย Traffic ทำให้ Server แต่ละตัวรับ Load น้อยลง แต่ถ้าโดน DDoS หนักๆ ยังไงก็ต้องมีระบบป้องกัน DDoS เฉพาะทางอยู่ดี

ต้องมีความรู้เรื่อง Linux มากแค่ไหนถึงจะ Setup Load Balancer ได้?

พื้นฐาน Linux ต้องแน่นพอสมควรเลยนะ ต้อง Config Network ได้ แก้ไข File Config ได้ ใช้ Command Line เป็น ถ้าไม่คล่อง Linux แนะนำให้ไปศึกษาเพิ่มเติมก่อน

สรุป

Load Balancer เป็นเครื่องมือที่สำคัญมากในการทำ High Availability และ Scalability แต่ก็ต้อง Config ให้ถูก ต้อง Monitor ให้ดี และต้องเข้าใจ Use Case ของตัวเองด้วย ถ้าทำได้ตามนี้ รับรองว่า Web Site ของน้องจะเสถียรขึ้นเยอะเลย SiamCafe Blog มีบทความดีๆ อีกเยอะ ลองเข้าไปอ่านดูนะ

อย่าลืมว่าการทำ Server ให้เสถียร มันคือการลงทุนระยะยาวนะน้องๆ ลองดู iCafeForex เป็นตัวอย่างสิ เขาก็ต้องใช้ระบบที่เสถียรเหมือนกัน