我需要在 Azure 上托管 C# ASP.NET 应用/Windows 服务。但是我需要该服务全天候运行并且非常可靠。
过去我只是将它作为 Windows 服务在虚拟机上运行,但是我发现当 Azure 想要更新它时,它会随机重新启动你的虚拟机,而你对此无能为力。
因此,如果我选择这种方式,我必须重新设计我的应用程序以实现水平可扩展性,然后获取两个或更多 VM 并将它们添加到可用性集。然后必须获取一个可以在两个 VM 之间分配流量的负载平衡器?
这似乎有点过度,特别是现在我的应用程序确实可以垂直扩展?
有没有无头(Windows 服务即服务)?这是否有意义?
我只是需要一个可以在云中运行我的应用程序的高级虚拟机?
答案1
我需要在 Azure 上托管 C# ASP.NET 应用/Windows 服务。但是我需要该服务全天候运行并且非常可靠。
那么你肯定需要在多个虚拟机上部署你的应用程序,并使用负载均衡器重新分配请求。如果你的应用程序托管在单个虚拟机上,并且由于某种原因它崩溃了,那么在修复这个虚拟机期间,你的服务将遭受长时间的停机。
除了HA之外,负载均衡器还将为您带来灵活的容量。
这里很好文章关于 Azure 负载均衡器,它可能会有所帮助。
======================================
更新
如果您能够在 Azure Web App 上部署应用程序,那么它比 VM 更好。因为 MS 将为您处理操作系统和运行时环境。您可以专注于您的应用程序。有关使用 Azure Web App 实现 HA,请参阅本文。