nginx与keepalived协同实现高可用api网关:nginx负责转发、限流、负载均衡和tls终止,keepalived仅管理vip漂移;需配置一致、健康检查直击进程、调优连接参数并确保时间同步、vrrp放行及selinux适配。

要让 API 网关真正扛住高并发又不单点失效,Nginx 和 Keepalived 必须分工明确、协同紧密:Nginx 负责精准转发、限流、负载和 TLS 终止;Keepalived 不干转发的事,只管把一个稳定的虚拟 IP(VIP)始终绑在健康的那台 Nginx 上——主挂了,VIP 秒级漂过去,上游完全无感。
确保 Nginx 配置完全一致
两台节点的 Nginx 配置必须一字不差,包括:
- 反向代理规则(location、proxy_pass、rewrite 等)
- HTTPS 证书路径与 SSL 参数(ssl_certificate、ssl_protocols 等)
- 限流策略(limit_req、limit_conn)、请求头处理(proxy_set_header)
- upstream 定义(后端服务地址、权重、健康检查参数)
配置差异会导致切换后行为异常,比如某接口突然 502 或 Header 丢失。建议用 Git 管理配置,部署时统一拉取,避免手工编辑遗漏。
Keepalived 健康检查必须直击 Nginx 进程
不能只检测 80/443 端口是否通——Nginx 进程僵死但端口仍监听的情况很常见。必须用自定义脚本检查真实工作状态:
- 脚本示例:
killall -0 nginx && curl -sf http://127.0.0.1/health || exit 1 - 在 keepalived.conf 中定义 vrrp_script,设置 interval(如 2s)、weight(如 -10)
- 将该 script 加入 track_script,确保 Nginx 异常时优先级立即下降,触发 VIP 漂移
高并发下关键连接参数要匹配
VIP 切换本身很快,但若 Nginx 连接复用没调好,短连接风暴会压垮新主节点:
- upstream 块启用
keepalive 32(连接池大小) - 对应 proxy 设置:
proxy_http_version 1.1+proxy_set_header Connection '' - 调整超时:
proxy_connect_timeout 5s、proxy_read_timeout 60s,避免长连接阻塞 - 开启
reset_timedout_connection on,及时释放僵死连接
基础环境与安全项不能跳过
看似琐碎,但缺一不可:
- 两节点时间同步(chrony 或 ntpd),VRRP 报文依赖时间戳校验
- 开放 VRRP 多播地址
224.0.0.18(iptables 或 firewalld 放行) - 禁用 SELinux 或设为 permissive,避免权限拦截 VIP 绑定
- keepalived 启动前确认网卡名一致(如都用 eth0),virtual_ipaddress 中 dev 字段需准确
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











