在Debian上實現Nginx高可用可以通過多種方式來完成,其中最常見的是使用Keepalived和Heartbeat來創建一個虛擬IP(VIP)和一個故障轉移機制。以下是實現Nginx高可用的基本步驟:
首先,在兩臺或多臺服務器上安裝Nginx。
sudo apt update
sudo apt install nginx
確保Nginx配置文件在所有服務器上保持一致。通常配置文件位于/etc/nginx/nginx.conf
。
Keepalived用于管理虛擬IP地址和健康檢查。
在所有服務器上安裝Keepalived:
sudo apt install keepalived
編輯Keepalived配置文件,通常位于/etc/keepalived/keepalived.conf
。
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_nginx
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.100 80 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 80
}
}
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_nginx
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.100 80 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 80
}
}
}
創建一個腳本來檢查Nginx的健康狀態。
sudo nano /etc/keepalived/chk_nginx.sh
腳本內容:
#!/bin/bash
if ! nginx -t; then
exit 1
fi
exit 0
賦予腳本執行權限:
sudo chmod +x /etc/keepalived/chk_nginx.sh
在所有服務器上啟動Keepalived服務:
sudo systemctl start keepalived
sudo systemctl enable keepalived
確保虛擬IP地址已經分配,并且可以通過瀏覽器訪問。
ip addr show eth0 | grep 192.168.1.100
通過以上步驟,你可以在Debian上實現Nginx的高可用性。主服務器和備份服務器將共享一個虛擬IP地址,當主服務器宕機時,備份服務器將接管虛擬IP地址,確保服務的連續性。