运维|devops|nginx|nginx负载配置
upstream模块
upstream模块是Nginx实现流量分发、故障转移的核心,它定义了一个后端服务器池
demo示例
- upstream配置
upstream backend_pool {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
- location 配置
location / {
proxy_pass http://backend_pool;
}
负载算法
核心参数详解
| 参数 | 深层含义 | 适用场景 |
|---|---|---|
weight | 加权轮询的权重值。不仅影响轮询比例,在 least_conn(最少连接)算法中,也会作为初始选择的偏好因子参与决策。 | 异构服务器环境(如新机器性能强,可设 weight=5;老机器设 weight=1)。 |
max_fails | 故障探测阈值。在 fail_timeout 时间窗口内,失败次数达到此值,该节点即被标记为 down(不可用)。 | 生产环境必须配置,否则故障节点不会被自动剔除,导致请求持续报错。 |
fail_timeout | ① 统计窗口时长:用于累计 max_fails 次失败的时间范围。② 熔断暂停时长:节点被标记为 down 后,需等待此时间才会再次尝试探测。 | 兼具“统计周期”和“熔断恢复”双重功能,决定了节点被踢出后多久重试。 |
resolve | 启用动态 DNS 解析(需配合 resolver 指令使用)。Nginx 会定期重新解析域名,不再永久缓存 DNS 记录。 | 容器/K8s 环境必备,Pod IP 频繁变化,需实时感知后端地址变更。 |
backup | 标记为备用节点。仅当所有非 backup 的主节点均不可用时,流量才会转发至该节点。 | 降级容灾方案(如主库故障时,自动切换至只读备份库)。 |
down | 手动标记节点为下线状态。Nginx 不会转发任何请求至该节点,且不会对其执行健康检查。 | 运维主动摘除机器进行维护或发布,避免流量误入。 |
