Back to articles
Technology Insight

Cấu hình VPS thành High-Availability Reverse Proxy với HAProxy và Keepalived: Chiến lược Zero-Downtime Toàn Diện Cho Landing Page Triệu View

May 26, 2026

Đặt vấn đề: Khi Landing Page "Sập" Đúng Lúc Cao Điểm Chiến Dịch

Đối với các doanh nghiệp vận hành chiến dịch quảng cáo lớn (Paid Traffic), mỗi giây tối tăm của website (downtime) đều được tính bằng tiền. Hãy tưởng tượng kịch bản sau: Bạn vừa đổ hàng trăm triệu đồng vào Facebook Ads, Google Ads hoặc TikTok Ads. Lượng truy cập đồng loạt đổ về (traffic spike). Hệ thống máy chủ đơn lẻ (Single VPS) của bạn quá tải hoặc gặp sự cố phần cứng đột ngột. Kết quả là trang Landing Page báo lỗi 502/504, khách hàng rời đi, và ngân sách marketing bốc hơi vô ích.

Để giải quyết triệt để bài toán này, các kỹ sư hệ thống sử dụng kiến trúc High Availability (HA). Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách biến các VPS thông thường thành một hệ thống High-Availability Reverse Proxy vững chắc bằng cách kết hợp song mã: HAProxy (Cân bằng tải lớp 4/lớp 7 hiệu năng cao) và Keepalived (Cơ chế dự phòng IP ảo VRRP). Đây chính là chiến lược zero-downtime giúp bảo vệ tối đa doanh thu của bạn.

1. Kiến Trúc High-Availability Reverse Proxy Là Gì?

Thông thường, mô hình Reverse Proxy truyền thống chỉ sử dụng một máy chủ HAProxy đứng trước các Web Server (Backend). Mô hình này tồn tại một điểm yếu chết người gọi là Single Point of Failure (SPOF). Nếu chính máy chủ HAProxy đó gặp sự cố, toàn bộ hệ thống sẽ tê liệt.

Kiến trúc High-Availability giải quyết SPOF bằng cách sử dụng ít nhất hai máy chủ Reverse Proxy chạy song song (Active-Passive) kết hợp với một địa chỉ IP ảo gọi là VIP (Virtual IP):

  • Master Node (Active): Máy chủ chính chịu trách nhiệm tiếp nhận toàn bộ traffic từ VIP và điều hướng đến các backend.
  • Backup Node (Passive): Máy chủ dự phòng, liên tục lắng nghe trạng thái của Master Node thông qua giao thức VRRP (Virtual Router Redundancy Protocol).
  • Cơ chế Failover: Khi Master Node xảy ra sự cố (mất điện, lỗi mạng, sập nguồn), Backup Node sẽ lập tức tự động chiếm quyền kiểm soát VIP trong vòng vài mili-giây. Người dùng cuối hoàn toàn không nhận ra sự gián đoạn này.

2. Chuẩn Bị Hạ Tầng Trước Khi Cấu Hình

Để triển khai giải pháp này, bạn cần chuẩn bị tối thiểu các tài nguyên hệ thống sau từ nhà cung cấp VPS (hỗ trợ tính năng IP Failover/Floating IP hoặc cho phép multicast/VRRP):

  1. VPS-HAProxy-01 (Master): IP 192.168.1.10 (Hệ điều hành Ubuntu 22.04/20.04 LTS)
  2. VPS-HAProxy-02 (Backup): IP 192.168.1.20 (Hệ điều hành Ubuntu 22.04/20.04 LTS)
  3. Virtual IP (VIP): IP 192.168.1.100 (Địa chỉ IP trỏ DNS của tên miền Landing Page về đây)
  4. Backend Web Servers: Ít nhất 2 VPS chạy Nginx/Apache chứa mã nguồn Landing Page (IP: 192.168.1.31 và 192.168.1.32)

3. Hướng Dẫn Cấu Hình Cân Bằng Tải Với HAProxy

Thực hiện cài đặt và cấu hình HAProxy trên cả hai máy chủ VPS-HAProxy-01 và VPS-HAProxy-02 để đảm bảo tính đồng nhất cấu hình.

Bước 3.1: Cài đặt HAProxy phiên bản mới nhất

sudo apt update
sudo apt install haproxy -y

Bước 3.2: Cấu hình file haproxy.cfg

Mở file cấu hình bằng lệnh sudo nano /etc/haproxy/haproxy.cfg và thiết lập các thông số tối ưu cho môi trường High-Traffic như sau:

