Asp.net web api Azure上托管的高可用服务结构WebApi

Asp.net web api Azure上托管的高可用服务结构WebApi,asp.net-web-api,high-availability,azure-service-fabric,Asp.net Web Api,High Availability,Azure Service Fabric,我们在Azure上公开了一个托管在我们的服务结构集群(实例计数-1)中所有节点上的无状态Owin WebAPI。WebAPI是供公众使用的,即使面对内部服务和WebAPI本身的升级,它也应该是高度可用的。我们在集群前面有一个Azure loadbalancer(LB),它每隔5秒使用TCP探测器探测端口80上的集群,以确定哪些节点可以接收http流量 我们在升级WebAPI时遇到问题,即LB指向正在升级但尚未被探测器注册为脱机的节点。服务结构不与LB协调升级过程,因此在升级时没有机会(Azure

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

我们在升级WebAPI时遇到问题,即LB指向正在升级但尚未被探测器注册为脱机的节点。服务结构不与LB协调升级过程,因此在升级时没有机会(Azure LB上也没有API)使节点停止旋转


我们想知道人们是如何在Azure的服务结构上实现高可用http服务的。我希望有人能对他们的一般方法发表评论。

在Azure LB中使用HTTP探测,并在Web API中添加一个健康检查端点怎么样?这样,您就可以控制节点是否应该处理流量。

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