你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Well-Architected 框架视角下的 Azure Service Fabric

Azure Service Fabric 是一个分布式系统平台,可用于轻松打包、部署和管理可缩放且可靠的微服务和容器。 这些资源部署到一组联网的虚拟机或物理计算机,称为 群集

本文假设作为架构师,你已查看 计算决策树 并选择 Service Fabric 作为工作负荷的计算平台。 本文中的指南提供了映射到 Well-Architected 框架支柱原则的体系结构建议。

重要

如何使用本指南

每个部分都有一个 设计清单,该清单提供关注的体系结构区域以及本地化为技术范围的设计策略。

此外,还包括有助于具体化这些策略的技术功能的建议。 这些建议并不表示可用于 Azure Service Fabric 及其依赖项的所有配置的详尽列表。 然而,它们列出了映射到设计视角的关键建议。 使用建议生成概念证明或优化现有环境。

演示关键建议的基础架构:基于 Azure Service Fabric 的微服务架构

技术范围

本次审查重点关注以下 Azure 资源的相关决策:

  • Service Fabric

注意

此服务指南基于虚拟机和规模集服务指南中提供的指导。 Service Fabric 节点由 VM 规模集提供支持,因此请参阅该服务指南,获取有关为 Service Fabric 节点运行计算后端的建议。

使用 Azure Service Fabric 讨论体系结构注意事项和配置建议时,请务必区分 群集工作负荷。 群集配置是 Service Fabric 群集管理员与其资源提供程序之间的共同责任,而工作负荷配置是开发人员的域。 Azure Service Fabric 对这两个角色都有注意事项和建议。

在以下设计清单建议列表中,提供了标注,以指示每种选择适用于群集体系结构、工作负荷体系结构,或者两者都适用。

可靠性

可靠性支柱的目的是通过 建立足够的复原能力和从故障快速恢复来提供持续的功能。

可靠性设计原则 为各个组件、系统流和整个系统提供高级设计策略。

设计清单

根据可靠性设计评审核对清单开始实施您的设计策略。 在记住[产品/服务特定方面]的同时,确定其与业务需求的相关性。 扩展策略以根据需要包含更多方法。

  • (群集)根据工作负荷的总体可靠度目标指标,确定群集的适当 可靠性级别。 标识的群集的可靠级别将指示要为主节点类型部署的最小节点数。 请参阅 容量规划文档,了解如何做出这些决定。
  • (群集)对于关键工作负载,请考虑为您的 Service Fabric 群集使用 可用性区域
  • (群集)对于生产方案,请使用具有银持久性层(5 个 VM)或更高的标准托管群集 SKU。 此 SKU 提供比基本 SKU 更高的可靠性功能,这应该用于非生产方案。
  • (群集)为工作负荷创建其他辅助节点类型,以隔离不同的工作负荷类型。 这可以帮助你将前端服务与后端服务分开,使你能够独立管理和缩放这些服务。 每个 节点类型都由其自己的规模集提供支持。

建议

建议 益处
(群集)API 管理 (APIM) 可以直接与 Service Fabric 集成。 请考虑使用它来公开和卸载群集上托管的 API 的跨领域功能。 APIM 是一个功能丰富的应用程序网关,可帮助你安全地发布、管理和监视部署到 Service Fabric 群集的 API。
(工作负荷)在有状态工作负荷方案中,请考虑使用可靠服务 Reliable Services 模型允许服务在遇到系统故障或网络问题时或者服务本身遇到故障时保持正常运行。 对于有状态服务,在发生故障时,状态会保留。

安全

安全支柱的目的是为工作负荷提供 保密性、完整性和可用性 保证。

安全设计原则 为通过应用 Service Fabric 技术设计方法来实现这些目标提供了高级设计策略。

设计清单

根据安全设计评审清单,制定设计策略。

  • (群集和工作负荷)熟悉 Service Fabric 产品安全指南。 请参阅 安全最佳做法群集安全方案,以及 Service Fabric 应用程序和服务安全
  • (群集)通过配置 NSG 来限制子网和节点类型之间的流量流,从而应用网络分段和控制。
  • (群集)使用本机工具安全地管理应用程序机密和客户端证书。 应用程序机密应使用 Service Fabric 机密存储进行管理,并且应使用 Key Vault 管理证书。
  • (群集)请考虑自带负载均衡器,这样就可以使用内部负载均衡器,并为每个节点类型定义不同的负载均衡器和 NSG。
  • (群集)通过启用 Microsoft Entra 集成,允许用户使用其 Entra 凭据进行身份验证,从而安全地控制对群集的访问。 或者,可以使用群集客户端和管理员证书。 请勿在 Service Fabric Explorer 的用户之间分发群集客户端证书。
  • (群集和工作负荷)创建用于监视客户端证书到期日期的过程。
  • (群集和工作负荷)维护单独的群集,用于开发、过渡和生产。 生产环境通常需要比非生产环境更严格的安全控制,并且如果一个环境遭到入侵,彼此隔离环境可以增加一层安全保障。

建议

