Azure Web Apps架构是如何形成的?

时间:2016-02-07 13:11:44

标签: azure web-applications architecture azure-web-sites failover

我有一些10到15分钟的中断,因为显然微软有一个' blid'在他们的存储上。他们告诉我,这是因为实例之间存在共享文件系统(使其成为单点故障?)

我对此并不了解并询问文件共享是如何涉及的,因为我会假设一个非常愚蠢的无状态IIS应用程序,它与SQL Azure通信以获取它的数据。 / p>

我会假设以下情况:

Architecture I assumed

这是他们对我的问题的回复(我没有包括图纸)

  

文件共享不一定是您的Web应用程序进行通信的   另一个资源,但他们在我们的最终应用程序内容   居住在。这就是我们建议关于存储时的意思   在我们的文件服务器上不可用。重启的原因是什么   被触发的两个实例上的应用程序都是因为   资源是共享的,底层存储将是相同的   两个实例。这就是为什么如果它落在一个上,那个   其他人也会最终跟随。如果你真的想要的话   要改进的应用程序的可用性,您始终可以使用流量   经理。但是,即使有交通管理员也无法保证   在适当的位置,该应用程序不会下降,但它提高了整体可用性   你的应用程序。我们最近还推出了生产更新   这应该照顾理想的存储blips引起的重启,但是   要启动此功能,您需要确保有   在这种情况下,需要有足够的内存   功能需要启动。我们有几个选项,你可以拥有   设置,以避免任何意外重启的应用程序,因为   我们最后的存储空白:

     
      
  • 您可以评估是否要移动到更大的实例   我们可能有足够的内存用于重叠回收功能   踢了进去。

  •   
  • 如果您不想迁移到更大的实例,可以随时使用   我们在之前的电子邮件中概述了本地缓存功能。

  •   

由于时差,沟通需要很长时间。谁能告诉我我的想法有什么问题?

我唯一想到的是,当您启用了两个实例时,它们会在同一台物理服务器上运行。但这对我来说毫无意义。

我有两个实例一个核心,1.75 GB内存

2 个答案:

答案 0 :(得分:5)

我对应用服务计划的推测是,它们会自动拆分为可用性集(请参阅下面的简要说明)主要基于Web Apps销售计划表明

  

App Service可在全球数据中心基础架构上提供可用性和自动扩展。轻松按需扩展或缩小应用程序,内和不同地理区域内实现高可用性。

根据David Ebbo的回答和评论,Web应用程序的基础架构似乎是VM本身被分成可用性集。但是,所有实例都使用相同的文件服务器来共享底层磁盘空间。此文件服务器是一个重要的单点故障。

为了缓解这种情况,Azure创建了WEBSITE_LOCAL_CACHE_OPTION,它将文件服务器的内容缓存到各个Web App实例上。使用缓存代替可靠的高可用性工程原理。

这里的问题是,作为客户,我们无法了解此问题,我们不知道是否有计划修复此问题,或者是否或何时会修复此问题,因为Azure似乎不太可能将发布一份文件,承认这是多么糟糕的设计,即使它是固定的。

我也无法想象ASM和ARM之间的这个问题会有什么不同。看起来极不可能的是,后端最初有一个高可用性解决方案,当ARM出现时它们就会报废。因此,云服务很可能会遇到完全相同的问题。

小的好处是,现在我们知道这是一个问题,一个可能的解决方案是部署多个Web应用程序并在它们之间有一个流量管理器。即使它们位于同一区域,不同的应用程序应该具有不同的后端文件服务器。

我的第一个操作是回复该电子邮件,其中包含指向Web Apps页面的链接(和此问题)以及报价副本,并询问如何在中启用高可用性地理区域。

之后,您可能需要重新构建解决方案!

可用性集

对于虚拟机,Azure将允许您指定availability set。可用性集将自动将VM拆分为单独的更新和故障域。这意味着服务器将最终位于不同的服务器机架中,并且这些服务器机架不会同时获得更新。 (它比这复杂一点,但这是基础知识!)

答案 1 :(得分:4)

Azure Web Apps确实使用了共享文件存储。考虑它的最佳方式是,您的应用的所有实例都映射到包含您文件的同一网络共享。因此,如果您通过任何方式修改文件(例如FTP,msdeploy,git,...),所有实例都会立即获取新文件(因为只有一组文件)。

为了回答你的最后一个问题,每个实例都在一个单独的VM上运行。