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



VNG CLOUD đang cung cấpdị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ốngHiện tại VIP  1 private IP, chưa  Public VIP.


1.Khởi tạo VIP trên Portal VNG Cloud



Sau khi khởi tạo VIP thì ta tiến hành Add Address Pair Interface cho các server trong cụm HA

Trong  dụ đã add 2 server 10.30.15.3  10.30.15.5, VIP  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ướcsau đó làm tương tự trên server Slave(10.30.15.5)

Cài đặt nginx:

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

Tạotrang 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:

systemctl start nginx
systemctl enable nginx


Test web: curl http://10.30.15.3


Cài đặt keepalived:

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  running không để keepalived  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

chmod 755 /bin/check_nginx.sh

Đến đây  ta đã hoàn thành config cho server Master, làm tương tự cho server SLAVE còn lạituy nhiên đối với file /etc/keepalived/keepalived.conf trên server SLAVE thì ta điều chỉnhchút như hình:


Cuối cùng, ta tiến hành start keepalived trên cả 2 server MASTER  SLAVE
systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived


3.Testing:

Trường hợp 1: NGINX đều đang running trên 2 server MASTER  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



    • Related Articles

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

      Tùy thuộc vào yêu cầu và mục đích sử dụng, ta có thể thay đổi private IP đối với vServer theo hướng dẫn bên dưới Lưu ý: việc thay đổi này sẽ làm interface bị down và không thể kết nối server trong thời gian thực hiện, do đó ở bước 2 cần thực hiện ...
    • Hướng dẫn sử dụng NFS làm Persistent Storage cho cluster VKS

      Hướng dẫn sử dụng NFS làm Persistent Storage cho cluster VKS Do Persistent Volume hiện tại trên chỉ hỗ trợ mode ReadWriteOnce(RWO), không hỗ trợ ReadWriteMany(RWX) nên trong bài viết này VNG Cloud hướng dẫn Quý Khách sử dụng NFS Server hoặc vStorage ...
    • Get Access Token cho API vServer sử dụng tool Postman

      Giới thiệu tổng quan: Khi sử dụng API vServer (https://vserver-api-docs.vngcloud.vn/service-docs/vserver.html) , trong mọi request đều yêu cầu Access Token nên dưới đây sẽ là hướng dẫn cụ thể Bước 1: Đầu tiên để get được Access Token thì cần có ...
    • Hướng dẫn push và pull image trên vCR bằng Docker

      *Yêu cầu máy tính đã cài Docker engine (như Docker Desktop) 1. Push Image: Đầu tiên để có thể push image thì ta cần có sẵn 1 Repository trên vCR, ví dụ ta đã tạo sẵn 1 repo như sau: - Để push image lên Repo, trước tiên ta cần gắn tag cho image ...
    • Hướng dẫn generate Token để tạo Temp URL upload file trong vStorage API

      Generate Authen Token: - Truy cập https://iam.console.vngcloud.vn/service-accounts để tạo Service Account để lấy cặp ClientID và SecretID cho project vStorage Client ID: ec2d4f62-6580-406e-95e3-b17xxxxxxx Secret ID: 4ec7b98b-df1c-480e-bc01-38fxxxxxxx ...