建议 好处
(群集)确保为应用程序部署和工作负荷打开正确的端口 此配置可确保 Service Fabric 资源与工作负荷的其余部分之间的通信受到保护。
(群集)使用 Service Fabric 机密存储来分发机密时,请使用单独的 数据加密证书 来加密值。 使用单独的加密证书可确保在证书之间隔离,降低单一故障点的风险,并允许更精细的访问控制。
(群集)将 访问控制列表(ACL) 应用于 Service Fabric 群集的客户端证书。 使用 ACL 可提供额外的身份验证级别,以便更精细地控制谁可以访问证书。
(群集)使用 资源请求和限制 来管理群集中节点的资源使用情况。 强制实施资源限制有助于确保一个服务不会消耗太多资源并耗尽其他服务。
(工作负荷)在 Service Fabric 应用程序中包含客户端证书。 让应用程序使用客户端证书进行身份验证可提供群集和工作负荷级别的安全性机会。
(工作负荷)使用 托管标识对 Azure 资源的 Service Fabric 应用程序进行身份验证。 使用托管标识可以安全地管理代码中的凭据,以便对各种服务进行身份验证,而无需在开发人员工作站或源代码管理中本地保存这些凭据。
(群集和工作负荷)在托管不受信任的应用程序时,请使用最适用的最强沙盒技术,移除对 Service Fabric 运行时的访问,并遵循 Service Fabric 的其他 最佳实践 遵循提供的最佳做法有助于确保仅允许受信任的和已验证的应用程序与关键组件交互,从而限制不受信任的应用程序对群集的正常作的影响。

成本优化

成本优化侧重于 检测支出模式、优先考虑关键领域的投资,以及优化其他 以满足组织预算,同时满足业务需求。

成本优化设计原则 为实现这些目标提供高级设计策略,并在与 Service Fabric 及其环境相关的技术设计中做出权衡。

设计清单

根据投资的成本优化设计评审核对清单开始实施您的设计策略。 微调设计,使工作负荷与为工作负荷分配的预算保持一致。 设计应使用正确的 Azure 功能,监视投资,并查找随时间推移进行优化的机会。

  • (工作负荷和群集)使用 Azure 定价计算器估算初始成本。 只需为创建 Service Fabric 群集时选择的计算实例、存储、网络资源和 IP 地址付费。 Service Fabric 本身提供的服务不收取任何费用。 要帮助您开始成本建模,请查看 示例成本计算过程以用于应用规划
  • (群集)选择适当的 VM SKU。 根据工作负荷特征选择 VM。 工作负荷是 CPU 密集型任务,还是运行可中断的进程?
  • (集群)选择适当的集群 SKU。 对生产环境使用“标准”,对非生产环境使用“基本”,除非有令人信服的理由不这样做。 在每个环境中使用适当的节点类型和大小。
  • (群集和工作负荷)选择适当的托管磁盘层和大小。 请查看 WAF 磁盘存储服务指南。 避免将 VM SKU 与临时磁盘产品/服务配合使用,以避免为不必要的资源付费。

建议

建议 好处
(群集)如果没有维护有状态性的需求,请考虑选择具有临时磁盘支持的 VM SKU。 充分利用您花钱购买的资源。 使用临时磁盘而不是托管磁盘可以降低无状态工作负荷的成本。
(群集和工作负荷)根据工作负荷需求调整 VM SKU 选择。 确保已经确定了正确的节点类型,即在规模集上托管的,以满足需求。 将所选内容与工作负荷需求相匹配有助于避免为不需要的昂贵 VM SKU 付费。
(群集和工作负荷)将 磁盘类型选择 与工作负荷要求保持一致。 选择正确的托管磁盘类型有助于避免为不需要的昂贵类型付费。

卓越运营

卓越运营主要侧重于开发实践、可观测性和发布管理等过程。

卓越运营设计原则 提供了一个高级设计策略,以实现工作负荷的操作要求的目标。

设计清单

根据卓越运营设计评审清单来开始实施设计策略,以定义与 Service Fabric 相关的可观测性、测试和部署。

  • (群集和工作负荷)将 Service Fabric 组件(包括群集、相关基础结构和应用程序本身)集成到监视和警报平台中。 有关详细指南,请参阅 监视最佳做法 一文。
  • (群集和工作负荷)使用 Service Fabric 运行状况模型 持续监视解决方案的运行状况。 此工具补充整体工作负荷运行状况模型
  • (群集和工作负荷)创建用于监视客户端证书到期日期的过程。 例如,Key Vault 提供一项功能,该功能在证书的生命周期 x% 已过时发送电子邮件。
  • (群集和工作负荷)使用持续集成和持续部署做法来管理群集部署。 使用专用的工具(如 Azure Pipelines 或 Github Actions)管理 CI/CD 管道,这样就可以使用适当的源代码管理策略集中管理所有环境中的所有工作负荷部署。

建议

