我们有一个场景,我们在Azure中使用多个Web应用程序,在扩展时我理解Azure只是启动更多Web进程,因此允许连接到多个服务器,有一个广播系统用于同步。问题是,如果我们手动或自动缩小,打开的套接字会发生什么?假设我们有5个服务器,每个服务器都有一个开放的Web套接字,我们缩小到1,连接到被删除的服务器的4个套接字会发生什么?
作为旁注,如果他们坚持并保持到套接字与客户端断开连接,那么Azure会为我收费吗?
如果他们不坚持,只需要确保客户端正确重新连接。
到目前为止,我看到它似乎坚持下去,但这可能只是一个宽限期,而它正在缩小,所以我宁愿在这里确定一个真正知道的人的答案。
答案 0 :(得分:1)
几年前从另一个线程中删除的是最新的实例(大部分时间),但我找不到任何关于等待连接丢弃的内容。 Which instances are stopped when I scale my Azure role down?
但是,您可以访问管理API以缩小(删除)特定的云服务角色。
“删除角色实例”操作会删除多个角色实例 来自云服务中的部署。
POST请求
https://management.core.windows.net/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>/roleinstances/
使用此选项可以监视要删除的实例,并以编程方式发送删除命令。这样,您可以等待用户在删除之前干净地断开与实例的连接。
为此参考Microsoft API文档: https://msdn.microsoft.com/library/azure/dn469418.aspx
答案 1 :(得分:0)
只有一种方法可以找出...测试它。 (或询问Azure工程师,但这可能需要很长时间..)
我认为如果有人连接,它不会缩小机器。想象一下,观看一个流并随机停止连接到另一台服务器?我不认为微软会创建它来放弃连接。
答案 2 :(得分:0)
因此,经过相当多的开发和测试后,我们得到了答案。我们正在使用Kudu进行部署,因此Azure构建并发布了Web应用程序。具有打开的Websockets的IIS实例将运行它的Application_End循环并关闭TCP连接。
据我所知,到目前为止,这是在新网站启动并接受连接之前发生的。因此,不用担心需要额外的工作时间。在扩展Web应用程序计划(服务器场)时,无论是否已启用,或者计划中的所有 Web应用程序(站点)似乎都会发生这种情况。下。
这可能给我们的用户带来不便,但是如果在服务器端正确关闭并从客户端重新连接,它应该可以正常工作。
答案 3 :(得分:-2)
第一段提到了网络角色:
在Azure管理门户的“缩放”页面上,您可以手动缩放应用程序,也可以设置参数以自动缩放它。 您可以扩展运行Web角色,工作者角色或虚拟机的应用程序。要扩展运行Web角色或工作角色实例的应用程序,您可以添加或删除角色实例以适应工作负载
Web应用程序或Web角色需要使用VM。这在详细列出的第一个要点中详细说明:
在为应用程序配置扩展之前,应考虑以下信息:
•必须将您创建的虚拟机添加到可用性集,以扩展使用它们的应用程序。您添加的虚拟机最初可以打开或关闭,但它们将在向上扩展操作中打开,在缩小操作中关闭。有关虚拟机和可用性集的详细信息,请参阅管理虚拟机的可用性。
项目符号点后面的信息详细说明了缩放过程。
有关其他信息,此链接还提到了vm用于Web应用程序。下面的措辞可以在标题为Web App Concepts的部分中找到:
Auto Scaling - 通过Web Apps,您可以快速向上扩展或向外扩展以处理任何传入的客户负载。手动选择虚拟机的数量和大小,或设置自动扩展以根据负载或计划扩展服务器。
https://azure.microsoft.com/en-us/documentation/articles/app-service-web-overview/