Windows 上双节点反代高可用:别假装它是集群
设计主备或 DNS/LB 前置的双节点,保持配置一致,处理会话与健康检查,并认清与 NLB 的差别。
测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1- 版本号
- 26100.33650
- 版本
- Standard / Datacenter
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 概念
HA 不是“两台服务器”。它需要:
- 共享前端(带健康的 DNS 轮询、负载均衡器、或 NLB);
- 两节点配置一致;
- 会话模型(粘性、共享缓存、无状态 token);
- 证书/配置分发;
- 测过的故障切换和脑裂方案。
一台 Windows 上跑两个 Nginx 进程不是 HA。
| 模式 | 用途 | 限制 |
|---|---|---|
| DNS 轮询 | 便宜、快 | 无健康、客户端缓存 |
| 外部/云 LB | 多数生产 | 多一跳/成本 |
| Windows NLB | 本地双机 | 单播/多播坑,不是 WAF |
| ARR/Nginx 双机在 LB 后 | TLS + 路由 | LB 仍是单点,除非冗余 |
LB 只有一台 VM,你只是搬走了单点,没消除它。
- 两节点 IIS/Nginx 配置进版本控制。
- IIS:共享配置放高可用共享,或部署同一份
applicationHost.config/站点 XML。 - Nginx:同一
nginx.conf+ include;部署时校验和。 - 证书:同一 PFX/PEM、同一续期自动化、同一 reload。
- 应用版本:两节点同一制品哈希。
- 优先无状态(JWT/签名 cookie)或共享缓存(Redis)。
- 粘性会话能用,但故障切换若无共享会话存储就会丢。
- IIS/ASP.NET 多节点时 session state 放共享存储,不用 in-proc。
- LB 探
/readyz。 - 连续 N 次失败摘节点;恢复要慢。
- 在业务时间测切换,不要只在凌晨。
- 对节点数/健康告警,不只对单节点 CPU。
curl.exe -I https://lab.example/ --resolve lab.example:443:<node1>curl.exe -I https://lab.example/ --resolve lab.example:443:<node2>Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/rewrite/rules' -Name '.'停一个节点;站点应仍可用且 LB 摘掉它。做不到,你只有架构图,没有 HA。
E1。实验室是单 VM;没有 LB 或第二节点。拓扑是 Server 2025 上待验证设计。