azure - Azure 是否对应用服务数量收费
问题描述
Azure 是否仅对应用服务计划资源的使用或我们在该应用服务计划下创建的应用服务数量收费?在应用服务计划下创建的应用服务数量是否会影响成本?
我正在开发一个微服务项目,我不确定是将每个微服务部署在一个专用的应用服务中,还是将所有微服务部署在一个应用服务中作为虚拟目录。成本是我们项目的一个关注点。
谢谢。
解决方案
Azure 是否仅对应用服务计划资源的使用或我们在该应用服务计划下创建的应用服务数量收费?
忽略免费和共享层,您只需为应用服务计划付费(每个选定机器大小的成本 x 实例数)。无论您在服务计划中有 0 个或 50 个应用程序,您都将支付相同的费用(尽管这些应用程序消耗的任何其他 I/O、存储等将是额外的)。
(而免费层最多允许 10 个应用程序,而共享层最多允许 100 个应用程序)
理论上,您可以在每个应用服务计划中添加任意数量的应用服务(应用,例如 Web 应用、服务、功能应用等),但实际上您会受到 VM 大小和计划的整体资源的限制您已选择(例如Basic 上的 10GB 磁盘空间,而 B1 只有 1.75GB RAM)。
从Microsoft docs,建议是:
在以下情况下将您的应用程序隔离到新的应用程序服务计划中:
- 该应用程序是资源密集型的。
- 您希望独立于现有计划中的其他应用程序扩展应用程序。
- 该应用程序需要不同地理区域的资源。
我还要补充意见:
- 如果适用,请在应用服务计划级别或考虑在资源组或订阅级别隔离您的环境(Dev、UAT、Prod)。
- 除非您的应用程序正在最大化 CPU 使用率,同时在每个服务计划中安装尽可能多的应用程序是合乎逻辑的,但您可以随时监控 VM 实例上的性能和资源使用情况。
- 在我的情况下,我通常发现 RAM 是瓶颈,因此我通常会尝试扩大到具有更多 RAM 的 VM 大小以托管更多应用程序,然后再分离应用程序并添加更多服务计划。
- 如果您使用 .Net Core 或其他不需要 Windows 的堆栈,我建议您查看 Linux 服务计划 - 它们比 Windows 实例便宜得多。一个警告 - 目前,有一个奇怪的限制,它不允许在同一资源组中混合 Windows 和 Linux 服务计划。
- 每个应用程序在服务计划实例上逻辑上都被很好地隔离,因此您可以添加、删除和部署应用程序而不会干扰其他应用程序。
- 尽管可以将 Docker 容器部署为应用服务,但您可能会发现AKS更合适。
更多细节
Azure 托管应用服务计划的术语有些令人困惑,但需要澄清一下:
一个应用服务计划(服务计划)可以有 1 个或多个托管 VM 实例,例如 1 个服务计划扩展到 3 个实例 = 3 个 VM 需要付费。
忽略免费/共享层(在您为每个应用程序支付的共享层上),也忽略隔离层,您将为每个实例支付固定的每月费用
您可以将多个应用程序添加到每个应用程序服务计划 - 例如 Web 应用程序、功能应用程序、杂项。控制台应用程序和 Docker 映像。这些将部署到计划中的所有实例。
在标准层及以上,您还可以在您的应用程序上配置部署槽,这提供了在部署期间进行冒烟测试并提供持续正常运行时间的能力,尤其是在您的生产环境中。
应用服务计划 (microsoft.web/serverfarms) 约占我们每月 Azure 总成本的 40%
这一成本会迅速成倍增加,尤其是在您运行多个隔离环境(Dev、UAT、Prod 等)并且出于冗余或扩展原因需要将每个环境扩展到多个实例的情况下。
在撰写本文时,美国东部的指示性 VM 实例成本约为
- Dev B1 1.75GB RAM Linux 大约 15 美元/Windows 大约 50 美元
- Prod P1V2 3.5GB RAM Linux 约 80 美元/Windows 下午约 150 美元
因此,通过将多个应用程序部署到单个 VM 来尝试最小化成本是很自然的,尤其是在细粒度的微服务企业或系统中。
推荐阅读
- javascript - 为什么我的预览脚本不起作用?
- symfony - Symfony 5:根据父属性值设置属性
- excel - 基于 COUNTA 公式选择单元格的 VBA 代码
- c# - 如何将 byte[] 转换为位图
- javascript - 无法在字符串“”上创建属性“ignore_whitespace”
- c - 分段错误:调用词干函数时为 11
- vue.js - 在vue中创建一个路由出路由器
- flutter - image_picker 在哪里存储图像?
- python - Keras Lambda 层执行最大值并以 (?, 1) 形状输出
- php - 在数据表中,sProcessing 文本未加载