1. 安装与配置Nginx基础服务
在Debian系统的所有Nginx节点上执行sudo apt update && sudo apt install nginx
完成安装。配置Nginx作为负载均衡器,通过upstream
模块定义后端服务器组(支持轮询、加权轮询、IP哈希等策略),并设置反向代理将请求分发至后端。例如:
http {
upstream backend {
server 192.168.1.101:80 weight=3; # 加权轮询,权重越高分配请求越多
server 192.168.1.102:80 weight=2;
server 192.168.1.103:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
配置完成后通过sudo nginx -t
检查语法,再用sudo systemctl reload nginx
应用更改。
2. 使用Keepalived实现虚拟IP(VIP)与故障转移
Keepalived通过VRRP协议管理虚拟IP,当主节点故障时自动将VIP切换至备用节点,确保服务连续性。
sudo apt install keepalived
。/etc/keepalived/keepalived.conf
,设置state MASTER
(主节点)、priority 100
(优先级高于备用节点,范围1-255)、virtual_router_id 51
(同一网络内唯一,1-255)及虚拟IP(如192.168.1.100
):vrrp_instance VI_1 {
state MASTER
interface eth0 # 替换为实际网络接口(如ens33)
virtual_router_id 51
priority 100
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 1234 # 主备节点需一致
}
virtual_ipaddress {
192.168.1.100/24
}
}
state
改为BACKUP
,priority
设为低于主节点的值(如90),其余配置与主节点一致。sudo systemctl start keepalived && sudo systemctl enable keepalived
,通过ip addr show eth0
验证虚拟IP是否绑定至主节点。3. 配置Nginx健康检查
通过健康检查自动剔除故障后端服务器,避免请求发送至不可用节点。Nginx默认支持max_fails
(失败次数阈值)和fail_timeout
(失败超时时间)参数,无需额外模块:
upstream backend {
server 192.168.1.101:80 max_fails=3 fail_timeout=30s; # 3次失败后标记为不可用,30秒后重新尝试
server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
server 192.168.1.103:80 max_fails=3 fail_timeout=30s;
}
此配置表示:若某台后端服务器在30秒内连续失败3次,Nginx将停止向其分发请求,30秒后再次尝试恢复。
4. 实现负载均衡提升可用性
通过负载均衡将请求分发至多台Nginx后端服务器,避免单点过载。Nginx支持多种负载均衡算法:
weight=3
表示权重为3,分配请求的概率更高),适用于服务器性能差异大的场景。5. 监控与日志保障持续可用性
systemctl status nginx
和systemctl status keepalived
实时查看Nginx与Keepalived的运行状态;通过ip addr show eth0
验证虚拟IP是否正常绑定。/var/log/nginx/access.log
)与错误日志(/var/log/nginx/error.log
)、Keepalived日志(/var/log/syslog
),通过工具(如ELK Stack、Prometheus+Grafana)分析请求量、响应时间、故障次数等指标,及时发现异常。