ในสภาพแวดล้อมการให้บริการเว็บสมัยใหม่ ความพร้อมใช้งาน (Availability) เป็นปัจจัยสำคัญที่ตัดสินความสำเร็จของธุรกิจ Nginx เป็นเว็บเซิร์ฟเวอร์และ reverse proxy ที่ได้รับความนิยมสูงสุด แต่หากมีเพียงเซิร์ฟเวอร์ Nginx เดียว และเซิร์ฟเวอร์นั้นเกิดข้อผิดพลาดขึ้น ระบบทั้งหมดจะหยุดทำงาน บทความนี้จะสอนวิธีสร้าง High Availability (HA) Nginx Setup เพื่อให้เว็บแอปพลิเคชันของคุณทำงานอย่างต่อเนื่องโดยไม่มีการหยุดชะงัก
High Availability คืออะไร และเหตุใดจึงสำคัญ
High Availability (HA) หมายถึงการออกแบบระบบให้สามารถทำงานต่อเนื่องได้มากที่สุด แม้ว่าส่วนประกอบบางส่วนของระบบเกิดข้อบกพร่องขึ้น แนวคิด HA วัดโดยค่า Uptime (เวลาที่ระบบทำงาน) ซึ่งมักแสดงเป็นเปอร์เซ็นต์:
| Uptime Level | ประมาณปี | ลักษณะ |
| 99% (Two Nines) | 3.65 วัน | Single Server |
| 99.9% (Three Nines) | 8.76 ชั่วโมง | HA Setup |
| 99.99% (Four Nines) | 52.56 นาที | Multi-region HA |
| 99.999% (Five Nines) | 5.26 นาที | Enterprise HA |
สำหรับธุรกิจออนไลน์ทั่วไป ความมีความพร้อมใช้งาน 99.9% (Three Nines) ถือว่าเป็นมาตรฐานขั้นต่ำที่ยอมรับได้ ซึ่งต้องมีการสำรองข้อมูล (redundancy) ในหลายชั้น
Active-Passive vs Active-Active HA Architecture
มีสองแนวทางหลักในการออกแบบ High Availability Nginx:
Active-Passive (Failover) Architecture
ในการตั้งค่า Active-Passive HA จะมี Primary Nginx Server (เรียกว่า Active) และ Secondary Nginx Server (เรียกว่า Passive) Primary server รับ traffic ทั้งหมด เมื่อ Primary server เกิดการล่ม Virtual IP (VIP) จะ failover ไปยัง Secondary server โดยใช้ keepalived
ข้อดี:
- ตั้งค่าง่ายและเข้าใจได้ง่าย
- ประสิทธิภาพสูงสุด เพราะ Passive server ไม่รับ traffic
- ใช้ทรัพยากรเซิร์ฟเวอร์อย่างมีประสิทธิภาพ
ข้อเสีย:
- เมื่อ failover จะมี downtime สั้นๆ ขณะเปลี่ยน VIP
- Secondary server ไม่ได้รับการใช้งาน จึงเสียไป
Active-Active HA Architecture
ในการตั้งค่า Active-Active HA ทั้ง Primary และ Secondary server ต่างก็รับ traffic ในเวลาเดียวกัน เมื่อเซิร์ฟเวอร์หนึ่งล่ม traffic ทั้งหมดจะถูกส่งไปยังเซิร์ฟเวอร์อื่น
ข้อดี:
- ทรัพยากรทั้งสองเซิร์ฟเวอร์ถูกใช้งานอย่างเต็มที่
- Failover ไม่มี downtime (Zero-downtime failover)
- เพิ่มความสามารถในการจัดการ traffic
ข้อเสีย:
- ตั้งค่าซับซ้อนและยากต่อการแก้ไขปัญหา
- ต้องตรวจสอบให้แน่ใจว่า session/cache ซิงค์กันระหว่างสองเซิร์ฟเวอร์
วิธีสร้าง High Availability Nginx ด้วย keepalived
เราจะใช้ keepalived ซึ่งเป็นเครื่องมือที่ใช้สำหรับจัดการ Virtual IP (VIP) และ failover โดยอัตโนมัติ
ข้อกำหนดเบื้องต้น
- 2 servers ที่มี IP address แยกกัน (ในตัวอย่างนี้ 10.0.0.10 สำหรับ Primary และ 10.0.0.11 สำหรับ Secondary)
- 1 Virtual IP (VIP) ที่ยังไม่ได้ใช้ (ในตัวอย่างนี้ 10.0.0.100)
- Nginx ติดตั้งบนเซิร์ฟเวอร์ทั้งสอง
- SSH access ถึงเซิร์ฟเวอร์ทั้งสอง
- ผู้ใช้ที่มีสิทธิ root หรือ sudo
ขั้นตอนที่ 1: ติดตั้ง Nginx และ keepalived
บนเซิร์ฟเวอร์ทั้งสอง รันคำสั่งต่อไปนี้:
sudo apt-get update sudo apt-get install -y nginx keepalived
ขั้นตอนที่ 2: ตั้งค่า Primary Server (10.0.0.10)
สร้างไฟล์ keepalived configuration:
sudo nano /etc/keepalived/keepalived.conf
ใส่เนื้อหาตามด้านล่าง:
global_defs {
router_id NGINX_MASTER
}
vrrp_script check_nginx {
script "/usr/local/bin/check_nginx.sh"
interval 5
weight -20
}
vrrp_instance NGINX_HA {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass mynginxha
}
virtual_ipaddress {
10.0.0.100/24
}
track_script {
check_nginx
}
}
หมายเหตุ: เปลี่ยน eth0 เป็นชื่อ network interface ของเซิร์ฟเวอร์ของคุณ (อาจเป็น ens0, ens1 เป็นต้น)
ขั้นตอนที่ 3: ตั้งค่า Secondary Server (10.0.0.11)
ตั้งค่า keepalived ในลักษณะเดียวกัน แต่มีการเปลี่ยนแปลงดังนี้:
global_defs {
router_id NGINX_BACKUP
}
vrrp_script check_nginx {
script "/usr/local/bin/check_nginx.sh"
interval 5
weight -20
}
vrrp_instance NGINX_HA {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass mynginxha
}
virtual_ipaddress {
10.0.0.100/24
}
track_script {
check_nginx
}
}
ขั้นตอนที่ 4: สร้าง Nginx Health Check Script
สร้างสคริปต์ที่ใช้ตรวจสอบว่า Nginx ยังทำงานอยู่:
sudo nano /usr/local/bin/check_nginx.sh
ใส่เนื้อหา:
#!/bin/bash if ! pgrep -x "nginx" > /dev/null; then echo "Nginx is not running" exit 1 else echo "Nginx is running" exit 0 fi
ทำให้สคริปต์สามารถรัน:
sudo chmod +x /usr/local/bin/check_nginx.sh
ขั้นตอนที่ 5: เปิดใช้งาน keepalived
บนเซิร์ฟเวอร์ทั้งสอง:
sudo systemctl start keepalived sudo systemctl enable keepalived sudo systemctl status keepalived
ขั้นตอนที่ 6: ทดสอบ HA Setup
ตรวจสอบ VIP โดย ping ไปยัง 10.0.0.100:
ping 10.0.0.100
เมื่อ Primary server ทำงาน จะตอบสนองได้ สามารถทดสอบการ failover โดยหยุด nginx บน primary server:
sudo systemctl stop nginx
ตรวจสอบ VIP อีกครั้ง มันจะตอบสนองจาก secondary server
ปัญหาที่อาจเกิดขึ้นและวิธีแก้ไข
ปัญหา 1: keepalived ไม่สามารถรันได้
ตรวจสอบ log:
sudo journalctl -u keepalived -n 20
ตรวจสอบไวยากรณ์ของไฟล์ config:
sudo keepalived -t -f /etc/keepalived/keepalived.conf
ปัญหา 2: VIP ไม่ได้รับการกำหนด
ตรวจสอบการรับส่ง IP address:
ip addr show
ตรวจสอบว่า interface ถูกระบุอย่างถูกต้อง
ปัญหา 3: Nginx health check script ไม่ทำงาน
ทดสอบสคริปต์ด้วยตนเอง:
sudo /usr/local/bin/check_nginx.sh
ตรวจสอบว่าสคริปต์มีสิทธิการเรียกใช้
การเพิ่มประสิทธิภาพ HA Nginx
สำหรับการเพิ่มประสิทธิภาพ HA Nginx ของคุณ ให้พิจารณาวิธีการต่อไปนี้:
- Load Balancing: ใช้ Nginx reverse proxy เพื่อกระจาย traffic ไปยังหลายเซิร์ฟเวอร์ backend
- Health Checks: ตั้งค่า Nginx health check เพื่อตรวจสอบสถานะของเซิร์ฟเวอร์ backend ที่แน่นอน
- Connection Pooling: ใช้ upstream connection pooling เพื่อลดการ reconnect
- SSL/TLS Termination: ปิด SSL/TLS ที่ HA Nginx proxy เพื่อลดเบิ้งของ backend servers
- Geo-replication: ตั้งค่า backup servers ในหลาย regions เพื่อการ failover ที่เร็วยิ่งขึ้น
สรุป
High Availability Nginx setup จำเป็นสำหรับธุรกิจที่ต้องการ uptime สูง บทความนี้ได้อธิบายวิธีสร้าง Active-Passive HA Nginx setup โดยใช้ keepalived ซึ่งช่วยให้ระบบของคุณสามารถ failover โดยอัตโนมัติเมื่อ Primary server เกิดข้อผิดพลาด ผ่านการทำตามขั้นตอนและการทดสอบอย่างถูกต้อง คุณสามารถสร้างระบบ Nginx ที่มีความพร้อมใช้งานสูง
แนะนำบริการ DE Cloud VPS
หากต้องการติดตั้งและจัดการ High Availability Nginx setup คุณสามารถใช้บริการ DE Cloud VPS ซึ่งให้ความยืดหยุ่นและสมรรถนะสูง ด้วย infrastructure ที่แข็งแกร่ง คุณสามารถทำให้ HA Nginx ของคุณสมบูรณ์แบบอย่างไม่เสียเวลา นอกจากนี้ DE Cloud Hosting ยังมีอีกตัวเลือกที่เหมาะสำหรับธุรกิจที่ต้องการการจัดการแบบ managed services
ติดต่อทีมสนับสนุนของ DE วันนี้เพื่อที่จะรู้เพิ่มเติมเกี่ยวกับบริการและเริ่มต้นการสร้างระบบ HA Nginx ของคุณวันนี้!