建议 好处
(工作负荷)使用 Application Insights 监视工作负荷 Application Insights 为实时 Web 应用程序提供全面的应用程序性能监视(APM),使你可以收集和分析应用程序遥测数据,从而增强应用程序运行状况和性能监视。
(群集和工作负荷)使用 Azure Monitor 监视群集和容器基础结构事件 Azure Monitor 提供全面的监视和诊断功能,使你能够从应用程序和 Azure 基础结构收集和分析日志和指标。 Azure Monitor 与 Azure 平台(包括 Service Fabric)很好地集成。
(群集)在运行状况建模过程中实施适当的群集运行状况策略 通过策略,可以自定义从群集运行状况角度解释故障的方式。 例如,可以设置将群集视为出错之前可处于运行不正常状态的节点的最大容许百分比。
(群集)作为运行状况建模的一部分,实施适当的应用程序和服务类型运行状况策略 应用程序运行状况策略说明如何对应用程序及其子项进行事件和子项状态聚合评估。 当运行状况报告或子项处于“警告”或“错误”运行状况状态时,Service Fabric 会假设实体运行不正常。
(群集和工作负荷)使用 Azure Chaos Studio 将故障注入解决方案,以作为测试策略的一部分。 在解决方案中故意引入故障将有助于识别潜在的故障点并练习事件响应措施。
(群集和工作负荷)将 Azure Pipelines 用于持续集成和部署 (CI/CD) 解决方案 使用 CI/CD 解决方案(如 Azure Pipelines)可帮助你高效、一致、安全地管理部署。 Azure Pipelines 对 Service Fabric 部署具有原生支持。

性能效率

性能效率就是通过管理容量来保持用户体验,即使负载增加也不例外。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。

性能效率设计原则 提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。

设计清单

根据性能效率设计评审清单开始设计策略。 定义基于 Service Fabric 的关键绩效指标的基线。

  • (群集)充分利用工作负荷所需的性能优化和增强特性。 有关与基础计算平台相关的建议,请参阅 VM 服务指南
  • (群集)部署满足您的性能要求的 VM 和磁盘大小,以避免为未利用的容量产生不必要的费用。 确保能够轻松添加容量以满足未来的增长计划。
  • (工作负荷)了解 Service Fabric 支持的编程模型,并为工作负荷要求选择最佳模型。 每个编程模型都有独特的优点和缺点,而特定的工作负荷要求可能更适合某一个模型而不是其他模型。
  • (工作负荷)使用已建立的云体系结构模式设计工作负荷。 微服务事件驱动,以及后台处理体系结构模式都是 Service Fabric 应用程序设计的适当候选项。

建议

建议 好处
(群集)如果安全策略允许排除开源软件的进程和路径,请从 Windows Defender 中排除在 Windows VM 上运行的 Service Fabric 进程。 排除 Service Fabric 进程可降低 Windows Defender 产生的性能影响和资源消耗开销
(群集)请考虑对群集使用 自动缩放,以便在辅助节点类型上按需添加或减少节点。 通过监视和优化为工作负荷提供服务的节点量,自动缩放可降低管理开销和潜在业务影响。
(群集)请考虑使用加速网络 加速网络可实现高性能路径,从而绕过数据路径中的主机,从而减少对最苛刻的网络工作负荷的延迟、抖动和 CPU 利用率。
(群集)请考虑在主机 而不是 Azure 磁盘加密(ADE)中使用 加密。 通过在主机上加密 Azure 存储服务中的数据,主机加密改进了 ADE,因其能够支持所有操作系统类型和映像(包括自定义映像)以用于虚拟机。
(工作负荷)实现最适合您的工作负荷的 Service Fabric 编程模型 通过选择适当的编程模型,可以利用支持工作负载要求的内置功能,例如状态管理、并发和重用现有代码库。 还可以通过选择符合这些标准的编程模型来确保部署标准得到维护。
(群集和工作负荷)实现缩放以满足业务需求。 查找适合工作负荷的缩放机制。 可以通过缩放来实现解决方案的最大资源利用率。

Azure 策略

Azure 提供了一组与 Service Fabric 及其依赖项相关的大量内置策略。 可以通过 Azure Policy 审核上述一些建议。 例如,可以检查以下情况:

  • Service Fabric 群集可配置为区域冗余。
  • Service Fabric 群集的 ClusterProtectionLevel 属性设置为 EncryptAndSign
  • Service Fabric 群集配置为仅使用 Azure Active Directory 进行客户端身份验证。

为实现全面治理,请查看 Azure Policy 的内置定义,其中包括 Service Fabric 和其他可能影响 [cloud-infrastructure-area] 安全性的策略。

Azure 顾问建议

Azure 顾问是一名个性化的云顾问,可帮助你遵循最佳做法来优化 Azure 部署。 下面是一些建议,可帮助你提高 Service Fabric 的可靠性、安全性、成本效益、性能和卓越运营能力。

请查看 Azure Service Fabric 托管群集配置选项一文,了解创建和维护群集时拥有的所有选项的列表。

查看 Azure 应用程序体系结构基础知识,获取有关如何开发工作负荷的指导。 虽然 Service Fabric 只能用作容器托管平台,但使用架构良好的工作负载可以利用 Service Fabric 的完整功能。

使用 ARM 模板或通过 Azure 门户创建 Service Fabric 托管群集时,请使用这些建议: