我有一个自托管 Asp.Net WebAPI 的 Windows 服务。它运行良好,我可以成功发送 GET 请求。
但是我也尝试在 Windows 2012 故障转移群集中托管此服务。我已将服务设置为“通用服务”角色,并且可以将其从一台计算机故障转移到另一台计算机。问题出现在尝试访问群集上的 WebAPI 时。当我尝试使用角色 IP 地址调用它时,我收到 http 400 - 错误请求错误。如果我通过 localhost 访问,那么它可以正常工作(从运行该服务的计算机开始)。
有人对如何使用角色 IP 地址访问 WebAPI 有什么想法吗?
答案1
HTTP 400 错误可能表示 IIS 拒绝请求,因为没有与主机标头匹配的绑定。如果您将应用程序绑定到一台服务器上存在的 IP 地址,但另一台服务器上不存在,就会发生这种情况。您的集群资源组需要一个 IP 地址资源,该资源与应用程序本身一起在节点之间“浮动”。这是每个集群节点的专用 IP 地址的补充。
如果您需要冗余,使用负载平衡器可能会更好地解决问题。对于无附加成本的解决方案,请考虑使用 Windows网络负载平衡服务。