Hướng dẫn setup HA NGINX bằng keepalived sử dụng VIP

Hướng dẫn setup HA nginx đơn giản bằng keepalived sử dụng VIP

GreenNodeHelp Center

Cấu hình High Availability với VIP, NGINX và Keepalived trên VNG Cloud

Hướng dẫn triển khai cụm HA sử dụng Virtual IP Address kết hợp NGINX và keepalived trên nền tảng VNG Cloud, đảm bảo dịch vụ tiếp tục hoạt động khi một node gặp sự cố.


⚠ Lưu ý: VNG Cloud cung cấp dịch vụ Virtual IP Address (VIP) phục vụ nhu cầu High Availability (HA). Hiện tại VIP chỉ là private IP; chưa hỗ trợ Public VIP.

1. Khởi tạo Virtual IP Address (VIP) trên Portal VNG Cloud

Bước 1: Truy cập Portal VNG Cloud, điều hướng đến phần quản lý mạng và tạo mới một VIP theo các màn hình hướng dẫn.

Màn hình khởi tạo VIP trên Portal VNG Cloud - bước 1

Màn hình khởi tạo VIP trên Portal VNG Cloud - bước 2

Màn hình khởi tạo VIP trên Portal VNG Cloud - hoàn tất

Bước 2: Sau khi VIP được tạo thành công, thực hiện Add Address Pair Interface cho từng server trong cụm HA.

Trong ví dụ này, hai server được thêm vào là 10.30.15.3 (Master) và 10.30.15.5 (Slave), VIP được cấp phát là 10.30.15.6.

2. Cài đặt NGINX và keepalived trên 2 server trong cụm HA

Thực hiện các bước dưới đây trên server Master (10.30.15.3) trước, sau đó lặp lại tương tự trên server Slave (10.30.15.5) — trừ những điểm được chú thích riêng.

Bước 3: Cài đặt NGINX thông qua kho EPEL.

yum install epel-release -y
yum install -y nginx

Bước 4: Tạo trang web index đơn giản phục vụ việc kiểm tra hoạt động failover.

vi /usr/share/nginx/html/index.html

Nội dung file trên server Master:

<h1>This is the Master server</h1>
<h1>IP: 10.30.15.3</h1>

Trên server Slave, thay nội dung thành <h1>This is the Slave server</h1><h1>IP: 10.30.15.5</h1>.

Bước 5: Khởi động NGINX, bật tự khởi động cùng hệ thống, rồi kiểm tra phản hồi.

systemctl start nginx
systemctl enable nginx

Xác nhận NGINX đang phục vụ đúng nội dung:

curl http://10.30.15.3

Kết quả curl kiểm tra NGINX trên server Master

Bước 6: Cài đặt keepalived.

yum install -y keepalived

Bước 7: Sao lưu file cấu hình keepalived mặc định trước khi chỉnh sửa.

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bk

Bước 8: Chỉnh sửa file cấu hình keepalived trên server Master với nội dung sau.

vi /etc/keepalived/keepalived.conf
global_defs {
  # Keepalived process identifier
  router_id nginx
}

# Script to check whether Nginx is running or not
vrrp_script check_nginx {
  script "/bin/check_nginx.sh"
  interval 2
  weight 50
}

# Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
  state MASTER
  interface ens3
  virtual_router_id 151
  priority 110
  # The virtual ip address shared between the two NGINX Web Server which will float
  virtual_ipaddress {
    10.30.15.6/24
  }
  track_script {
    check_nginx
  }
  authentication {
    auth_type AH
    auth_pass secret
  }
}

Trên server Slave, cần điều chỉnh state thành BACKUP và đặt priority thấp hơn 110 (ví dụ: 100) trong cùng file /etc/keepalived/keepalived.conf.

Điểm khác biệt trong cấu hình keepalived trên server Slave

Bước 9: Tạo shell script để keepalived theo dõi trạng thái NGINX và kích hoạt chuyển VIP khi cần.

vi /bin/check_nginx.sh

