Azure 上托管的高可用性 Service Fabric WebApi

Posted

技术标签:

【中文标题】Azure 上托管的高可用性 Service Fabric WebApi【英文标题】:Highly available Service Fabric WebApi hosted on Azure 【发布时间】:2016-12-19 06:53:54 【问题描述】:

我们将在 Azure 上公开托管在我们的服务结构集群(实例计数 -1)中的所有节点上的无状态 Owin WebAPI。 WebAPI 旨在供公众使用,即使面对内部服务和 WebAPI 本身的升级,也应该具有高可用性。我们在集群前面有 Azure 负载均衡器 (LB),它每 5 秒使用一次 TCP 探测在端口 80 上探测集群,以确定哪些节点可以接收 http 流量。

我们在升级 WebAPI 时遇到问题,即 LB 指向正在升级但尚未被探针注册为离线的节点。 Service Fabric 不与 LB 协调升级过程,因此在升级时没有机会(并且 Azure LB 上没有 API)使节点停止轮换。

我们想知道人们如何在 Azure 上的 Service Fabric 上实现高可用性 http 服务。我希望有人能评论他们的一般方法。

【问题讨论】:

【参考方案1】:

如何在 Azure LB 中使用 HTTP 探测并在 Web API 中添加像 http://node:80/_health 这样的健康检查端点?这样你就可以控制一个节点是否应该处理流量。

【讨论】:

我们一直在考虑这个问题。我们必须在升级时延迟关闭过程,这包括捕获发送到进程的 Ctrl-C 并等待足够的 LB 探测来命中健康端点,以认为完全关闭进程是安全的。我们还必须为升级提供足够的超时时间,以避免进程因响应关闭缓慢而将应用程序变为警告/错误。

以上是关于Azure 上托管的高可用性 Service Fabric WebApi的主要内容,如果未能解决你的问题,请参考以下文章

Azure 上托管的 MVC 4 网站说我无权查看目录或页面

如何将非 www 域重定向到 Azure 上托管的 asp.net mvc 中的 WWW 域?

无法将 Azure VM 上托管的 WCF 服务引用添加到 VS2015 项目

你可以使用 gRPC/gRPC-Web 在 Azure 上托管的微服务之间进行通信吗?

SqlException (0x80131904):在 Azure 上托管的 .NET 6 WebAPI 上的用户“dbuser”登录失败

从Silverlight使用Windows Azure Service Bus