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