Azure 是否仅针对应用服务计划资源的使用量或我们根据该应用服务计划创建的应用服务数量收费?
忽略免费和共享套餐,您只需支付应用服务Plan https://azure.microsoft.com/en-gb/pricing/details/app-service/plans/(每台选定机器大小的成本 x 实例数量)。无论您的服务计划中有 0 个还是 50 个应用程序,您都将支付相同的费用(尽管这些应用程序消耗的任何其他 I/O、存储等将是额外的)。
(免费套餐最多允许 10 个应用程序,共享套餐最多允许 100 个应用程序)
理论上你可以添加任意数量的App每个应用程序服务计划中的服务(应用程序,例如 Web 应用程序、服务、功能应用程序等),但实际上,您将受到 VM 大小和您选择的计划的总体资源的限制(例如,基本版 10GB 磁盘空间 https://azure.microsoft.com/en-us/pricing/details/app-service/plans/,而 B1 只有 1.75GB RAM)。
来自微软文档 https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans#should-i-put-an-app-in-a-new-plan-or-an-existing-plan,建议是:
在以下情况下将您的应用程序隔离到新的应用程序服务计划中:
- 该应用程序是资源密集型的。
- 您希望独立于现有计划中的其他应用程序来扩展该应用程序。
- 该应用程序需要不同地理区域的资源。
我还想补充一下意见:
-
如果适用,请在应用服务计划级别保持环境(开发、UAT、生产)隔离,或者考虑在资源组或订阅级别进行隔离。
-
除非您的应用程序超出了 CPU 使用率,否则每个服务计划安装尽可能多的应用程序在逻辑上是有意义的,但要随时监控 VM 实例的性能和资源使用情况。
-
在我的情况下,我通常发现 RAM 是瓶颈,因此我通常会尝试扩展到具有更多 RAM 的 VM 大小以托管更多应用程序,然后再分离出应用程序并添加更多服务计划。
-
If you are on .Net Core or another stack which doesn't need Windows, I would recommend looking into the Linux Service Plans - they are considerably cheaper than Windows instances.
One caveat - as at present, there's a weird limitation which doesn't allow mixing of Windows and Linux Service Plans in the same resource group https://learn.microsoft.com/en-us/azure/app-service/containers/app-service-linux-intro#limitations As of Jan 2021 https://learn.microsoft.com/en-us/azure/app-service/overview#limitations you can deploy both Windows and Linux App Service plans to the same resource group, but note that some VS versions https://learn.microsoft.com/en-us/answers/questions/1161717/cant-create-windows-and-linux-app-service-plans-in might still incorrectly enforce this as a validation rule if you are deploying via publish.
-
每个应用程序在服务计划实例上逻辑上都相当隔离,因此您可以添加、删除、重新启动和部署应用程序,而不会干扰其他应用程序。
-
尽管 Docker 容器可以部署为应用服务,但您可能会发现AKS https://learn.microsoft.com/en-us/azure/aks/更合适。
以及更多细节
Azure 托管应用服务计划的术语有些令人困惑,但需要澄清一下:
-
应用服务计划(服务计划)可以有 1 个或多个托管 VM 实例
例如1 个服务计划扩展到 3 个实例 = 需要支付 3 个虚拟机。
-
忽略免费/共享层(在您为每个应用程序支付的共享层上),也忽略隔离层,您将为每个实例支付固定的每月费用
-
您可以将多个应用程序添加到每个应用程序服务计划 - 例如Web 应用程序、功能应用程序、其他。控制台应用程序和 Docker 映像。这些将部署到计划中的所有实例。
-
在标准层及以上,您可以配置部署槽位 https://learn.microsoft.com/en-us/azure/app-service/deploy-staging-slots在您的应用程序上,它提供了冒烟测试的能力,并在部署期间(尤其是在生产环境中)提供持续的正常运行时间。与任何已部署的应用程序一样,部署到部署槽将消耗 cpu、内存和 io 资源。
FWIW 应用服务计划 (microsoft.web/serverfarms) 约占我们每月 Azure 总成本的 40%
这一成本可能会迅速成倍增加,特别是如果您正在运行多个隔离环境(开发、UAT、生产等),并且出于冗余或规模原因需要扩展到每个环境多个实例。
截至撰写本文时,美国东部的指示性 VM 实例成本约为
- Dev B1 1.75GB RAM Linux 约为下午 15 美元 / Windows 约为下午 50 美元
- Prod P1V2 3.5GB RAM 约为 80 美元 Linux / 约 150 美元 Windows
因此,尝试通过将多个应用程序部署到单个虚拟机来最大限度地降低成本是很自然的,尤其是在细粒度的微服务企业或系统中。