Giới thiệu:
Nginx là: “engine-ex,” là một phần mềm web server mã nguồn mở nỗi tiếng. Ban đầu nó dùng để phục vụ web HTTP. Tuy nhiên, ngày nay nó cũng được dùng làm reverse proxy, HTTP load balancer và email proxy như IMAP, POP3, và SMTP.
Keepalived là một chương trình dịch vụ trên Linux cung cấp khả năng tạo độ sẵn sàng cao (High Availability) cho hệ thống dịch vụ và khả năng cân bằng tải (Load Balancing) đơn giản. Với sự gọn nhẹ, tối ưu trong dịch vụ HA của Keepalived mang đến cho quản trị viên một giải pháp Active-Backup dịch vụ rất tốt. Thế nhưng tính năng Load Balancing của Keepalived thì khá là chán, không mạnh mẽ, tuỳ biến linh hoạt như các giải pháp khác là Nginx hay HAProxy được. Keepalived là một daemon hệ thống giám sát các dịch vụ hoặc hệ thống liên tục và đạt được tính khả dụng cao trong trường hợp bị lỗi. Nếu một nút không hoạt động thì nút thứ hai phục vụ tài nguyên.
Cài đặt:
Yêu cầu hệ thống:
- 2 server chạy centos 7
- Cài đặt Nginx trên 2 server
Tiến hành cài đặt và cấu hình:
Cài đặt Nginx và KeepAlived:
Cài đặt Nginx:
B1: Cài đặt các gói bằng lệch sau:
yum install yum-utils -y

B2: Thêm yum repository :
Bạn cần thiết lập nginx repository để có thể cài đặt được Nginx thông qua yum:

Dán đoạn lệch sau vào:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

B3: Cài đặt Nginx bằng lệch:
yum install nginx -y
Cài đặt và cấu hình KeepAlived trên 2 server:
Dùng các lệch sau để cài đặt:
yum install gcc kernel-headers kernel-devel

Tiếp theo ta dùng lệnh sau
yum install keepalived

Dùng lệch sau cho phép gắn IP ảo lên card mạng:
echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
sysctl -p

Cấu hình
KeepAlived trên 2 server:
Chỉnh sửa 1 số thông tin như hình:
Dùng lệch này để chỉnh sửa:
nano /etc/keepalived/keepalived.conf

Đoạn code node trên Node
Master
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.16.1.111
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.23
}
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
Đoạn code trên Node
BackUp:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 172.16.1.111
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.23
}
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
Sau khi chỉnh sửa xong 2 Node ta tiến hành Khỏi động lại
KeepAlived:
systemctl start keepalived
systemctl enable keepalived
Kiểm tra trạng thái của dịch vụ keepalived bằng lệnh sau:
systemctl status keepalived

Kiểm tra IP ảo trên 2 Node bằng lệch:
ip add show

Tạo file index.html trên 2 node:
Node
Master:
echo "<h1>WebServer_MASTER</h1>" | tee /usr/share/nginx/html/index.html

Node
BackUp:
echo "<h1>WebServer_BACKUP</h1>" | tee /usr/share/nginx/html/index.html
Kiểm tra KeepAlived có hoạt động không:
Dùng IP ảo để mở web của bạn:
http://172.16.1.23

Dừng dịch vụ NGinx ở bên node
Master:
systemctl stop nginx
Bạn mở lại web bằng IP ảo:
http://172.16.1.23

Như vậy
KeepAlived đã hoạt động