Nội dung script:

#!/bin/sh
if [ -z "`pidof nginx`" ]; then
  exit 1
fi

Bước 10: Cấp quyền thực thi cho script vừa tạo.

chmod 755 /bin/check_nginx.sh

Bước 11: Khởi động keepalived trên cả hai server Master và Slave, đồng thời bật tự khởi động cùng hệ thống.

systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived

Trạng thái keepalived sau khi khởi động thành công

3. Kiểm tra hoạt động failover

Bước 12: Kiểm tra kịch bản bình thường — NGINX đang chạy trên cả hai server.

Khi NGINX hoạt động bình thường trên cả Master lẫn Slave, server Master giữ VIP nhờ priority cao hơn. Truy cập qua địa chỉ VIP sẽ trả về trang index của Master.

curl http://10.30.15.6

Bước 13: Kiểm tra kịch bản failover — dừng NGINX trên server Master.

Khi NGINX trên Master bị dừng, keepalived phát hiện qua script check_nginx.sh và chuyển VIP sang server Slave. Truy cập qua VIP lúc này trả về trang index của Slave.

curl http://10.30.15.6

Kết quả curl qua VIP sau khi VIP chuyển sang server Slave

Bước 14: Kiểm tra kịch bản phục hồi — khởi động lại NGINX trên server Master.

Khi NGINX trên Master hoạt động trở lại, keepalived nhận diện sự phục hồi và chuyển VIP về Master (do priority cao hơn). Truy cập qua VIP sẽ lại trả về trang index của Master.

Kết quả curl qua VIP sau khi VIP chuyển trở về server Master

✅ Hoàn tất: Hoàn tất cấu hình cụm HA với VIP, NGINX và keepalived trên VNG Cloud. Hệ thống sẽ tự động chuyển VIP sang node dự phòng khi node chính gặp sự cố, và tự phục hồi về node chính khi dịch vụ hoạt động trở lại.
    • Related Articles

    • Hướng dẫn thay đổi IP private cho vServer

      Help Center Thay đổi Private IP cho vServer Hướng dẫn thay đổi địa chỉ IP nội bộ của vServer thông qua portal và cấu hình lại trực tiếp trên hệ điều hành. ⚠ Lưu ý: Quá trình thay đổi IP sẽ khiến network interface tạm thời bị down, làm gián đoạn kết ...
    • Hướng dẫn sử dụng vstorage api HAN02 lấy tempURL để upload file

      Help Center Hướng dẫn tạo Token và upload file qua Temp URL trên vStorage API HAN01 Mô tả các bước xác thực bằng Service Account và sử dụng Temp URL để upload object lên vStorage tại region HAN01. 1. Tạo Authen Token Bước 1: Truy cập trang quản lý ...
    • Hướng dẫn sử dụng Storage Gateway

      Help Center Hướng Dẫn Cấu Hình và Sử Dụng Storage Gateway VNG Cloud Hướng dẫn từng bước để truy cập, cấu hình Credential, tạo user, tạo file share và kết nối client NFS/SMB với Storage Gateway. 1. Truy Cập Storage Gateway Bước 1: Sau khi khởi tạo ...
    • Get Access Token cho API vServer sử dụng tool Postman

      Help Center Hướng dẫn lấy Access Token để gọi vServer API Mô tả cách tạo Service Account và lấy Access Token thông qua Postman, phục vụ việc xác thực các request tới vServer API. 1. Tổng quan Mọi request gửi tới vServer API ...
    • HƯỚNG DẪN CẬP NHẬT SSL CHO WEBSERVER APACHE TRÊN UBUNTU 22.04

      Help Center Cập nhật chứng chỉ SSL trên Apache Web Server Hướng dẫn từng bước thay thế chứng chỉ SSL hết hạn cho website chạy trên Apache, bao gồm chuẩn bị file, triển khai và xác minh kết quả. 1. Chuẩn bị file SSL Bước 1: Tải các file chứng chỉ SSL ...