跳转到内容

Windows 上双节点反代高可用:别假装它是集群

核验于 1 分钟阅读

设计主备或 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 上待验证设计。

来源