VNG CLOUD đang cung cấp 1 dịch vụ cho phép người dùng khởi tạo Virtual IP Address (VIP) phục vụ cho nhu cầu High Avaibility (HA) của hệ thống. Hiện tại VIP là 1 private IP, chưa có Public VIP.
1.Khởi tạo VIP trên Portal VNG Cloud
Trong ví dụ đã add 2 server 10.30.15.3 và 10.30.15.5, VIP là 10.30.15.6
2.Cài đặt NGINX và keepalived trên 2 server trong cụm HA.
Ta sẽ thao tác trên server Master(10.30.15.3) trước, sau đó làm tương tự trên server Slave(10.30.15.5)
_ Cài đặt nginx:
_ Tạo 1 trang web index đơn giản để phục vụ cho việc test keepalived
vi /usr/share/nginx/html/index.html
<h1>This is the Master server</h1>
<h1>IP: 10.30.15.3</h1>
[Còn đối với server SLVE thì tạo file với nội dung:
<h1>This is the Slave server</h1>
<h1>IP: 10.30.15.5</h1> ]
_ Start nginx:
yum install -y keepalived
Copy file config để backup trước khi chỉnh sửa:
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bk
Edit file config với nội dung như bên dưới:
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
}
}
Tạo them 1 shell script để check nginx có running không để keepalived có thể switch VIP
vi /bin/check_nginx.sh
#!/bin/sh
if [ -z "`pidof nginx`" ]; then
exit 1
fi
Cấp quyền thực thi cho script check_nginx.sh
Đến đây là ta đã hoàn thành config cho server Master, làm tương tự cho server SLAVE còn lại, tuy nhiên đối với file /etc/keepalived/keepalived.conf trên server SLAVE thì ta điều chỉnh 1 chút như hình:
Trường hợp 1: NGINX đều đang running trên 2 server MASTER và SLAVE thì server MASTER sẽ giữ VIP.
Khi đó ta truy cập đến trang index bằng cách curl VIP thì kết quả sẽ được trang index của MASTER
Trường hợp 2: Stop NGINX trên server MASTER thì VIP sẽ được switch sang server SLAVE
Khi đó ta truy cập đến trang index bằng cách curl VIP thì kết quả sẽ được trang index của SLAVE
Trường hợp 3: khi start lại NGINX trên MASTER thì VIP sẽ được switch về MASTER