你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 架构良好的框架评审 - Azure Service Fabric
Azure Service Fabric 是一种分布式系统平台,可用于轻松打包、部署和管理可伸缩的可靠微服务和容器。 这些资源部署到一组联网的虚拟机或物理计算机,称为 群集。
Azure Service Fabric 中有两个群集模型: 标准群集 和 托管群集。
标准群集 要求将群集资源与许多支持资源一起定义。 必须在部署后正确设置这些资源,并在群集的整个生命周期内正确维护。 否则,群集和服务将无法正常运行。
托管群集简化了 部署和管理操作。 托管群集模型由一个 Service Fabric 托管群集资源组成,该资源封装并抽象出基础资源。
本文主要讨论 托管群集 模型,以便于简单。 但是,针对适用于 标准群集 模型的任何特殊注意事项进行了标注。
本文介绍 Azure Service Fabric 的体系结构最佳做法。 本指南基于建筑卓越五大支柱:
- 可靠性
- 安全性
- 成本优化
- 卓越运营
- 性能效率
先决条件
了解架构良好的框架支柱有助于生成高质量、稳定且高效的云体系结构。 请查看 Azure 架构良好的框架概述页 ,查看体系结构卓越五大支柱。
查看 Azure Service Fabric 和 微服务体系结构 的核心概念可帮助你了解本文中提供的最佳做法的上下文。
可靠性
以下部分介绍特定于 Azure Service Fabric 和可靠性的设计注意事项和配置建议。
使用 Azure Service Fabric 讨论可靠性时,必须区分群集可靠性和工作负荷可靠性。 群集可靠性是 Service Fabric 群集管理员与其资源提供程序之间的共同责任,而工作负荷可靠性是开发人员的域。 Azure Service Fabric 对这两个角色都有注意事项和建议。
在下面的设计清单和建议列表中,将发出标注,以指示每个选择是否适用于群集体系结构、工作负荷体系结构或两者。
有关 Azure Service Fabric 群集可靠性的详细信息,请查看 容量规划文档。
有关 Azure Service Fabric 工作负荷可靠性的详细信息,请参阅 Service Fabric 体系结构中包含的可靠性子系统 。
设计清单
在为 Azure Service Fabric 做出设计选择时,请查看 向体系结构添加可靠性的设计原则 。
- 群集体系结构: 将 标准 SKU 用于生产方案。 标准群集: 对生产方案使用 持续性级别银 级(5 个 VM)或更高版本。
- 群集体系结构:对于关键工作负荷,请考虑对 Service Fabric 群集使用可用性区域。
- 群集体系结构: 对于生产方案,请使用标准层负载均衡器。 托管群集使用一个用于主要和辅助节点类型的静态公共 IP 创建 Azure 公共标准负载均衡器和完全限定的域名。 还可以 自带负载均衡器,该负载均衡器同时支持基本和标准 SKU 负载均衡器。
- 群集体系结构: 为工作负荷创建其他辅助节点类型。
建议
浏览以下建议表以优化针对服务可靠性的 Azure Service Fabric 配置:
Azure Service Fabric 建议 | 好处 |
---|---|
群集体系结构: 将标准 SKU 用于生产方案。 | 此级别可确保资源提供程序维护群集可靠性。 标准群集: 标准 SKU 托管群集提供等效的持续性级别 Silver。 若要使用标准群集模型实现此目的,需要使用 5 个 VM(或更多 VM)。 |
群集体系结构:请考虑对 Service Fabric 群集使用可用性区域。 | Service Fabric 托管群集支持跨多个可用性区域的部署以提供区域复原。 此配置可确保关键系统服务和应用程序的高可用性,以防止单点故障。 |
群集体系结构:请考虑使用 Azure API 管理为群集上托管的 API 公开和卸载交叉功能。 | API 管理可以直接与 Service Fabric 集成。 |
工作负荷体系结构: 对于有状态工作负荷方案,请考虑使用 Reliable Services。 | Reliable Services 模型允许服务即使在计算机发生故障或遇到网络问题的不可靠环境中,或者在服务本身遇到错误、崩溃或失败的情况下也能保持正常运行。 对于有状态服务,即使遇到网络故障或其他故障,状态仍会得到保留。 |
有关更多建议,请参阅 可靠性支柱的原则。
安全性
以下部分介绍特定于 Azure Service Fabric 和安全性的设计注意事项和配置建议。
与 Azure Service Fabric 讨论安全性时,必须区分群集安全性和工作负荷安全性。 群集安全性是 Service Fabric 群集管理员与其资源提供程序之间的共同责任,而工作负荷安全性是开发人员的域。 Azure Service Fabric 对这两个角色都有注意事项和建议。
在下面的设计清单和建议列表中,将发出标注,以指示每个选择是否适用于群集体系结构、工作负荷体系结构或两者。
有关 Azure Service Fabric 群集安全性的详细信息,请查看 Service Fabric 群集安全方案。
有关 Azure Service Fabric 工作负荷安全性的详细信息,请参阅 Service Fabric 应用程序和服务安全性。
设计清单
在为 Azure Service Fabric 做出设计选择时,请查看 向体系结构添加安全性的设计原则 。
- 群集体系结构: 确保将网络安全组(NSG)配置为限制子网和节点类型之间的流量流。 确保 为应用程序部署和工作负载打开正确的端口 。
- 群集体系结构: 使用 Service Fabric 机密存储来分发机密时,请使用单独的数据加密证书来加密值。
- 群集体系结构:通过将客户端证书添加到 Azure 密钥库并引用部署中的 URI 来部署客户端证书。
- 群集体系结构: 为群集启用Microsoft Entra 集成,以确保用户可以使用其Microsoft Entra 凭据访问 Service Fabric Explorer。 不要在用户之间分发群集客户端证书以访问资源管理器。
- 群集体系结构: 对于客户端身份验证,请使用管理员和只读客户端证书和/或Microsoft Entra 身份验证。
- 群集和工作负荷体系结构: 创建用于监视客户端证书到期日期的过程。
- 群集和工作负荷体系结构: 为开发、过渡和生产维护单独的群集。
建议
请考虑以下建议来优化 Azure Service Fabric 配置的安全性:
Azure Service Fabric 建议 | 好处 |
---|---|
群集体系结构: 确保将网络安全组(NSG)配置为限制子网和节点类型之间的流量流。 | 例如,你可能有一个API 管理实例(一个子网)、一个前端子网(直接公开网站)和一个后端子网(只能访问前端)。 |
群集体系结构:将密钥库证书部署到 Service Fabric 群集虚拟机规模集。 | 在 Azure Key Vault 中集中存储应用程序机密就可以控制其分发。 Key Vault 可以大大减少机密意外泄露的可能性。 |
群集体系结构:将访问控制列表(ACL)应用于 Service Fabric 群集的客户端证书。 | 使用 ACL 可提供额外的身份验证级别。 |
群集体系结构: 使用 资源请求和限制 来管理群集中各个节点的资源使用情况。 | 强制实施资源限制有助于确保一个服务不会消耗太多资源并耗尽其他服务。 |
工作负荷体系结构: 加密 Service Fabric 包机密值。 | 对机密值进行加密可提供额外的安全级别。 |
工作负荷体系结构: 在 Service Fabric 应用程序中包括客户端证书。 | 让应用程序使用客户端证书进行身份验证可提供群集和工作负荷级别的安全性机会。 |
工作负荷体系结构: 使用 托管标识向 Azure 资源验证 Service Fabric 应用程序。 | 使用托管标识可以安全地管理代码中的凭据,以便对各种服务进行身份验证,而无需在开发人员工作站或源代码管理中本地保存这些凭据。 |
群集和工作负荷体系结构: 托管不受信任的应用程序时,请遵循 Service Fabric 最佳做法 。 | 遵循最佳做法提供了一个要遵循的安全标准。 |
有关更多建议,请参阅 安全支柱的原则。
Azure 顾问可帮助你确保和改进 Azure Service Fabric 的安全性。 可以在本文的 Azure 顾问部分中查看建议。
策略定义
Azure Policy 可帮助维护组织标准并评估资源中的合规性。 配置 Azure Service Fabric 时,请记住以下内置策略:
- Service Fabric 群集应将 ClusterProtectionLevel 属性设置为
EncryptAndSign
。 这是托管群集的默认值,不可更改。 标准群集: 确保将 ClusterProtectionLevel 设置为EncryptAndSign
. - Service Fabric 群集应仅使用 Microsoft Entra ID 进行客户端身份验证。
与 Azure Service Fabric 相关的所有内置策略定义都列在内置策略 - Service Fabric 中。
成本优化
以下部分介绍特定于 Azure Service Fabric 的设计注意事项和配置建议以及成本优化。
使用 Azure Service Fabric 讨论成本优化时,必须区分 群集资源 的成本和 工作负荷资源的成本。 群集资源是 Service Fabric 群集管理员与其资源提供程序之间的共同责任,而工作负荷资源是开发人员的域。 Azure Service Fabric 对这两个角色都有注意事项和建议。
在下面的设计清单和建议列表中,将发出标注,以指示每个选择是否适用于群集体系结构、工作负荷体系结构或两者。
有关群集成本优化,请转到 Azure 定价计算器 ,然后从可用产品中选择 Azure Service Fabric 。 可以在计算器中测试不同的配置和付款计划。
有关 Azure Service Fabric 工作负荷定价的详细信息,请查看 应用程序规划的示例成本计算过程。
设计清单
为 Azure Service Fabric 做出设计选择时,请查看 优化体系结构成本的设计原则 。
- 群集体系结构: 选择适当的 VM SKU。
- 群集体系结构: 使用适当的节点类型和大小。
- 群集和工作负载体系结构:使用适当的托管磁盘层和大小。
建议
浏览以下建议表,以优化 Azure Service Fabric 配置以降低成本:
Azure Service Fabric 建议 | 好处 |
---|---|
群集体系结构: 避免使用临时磁盘产品/服务的 VM SKU。 | 默认情况下,Service Fabric 使用托管磁盘,因此避免临时磁盘产品/服务可确保不为不需要的资源付费。 |
群集体系结构: 如果需要出于容量原因选择特定的 VM SKU,并且它碰巧提供临时磁盘,请考虑对无状态工作负荷使用 临时磁盘支持 。 | 充分利用要支付的资源。 使用临时磁盘而不是托管磁盘可以降低无状态工作负荷的成本。 |
群集和工作负荷体系结构: 使 SKU 选择和托管磁盘大小与工作负荷要求保持一致。 | 将所选内容与工作负载需求相匹配可确保不为不需要的资源付费。 |
有关更多建议,请参阅 成本优化支柱的原则。
卓越运营
以下部分介绍特定于 Azure Service Fabric 和卓越运营的设计注意事项和配置建议。
与 Azure Service Fabric 讨论安全性时,必须区分 群集操作 和 工作负荷操作。 群集操作是 Service Fabric 群集管理员与其资源提供程序之间的共同责任,而工作负荷操作是开发人员的域。 Azure Service Fabric 对这两个角色都有注意事项和建议。
在下面的设计清单和建议列表中,将发出标注,以指示每个选择是否适用于群集体系结构、工作负荷体系结构或两者。
设计清单
为 Azure Service Fabric 做出设计选择时,请查看 卓越运营的设计原则 。
- 群集体系结构: 准备 群集监视解决方案。
- 群集体系结构: 查看 Service Fabric 运行状况模型中的群集运行状况策略 。
- 工作负荷体系结构: 准备 应用程序监视解决方案。
- 工作负荷体系结构: 查看 Service Fabric 运行状况模型中的应用程序和服务类型运行状况策略 。
- 群集和工作负荷体系结构: 准备 基础结构监视解决方案。
- 群集和工作负荷体系结构: 使用生成和发布管道设计群集,以便进行持续集成和部署。
建议
浏览以下建议表以优化针对卓越运营的 Azure Service Fabric 配置:
Azure Service Fabric 建议 | 好处 |
---|---|
工作负荷体系结构: 使用 Application Insights 监视工作负荷。 | Application Insights 与 Azure 平台(包括 Service Fabric)集成。 |
群集和工作负荷体系结构: 创建用于监视客户端证书到期日期的过程。 | 例如,Key Vault 提供一项功能,该功能在证书 x% 的有效期过后会发送电子邮件。 |
群集和工作负荷体系结构:对于预生产群集, 请使用 Azure Chaos Studio 在虚拟机规模集实例故障上钻取服务中断。 | 练习服务中断方案将帮助你了解基础结构中存在哪些风险,以及如何在出现问题时最好地缓解这些问题。 |
群集和工作负荷体系结构: 使用 Azure Monitor 监视群集和容器基础结构事件。 | Azure Monitor 与 Azure 平台(包括 Service Fabric)很好地集成。 |
群集和工作负荷体系结构: 将 Azure Pipelines 用于持续集成和部署解决方案。 | Azure Pipelines 与 Azure 平台(包括 Service Fabric)很好地集成。 |
有关更多建议,请参阅 卓越运营支柱的原则。
性能效率
以下部分介绍特定于 Azure Service Fabric 的配置建议和性能效率。
与 Azure Service Fabric 讨论安全性时,必须区分 群集操作 和 工作负荷操作。 群集性能是 Service Fabric 群集管理员与其资源提供程序之间的共同责任,而工作负荷性能是开发人员的域。 Azure Service Fabric 对这两个角色都有注意事项和建议。
在下面的设计清单和建议列表中,将发出标注,以指示每个选择是否适用于群集体系结构、工作负荷体系结构或两者。
要详细了解 Azure Service Fabric 如何通过 Service Fabric 性能计数器减少工作负荷的性能问题,请参阅 Azure Service Fabric 的监视和诊断最佳做法。
设计清单
- 群集体系结构:从 Windows Defender 中排除 Service Fabric 进程以提高性能。
- 群集体系结构: 选择适当的 VM SKU。
- 工作负荷体系结构: 确定 将用于服务的编程模型 。
- 群集和工作负载体系结构:使用适当的托管磁盘层和大小。
建议
请考虑以下建议来优化 Azure Service Fabric 配置,提高性能效率:
Azure Service Fabric 建议 | 好处 |
---|---|
群集体系结构: 从 Windows Defender 中排除 Service Fabric 进程以提高性能。 | 默认情况下,Windows Server 2016 和 2019 会安装 Windows Defender 防病毒软件。 若要减少 Windows Defender 产生的任何性能影响和资源消耗开销,如果安全策略允许排除开源软件的进程和路径,则可以 排除。 |
群集体系结构: 考虑对群集使用 自动缩放 。 | 自动缩放可提供极佳的弹性,并可在辅助节点类型上按需添加或减少节点。 通过监视和优化为工作负载提供服务的节点量,此自动和弹性行为可减少管理开销和潜在的业务影响。 |
群集体系结构: 请考虑使用 加速网络。 | 加速网络可实现高性能路径,从而绕过数据路径中的主机,从而减少对最苛刻的网络工作负荷的延迟、抖动和 CPU 利用率。 |
群集体系结构:考虑在主机上使用加密,而不是使用 Azure 磁盘加密 (ADE)。 | 此加密方法通过在 Azure 存储 服务中加密数据,支持 VM 的所有 OS 类型和映像(包括自定义映像)来改进 ADE。 |
工作负荷体系结构: 查看 Service Fabric 编程模型 ,确定最适合你的服务的模型。 | Service Fabric 支持多个编程模型。 每个人都有自己的优点和缺点。 了解可用的编程模型有助于做出最佳选择来设计服务。 |
工作负荷体系结构: 在适当情况下为工作负荷利用松散耦合 微服务 。 | 使用微服务可以充分利用 Service Fabric 的功能。 |
工作负荷体系结构: 在适当情况下为工作负荷利用 事件驱动的体系结构 。 | 使用事件驱动的体系结构可以充分利用 Service Fabric 的功能。 |
工作负荷体系结构: 在适当情况下为工作负荷利用 后台处理 。 | 使用后台处理可以充分利用 Service Fabric 的功能。 |
群集和工作负荷体系结构: 查看 在 Service Fabric 中缩放解决方案的不同方式。 | 可以使用缩放为解决方案启用最大资源利用率。 |
有关更多建议,请参阅 性能效率支柱的原则。
Azure 顾问建议
Azure 顾问是个性化的云顾问程序,可帮助遵循最佳做法来优化 Azure 部署。 下面是一些建议,可帮助你在使用 Azure Service Fabric 时提高可靠性、安全性、成本效益、性能和运营卓越性。
安全性
- Service Fabric 群集应将 ClusterProtectionLevel 属性设置为
EncryptAndSign
。 这是托管群集的默认值,不可更改。 标准群集: 确保将 ClusterProtectionLevel 设置为EncryptAndSign
. - Service Fabric 群集应仅使用 Microsoft Entra ID 进行客户端身份验证。
其他资源
有关创建和维护群集时拥有的所有选项的列表,请查看 Azure Service Fabric 托管群集配置选项一文 。
查看 Azure 应用程序体系结构基础知识 ,获取有关如何开发工作负荷的指导。 虽然 Service Fabric 只能用作容器托管平台,但使用架构良好的工作负载可以利用 Service Fabric 的完整功能。
后续步骤
使用 ARM 模板或通过Azure 门户创建 Service Fabric 托管群集时,请使用这些建议: