在两台服务器上安装并配置 Nginx(确保配置相同):
# 安装 Nginx (以 Ubuntu 为例)
sudo apt update
sudo apt install nginx -y
# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
在两台服务器上安装 Keepalived:
sudo apt install keepalived -y
vrrp_script chk_nginx {
script "/usr/bin/killall -0 nginx" # 检查nginx进程是否存在
interval 2 # 每2秒检查一次
weight 2 # 优先级变化值
}
vrrp_instance VI_1 {
state MASTER # 主服务器设置为MASTER
interface ens33 # 网卡名称(根据实际情况修改)
virtual_router_id 51 # 虚拟路由ID,主备必须相同
priority 100 # 优先级,主服务器较高
advert_int 1 # 检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111 # 认证密码,主备必须相同
}
virtual_ipaddress {
192.168.1.100/24 # 虚拟IP地址
}
track_script {
chk_nginx # 调用上面定义的检查脚本
}
}
vrrp_script chk_nginx {
script "/usr/bin/killall -0 nginx" # 检查nginx进程是否存在
interval 2 # 每2秒检查一次
weight 2 # 优先级变化值
}
vrrp_instance VI_1 {
state BACKUP # 备服务器设置为BACKUP
interface ens33 # 网卡名称(根据实际情况修改)
virtual_router_id 51 # 虚拟路由ID,主备必须相同
priority 90 # 优先级,备服务器较低
advert_int 1 # 检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111 # 认证密码,主备必须相同
}
virtual_ipaddress {
192.168.1.100/24 # 虚拟IP地址
}
track_script {
chk_nginx # 调用上面定义的检查脚本
}
}
在两台服务器上启动 Keepalived:
sudo systemctl start keepalived
sudo systemctl enable keepalived
检查虚拟 IP 是否绑定在主服务器上:
ip addr show
应该能看到虚拟 IP 绑定在主服务器的网卡上
停止主服务器的 Nginx 服务:
sudo systemctl stop nginx
观察虚拟 IP 是否自动漂移到备服务器
恢复主服务器的 Nginx 服务:
sudo systemctl start nginx
观察虚拟 IP 是否自动漂移回主服务器
在 keepalived.conf 中添加:
global_defs {
notification_email {
admin@yourdomain.com
}
notification_email_from keepalived@yourdomain.com
smtp_server smtp.yourdomain.com
smtp_connect_timeout 30
}
可以替换简单的进程检查为更全面的 Nginx 健康检查:
vrrp_script chk_nginx {
script "/usr/bin/curl -s http://localhost/health-check || exit 1"
interval 2
weight 2
fall 2
rise 2
}
虚拟 IP 不漂移:
virtual_router_id
相同脑裂问题:
日志查看:
journalctl -u keepalived -f
通过以上配置,您已经成功设置了 Nginx 的 Keepalived 双机热备方案,可以实现高可用的 Web 服务。