Well-Architected Framework 觀點於 Azure Service Fabric
Azure Service Fabric 是分散式系統平臺,可讓您輕鬆地封裝、部署及管理可調整且可靠的微服務和容器。 這些資源會部署到與網路連線的一組虛擬或實體機器,稱為 叢集。
本文假設身為架構設計人員,您已檢閱 計算判定樹,並選擇 Service Fabric 作為工作負載的計算平臺。 本文中的指引提供架構建議,這些建議會對應至 Well-Architected Framework 支柱的原則。
重要
如何使用本指南
每個區段都有一個 設計檢查清單,該清單呈現關注的架構領域,以及針對技術範疇所調整的設計策略。
此外,也包含可協助具體化這些策略的技術功能建議。 這些建議並不代表 Azure Service Fabric 及其相依性可用之所有組態的完整清單。 相反地,他們會列出對應至設計觀點的主要建議。 使用建議來建置概念證明,或將現有的環境優化。
示範主要建議的基礎架構:Azure Service Fabric 上的微服務架構。
技術範圍
此檢閱著重於下列 Azure 資源的相關決策:
- Service Fabric
注意
本服務指南是以 虛擬機和擴展集 服務指南中找到的指導方針為基礎。 Service Fabric 節點是由 VM 擴展集所支援,因此請參閱該服務指南,以取得針對 Service Fabric 節點操作計算後端的建議。
使用 Azure Service Fabric 討論架構考慮和組態建議時,請務必區分 叢集 和 工作負載。 叢集設定是 Service Fabric 叢集管理員與其資源提供者之間的共同責任,而工作負載設定是開發人員的網域。 Azure Service Fabric 對於這兩個角色都有考慮和建議。
在下列 設計檢查清單 和 建議清單 中,會發出註記,以指出每個選擇是否適用於叢集架構、工作負載架構或兩者。
可靠性
可靠性支柱的目的是藉由 建置足夠的復原能力,以及從失敗快速復原的能力,來提供持續的功能。
可靠性設計原則 提供適用於個別元件、系統流程和整個系統的高階設計策略。
設計檢查清單
根據可靠性 的設計檢閱檢查清單,啟動您的設計策略。 請確定其與您業務需求的相關性,同時請記住 [產品獨特方面]。 擴充策略,以視需要包含更多方法。
- (叢集)根據工作負載的整體可靠度目標計量,判斷叢集的適當 可靠性層級。 您所識別之叢集的可靠層級會決定要針對主要節點類型部署的節點數目下限。 請參閱 容量規劃檔,以瞭解如何進行這些判斷。
- (叢集)針對重要的工作負載,請考慮針對 Service Fabric 叢集使用 可用性區域。
- (叢集)針對生產案例,請使用標準受控叢集 SKU 搭配 Silver 持久性層 (5 部虛擬機器)或更高版本。 此 SKU 提供比基本 SKU 更高的可靠性功能,這應該用於非生產案例。
- (叢集)為您的工作負載建立其他次要節點類型,以隔離不同的工作負載類型。 這可協助您將前端服務與後端服務分開,讓您能夠獨立管理及調整這些服務。 每個 節點類型都由其自己的擴展集支持。
建議
建議 | 好處 |
---|---|
(叢集)API 管理 (APIM) 可以 直接與 Service Fabric 整合。 考慮使用它來公開和分散叢集上託管 API 的橫向功能。 | APIM 是功能豐富的應用程式閘道,可協助您安全地發佈、管理及監視部署至 Service Fabric 叢集的 API。 |
(工作負載)針對有狀態的工作負載情境,請考慮使用 Reliable Services。 | 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。 除非有令人信服的理由,否則請針對非生產環境使用 Standard 和 Basic。 在每個環境中使用適當的節點類型和大小。
- (叢集和工作負載)選取適當的受控磁碟層和大小。 檢閱適用於磁碟記憶體 的 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 監視器來監視叢集和容器基礎結構事件。 | Azure 監視器提供完整的監視和診斷功能,可讓您從應用程式和 Azure 基礎結構收集及分析記錄和計量。 Azure 監視器與 Azure 平臺整合良好,包括 Service Fabric。 |
(叢集)實行適當的 叢集健康政策, 作為健康模型的一部分。 | 原則可讓您自定義從叢集健康情況觀點解譯失敗的方式。 例如,您可以在叢集視為錯誤之前,設定可狀況不良的節點最大容許百分比。 |
(叢集)實作適當的 應用程式和服務類型健康情況原則, 作為健康情況模型化的一部分。 | 應用程式健康原則描述如何對應用程式及其子項目進行事件評估和子狀態的匯總。 當 Service Fabric 假設實體有健康健康狀況報告,或其子系位於警告或錯誤健康狀態時,則認為實體是不健康的。 |
(叢集和工作負載)使用 Azure Chaos Studio,將故障注入你的解決方案,這是測試策略的一部分。 | 故意將故障引入您的解決方案可協助您識別潛在的失敗點,並練習您的事件回應量值。 |
(叢集和工作負載)使用 Azure Pipelines 進行持續整合和部署 (CI/CD) 解決方案。 | 使用 AZURE Pipelines 之類的 CI/CD 解決方案,可協助您有效率、一致且安全地管理部署。 Azure Pipelines 原生支援 Service Fabric 的部署。 |
效能效率
效能效率是關於 即使負載增加,透過管理容量來維持用戶體驗。 此策略包括調整資源、識別和優化潛在的瓶頸,以及優化尖峰效能。
效能效率設計原則 提供針對預期使用量達成這些容量目標的高階設計策略。
設計檢查清單
根據效能效率 的設計檢閱檢查清單,啟動您的設計策略。 定義以 Service Fabric 關鍵效能指標為基礎的基準。
- (叢集)利用工作負載所需的效能優化和增強功能。 如需與基礎計算平臺相關的建議,請參閱 VM 服務指南。
- (叢集)部署符合您效能需求的 VM 和磁碟大小,而不會對未使用的容量產生不必要的費用。 請確定您可以輕鬆地新增容量,以符合您未來的成長計劃。
- (工作負載)瞭解 Service Fabric 支援的程式設計模型,併為您的工作負載需求選擇最佳模型。 每個程序設計模型都有獨特的優點和缺點,而且您的特定工作負載需求可能會比其他人更符合一個模型。
- (工作負載)使用已建立的雲端架構模式來設計工作負載。 Microsservices、事件驅動,以及 背景處理 架構模式都是 Service Fabric 應用程式設計的良好候選專案。
建議
建議 | 好處 |
---|---|
(叢集) 如果您的安全策略可讓您排除開放原始碼軟體的進程和路徑,請從 Windows Defender 排除 Windows VM 上執行的 Service Fabric 進程。 | 排除 Service Fabric 程式可降低 Windows Defender 所產生的效能影響和資源耗用量額外負荷 |
(叢集)請考慮針對叢集使用 自動調整,以在次要節點類型上視需要新增或減少節點。 | 自動調整可藉由監視和優化服務工作負載的節點數量,以減少管理額外負荷和潛在的業務影響。 |
(叢集)請考慮使用 加速網路。 | 加速網路能夠提供一條高效能的通道,從資料路徑中繞過主機,從而減少最苛刻網路工作負載的延遲、抖動和 CPU 使用率。 |
(叢集)請考慮在主機 使用 加密,而不是使用 Azure 磁碟加密 (ADE)。 | 在主機上進行的加密可通過支援所有操作系統類型和映像(包括自定義映像),及在 Azure 儲存服務中加密數據,來改進 ADE 為您的虛擬機器提供的支援。 |
(工作負載)實作 Service Fabric 程式設計模型, 最適合您的工作負載。 | 選擇適當的程式設計模型可讓您利用支援工作負載需求的內建功能,例如狀態管理、並行存取,以及重複使用現有的程式代碼基底。 您也可以選取符合這些標準的程式設計模型,以確保您的部署標準得以維護。 |
(叢集和工作負載)實施擴展以符合您的業務需求。 尋找適合您工作負載的擴充機制。。 | 您可以使用調整來最大化解決方案的資源使用率。 |
Azure 原則
Azure 提供一組與 Service Fabric 及其相依性相關的大量內建原則。 您可以透過 Azure 原則稽核上述一些建議。 例如,您可以檢查是否:
- Service Fabric 叢集設定為區域備援。
- Service Fabric 叢集的 ClusterProtectionLevel 属性設定為
EncryptAndSign
。 - Service Fabric 叢集設定為只使用 Azure Active Directory 進行客戶端驗證。
如需全面治理,請檢閱 Service Fabric 的 Azure 原則內建定義,以及其他可能會影響 [cloud-infrastructure-area] 安全性的原則。
Azure Advisor 建議
Azure Advisor 是個人化的雲端顧問,可協助您遵循最佳做法來優化 Azure 部署。 以下是一些建議,可協助您改善 Service Fabric 的可靠性、安全性、成本效益、效能和營運卓越性。
相關內容
請參閱 Azure Service Fabric 受控叢集組態選項一文,以取得您在建立和維護叢集時擁有的所有選項清單。
如需如何開發工作負載的指引,請檢閱 Azure 應用程式架構基本概念。 雖然 Service Fabric 只能作為容器裝載平臺使用,但使用架構完善的工作負載會利用 Service Fabric 的完整功能。
當您使用 ARM 範本或透過 Azure 入口網站建立 Service Fabric 受控叢集時,請使用這些建議: