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ố.
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.
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.
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> và <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
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.
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
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
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.