Nginx là một máy chủ web miễn phí, mã nguồn mở và là một trong những máy chủ web phổ biến nhất trên thế giới. Nó cũng có thể được sử dụng như một proxy ngược, bộ cân bằng tải và bộ đệm HTTP. Tính khả dụng cao cho phép một ứng dụng chuyển hướng công việc sang một hệ thống khác trong trường hợp xảy ra lỗi. Có nhiều công nghệ khác nhau để thiết lập một hệ thống có tính khả dụng cao.
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 xảy ra lỗi. Nếu một nút ngừng hoạt động thì nút thứ hai sẽ phục vụ các tài nguyên.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập máy chủ web Nginx có tính khả dụng cao với KeepAlived trên CentOS 8.
Sau khi Nginx đã được cài đặt trên cả hai nút, hãy khởi động dịch vụ Nginx và cho phép nó khởi động khi khởi động lại hệ thống:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trên nút đầu tiên, tạo tệp index.html bằng lệnh sau:
Trên nút thứ hai, tạo tệp index.html bằng lệnh sau:
Lưu và đóng tệp khi bạn hoàn tất.
Sau khi gói keepalived được cài đặt trên cả hai nút, bạn sẽ cần chỉnh sửa tệp cấu hình mặc định keepalived trên cả hai nút.
Trên nút đầu tiên, hãy chỉnh sửa tệp keepalived.conf:
Xóa nội dung mặc định và thêm nội dung sau:
Lưu và đóng tệp khi bạn hoàn tất.
Trên nút thứ hai, hãy chỉnh sửa tệp keepalived.conf:
Xóa nội dung mặc định và thêm nội dung sau:
Lưu và đóng tệp, sau đó bạn sẽ cần tạo một tập lệnh để kiểm tra xem dịch vụ Nginx có đang chạy hay không. Bạn có thể tạo tập lệnh này bằng lệnh sau:
Lưu ý: Chỉ cần thay MASTER bằng BACKUP và 110 bằng 100 trong tệp cấu hình ở trên.
Thêm các dòng sau:
Lưu và đóng tệp sau đó đặt quyền thích hợp bằng lệnh sau:
Cuối cùng, hãy khởi động dịch vụ keepalived và cho phép nó khởi động khi khởi động lại hệ thống bằng lệnh sau:
Bạn cũng có thể kiểm tra trạng thái của dịch vụ keepalived bằng lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
Bạn cũng có thể xác minh trạng thái địa chỉ IP ảo trên nút Master bằng lệnh sau:
Bạn sẽ thấy địa chỉ IP ảo 192.168.1.10 trong đầu ra sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Tiếp theo, tải lại firewalld để áp dụng các thay đổi:
Mở trình duyệt web của bạn và truy cập URL . Bạn sẽ thấy trang sau:
Bây giờ, hãy dừng dịch vụ Nginx trên nút Master và kiểm tra xem IP ảo có được chuyển từ Nút 1 sang Nút 2 không.
Trên nút Master, hãy dừng dịch vụ Nginx bằng lệnh sau:
Tiếp theo, hãy đăng nhập vào Node2 và xác minh IP ảo bằng lệnh sau:
Bạn sẽ thấy IP ảo của mình trong đầu ra sau:
Bây giờ, hãy truy cập máy chủ web Nginx của bạn bằng URL
. Bạn sẽ thấy trang Node2:
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 xảy ra lỗi. Nếu một nút ngừng hoạt động thì nút thứ hai sẽ phục vụ các tài nguyên.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập máy chủ web Nginx có tính khả dụng cao với KeepAlived trên CentOS 8.
Điều kiện tiên quyết
- Hai máy chủ chạy CentOS 8, một cho nút chính và một cho nút dự phòng.
- Mật khẩu gốc được cấu hình trên máy chủ của bạn.
Cài đặt Nginx trên cả hai nút
Đầu tiên, bạn sẽ cần cài đặt gói Nginx trong cả hai nút. Bạn có thể cài đặt nó bằng lệnh sau:
Mã:
dnf install nginx -y
Mã:
systemctl start nginx
systemctl enable nginx
Tạo tệp Index.html trên cả hai nút
Tiếp theo, bạn sẽ cần tạo tệp index.html tùy chỉnh trên cả hai nút để xác định từng nút.Trên nút đầu tiên, tạo tệp index.html bằng lệnh sau:
Mã:
echo "[HEADING=1]Đây là nút máy chủ web NGINX đầu tiên của tôi[/HEADING]" | tee /usr/share/nginx/html/index.html
Mã:
echo "[HEADING=1]Đây là nút máy chủ web NGINX thứ hai của tôi[/HEADING]" | tee /usr/share/nginx/html/index.html
Cài đặt và cấu hình Keepalived
Tiếp theo, bạn sẽ cần cài đặt Keepalived trên cả hai nút. Theo mặc định, gói Keepalived có sẵn trong kho lưu trữ mặc định của CentOS 8. Bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
dnf install keepalived -y
Trên nút đầu tiên, hãy chỉnh sửa tệp keepalived.conf:
Mã:
nano /etc/keepalived/keepalived.conf
Mã:
global_defs { # Keepalived process identifier router_id nginx}# Script để kiểm tra Nginx có đang chạy hay khôngvrrp_script check_nginx { script "/bin/check_nginx.sh" interval 2 weight 50}# Virtual interface - Priority chỉ định thứ tự mà giao diện được chỉ định sẽ tiếp quản trong quá trình chuyển đổi dự phòngvrrp_instance VI_01 { state MASTER interface eth0 virtual_router_id 151 priority 110 # Địa chỉ IP ảo được chia sẻ giữa hai Máy chủ web NGINX sẽ float virtual_ipaddress { 192.168.1.10/24 } track_script { check_nginx } authentication { auth_type AH auth_pass secret }}
Trên nút thứ hai, hãy chỉnh sửa tệp keepalived.conf:
Mã:
nano /etc/keepalived/keepalived.conf
Mã:
global_defs { # Keepalived process identifier router_id nginx}# Script để kiểm tra xem Nginx có đang chạy hay khôngvrrp_script check_nginx { script "/bin/check_nginx.sh" interval 2 weight 50}# Virtual interface - Priority chỉ định thứ tự mà giao diện được chỉ định sẽ tiếp quản trong failovervrrp_instance VI_01 { state BACKUP interface eth0 virtual_router_id 151 priority 100 # Địa chỉ IP ảo được chia sẻ giữa hai NGINX Web Server sẽ float virtual_ipaddress { 192.168.1.10/24 } track_script { check_nginx } authentication { auth_type AH auth_pass secret }}
Lưu ý: Chỉ cần thay MASTER bằng BACKUP và 110 bằng 100 trong tệp cấu hình ở trên.
Mã:
nano /bin/check_nginx.sh
Mã:
#!/bin/shif [ -z "`pidof nginx`" ]; sau đó thoát 1fi
Mã:
chmod 755 /bin/check_nginx.sh
Mã:
systemctl start keepalived
systemctl enable keepalived
Mã:
systemctl status keepalived
Mã:
? keepalived.service - LVS và VRRP High Availability Monitor Đã tải: đã tải (/usr/lib/systemd/system/keepalived.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thu 2021-04-08 04:24:22 EDT; 5 giây trước Tiến trình: 3141 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS) PID chính: 3142 (keepalived) Nhiệm vụ: 2 (giới hạn: 12524) Bộ nhớ: 2,1M CGroup: /system.slice/keepalived.service ??3142 /usr/sbin/keepalived -D ??3143 /usr/sbin/keepalived -D08/04 04:24:22 node1 Keepalived_vrrp[3143]: (VI_01) Thay đổi mức độ ưu tiên hiệu quả từ 110 thành 16008/04 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Nhận thời gian chờ quảng cáo08/04 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Đang vào TRẠNG THÁI CHỦ08/04 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) đang thiết lập VIP.08/04 04:24:25 node1 Keepalived_vrrp[3143]: Gửi ARP miễn phí trên eth0 cho 192.168.1.1008/04 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Gửi/xếp hàng ARP miễn phí trên eth0 cho 192.168.1.1008/04 04:24:25 node1 Keepalived_vrrp[3143]: Gửi ARP miễn phí trên eth0 cho 192.168.1.1008/04 04:24:25 node1 Keepalived_vrrp[3143]: Gửi ARP miễn phí trên eth0 cho 192.168.1.1008/04 04:24:25 node1 Keepalived_vrrp[3143]: Đang gửi ARP miễn phí trên eth0 cho 192.168.1.1008/04 04:24:25 node1 Keepalived_vrrp[3143]: Đang gửi ARP miễn phí trên eth0 cho 192.168.1.10
Mã:
ip add show
Mã:
1: lo: mtu 65536 qdisc noqueue trạng thái KHÔNG XÁC ĐỊNH nhóm mặc định qlen 1000 liên kết/vòng lặp 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 phạm vi máy chủ lo valid_lft mãi mãi preferred_lft mãi mãi inet6 ::1/128 phạm vi máy chủ valid_lft mãi mãi preferred_lft mãi mãi2: eth0:
mtu 1500 qdisc fq_codel trạng thái UP nhóm mặc định qlen 1000 liên kết/ether 00:00:2d:3a:20:9b brd ff:ff:ff:ff:ff:ff inet 45.58.32.155/24 brd 45.58.32.255 phạm vi toàn cục noprefixroute eth0 valid_lft mãi mãi preferred_lft mãi mãi inet 192.168.1.10/24 phạm vi toàn cục eth0 valid_lft mãi mãi preferred_lft mãi mãi inet6 fe80::200:2dff:fe3a:209b/64 phạm vi liên kết valid_lft mãi mãi preferred_lft mãi mãi3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:0a:3a:20:9b brd ff:ff:ff:ff:ff:ff inet6 fe80::200:aff:fe3a:209b/64 scope link valid_lft forever preferred_lft forever
Cấu hình Tường lửa trên Cả hai Nút
Tiếp theo, bạn sẽ cần cho phép cổng 80 và cho phép VRRP trên cả hai nút. Bạn có thể thực hiện bằng lệnh sau:
Mã:
firewall-cmd --permanent --add-service=http
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
Mã:
firewall-cmd –reload
Xác minh Keepalived
Lúc này, Nginx và Keepalived đã được cài đặt và cấu hình. Đã đến lúc kiểm tra xem Nginx high availability có hoạt động hay không.Mở trình duyệt web của bạn và truy cập URL . Bạn sẽ thấy trang sau:
Bây giờ, hãy dừng dịch vụ Nginx trên nút Master và kiểm tra xem IP ảo có được chuyển từ Nút 1 sang Nút 2 không.
Trên nút Master, hãy dừng dịch vụ Nginx bằng lệnh sau:
Mã:
systemctl stop nginx
Mã:
ip add show
Mã:
1: lo: mtu 65536 qdisc noqueue trạng thái KHÔNG XÁC ĐỊNH nhóm mặc định qlen 1000 liên kết/vòng lặp lại 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 phạm vi máy chủ lo valid_lft mãi mãi preferred_lft mãi mãi inet6 ::1/128 phạm vi máy chủ valid_lft mãi mãi preferred_lft mãi mãi2: eth0:
mtu 1500 qdisc fq_codel trạng thái UP nhóm mặc định qlen 1000 liên kết/ether 00:00:2d:3a:26:37 brd ff:ff:ff:ff:ff:ff inet 45.58.38.55/24 brd 45.58.38.255 phạm vi toàn cục noprefixroute eth0 valid_lft mãi mãi preferred_lft mãi mãi inet 192.168.1.10/24 phạm vi toàn cục eth0 valid_lft mãi mãi preferred_lft mãi mãi inet6 fe80::200:2dff:fe3a:2637/64 phạm vi liên kết valid_lft mãi mãi preferred_lft mãi mãi3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:0a:3a:26:37 brd ff:ff:ff:ff:ff:ff inet6 fe80::200:aff:fe3a:2637/64 scope link valid_lft forever preferred_lft forever