global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend landing_page_front
    bind 192.168.1.100:80
    # Nếu dùng SSL: bind 192.168.1.100:443 ssl crt /etc/ssl/certs/landingpage.pem
    mode http
    default_backend landing_page_backend

backend landing_page_backend
    mode http
    balance roundrobin
    option httpchk GET /health_check.php
    server web01 192.168.1.31:80 check inter 2000 fall 3 rise 2
    server web02 192.168.1.32:80 check inter 2000 fall 3 rise 2

Lưu ý: Cần đảm bảo cơ chế option httpchk hoạt động chuẩn xác bằng cách tạo một file health_check.php trả về HTTP Code 200 trên các web server phía sau để HAProxy nhận biết trạng thái sống/chết của node backend.

4. Thiết Lập Tính Năng Dự Phòng Sẵn Sàng Cao Với Keepalived

Sau khi HAProxy đã sẵn sàng, chúng ta tiến hành cài đặt Keepalived để quản lý việc dịch chuyển Virtual IP (VIP).

Bước 4.1: Cho phép bind IP chưa gán vào hệ thống

Vì VIP chỉ xuất hiện ở một máy chủ tại một thời điểm, máy chủ còn lại cần quyền cấu hình ứng dụng ràng buộc (bind) vào IP này trước khi nó thực sự sở hữu nó. Chạy lệnh sau trên cả 2 VPS:

echo "net.ipv4.ip_nonlocal_bind=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Bước 4.2: Cài đặt Keepalived

sudo apt install keepalived -y

Bước 4.3: Cấu hình Keepalived trên Master Node (VPS-HAProxy-01)

Tạo file cấu hình mới sudo nano /etc/keepalived/keepalived.conf:

vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass SecurePassword123
    }
    virtual_ipaddress {
        192.168.1.100
    }
    track_script {
        check_haproxy
    }
}

Bước 4.4: Cấu hình Keepalived trên Backup Node (VPS-HAProxy-02)

Cấu hình tương tự nhưng thay đổi thuộc tính state thành BACKUP và giảm chỉ số độ ưu tiên priority xuống thấp hơn:

vrrp_script check_haproxy {
    script "killall -0 haproxy"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass SecurePassword123
    }
    virtual_ipaddress {
        192.168.1.100
    }
    track_script {
        check_haproxy
    }
}

Khởi động lại dịch vụ trên cả hai node để áp dụng cấu hình:

sudo systemctl restart keepalived haproxy
sudo systemctl enable keepalived haproxy

5. Kịch Bản Kiểm Thử Năng Lực Kháng Lỗi (Failover Testing)

Để chứng minh kiến trúc hoạt động hoàn hảo và sẵn sàng cho chiến dịch quảng cáo lớn, bạn phải thực hiện bước kiểm thử kịch bản khủng hoảng sau:

  1. Kiểm tra xem máy chủ Master đang giữ IP ảo bằng lệnh: ip addr show eth0. Bạn sẽ thấy dòng IP 192.168.1.100 xuất hiện.
  2. Mở trình duyệt truy cập Landing Page của bạn liên tục.
  3. Giả lập sự cố bằng cách tắt dịch vụ HAProxy hoặc tắt hẳn nguồn VPS Master: sudo systemctl stop haproxy hoặc sudo poweroff.
  4. Kết quả kỳ vọng: Kiểm tra lệnh ip addr trên VPS Backup, bạn sẽ thấy Virtual IP tự động nhảy sang node này. Truy cập từ người dùng hoàn toàn mượt mà, không xảy ra hiện tượng gián đoạn hoặc trang tải chậm.

Kết Luận

Việc đầu tư thiết lập hạ tầng High-Availability Reverse Proxy với HAProxy và Keepalived ban đầu có vẻ phức tạp hơn so với một VPS đơn lẻ. Tuy nhiên, đối với bài toán kinh doanh chuyển đổi số dựa vào quảng cáo trả phí, giải pháp này mang lại sự an tâm tuyệt đối cho đội ngũ vận hành. Hệ thống của bạn giờ đây đã có khả năng tự phục hồi, triệt tiêu rủi ro chết điểm nghẽn đơn lẻ, giúp doanh nghiệp tối ưu từng đồng chi phí marketing và giữ chân khách hàng trọn vẹn trong mọi chiến dịch bùng nổ traffic.

Cấu hình VPS thành High-Availability Reverse Proxy với HAProxy và Keepalived: Chiến lược Zero-Downtime Toàn Diện Cho Landing Page Triệu View | DPTCloud