共用方式為


多租使用者控制平面的考慮

多租戶解決方案有多個平面,每個平面都有各自的責任。 數據平面可讓使用者和用戶端與系統互動。 控制平面可跨所有租使用者管理較高層級的工作,例如訪問控制、布建和系統維護,以支援平台系統管理員的工作。

顯示邏輯系統設計的圖表。單一控制平面可跨多個租使用者特定數據平面提供管理。

本文提供控制平面責任的相關信息,以及如何設計符合您需求的控制平面。

例如,請考慮管理財務記錄的記賬系統。 多個租使用者將其財務記錄儲存在系統中。 當使用者存取系統以檢視並輸入其財務記錄時,他們會使用數據平面。 數據平面可能是解決方案的主要應用程式元件。 租使用者通常會將它視為使用系統的主要介面。

相反地,控制平面會讓新租用戶上線、為每個租使用者建立資料庫,以及執行其他管理和維護作業。 若沒有控制平面,系統管理員必須依賴手動程式。 在某些情況下,數據平面和控制平面工作會變成糾纏,這會使解決方案變得複雜。

許多複雜的系統包括控制平面。 例如,Azure 控制平面 Azure Resource Manager 是一組部署和設定 Azure 資源的 API、工具和後端元件。 Kubernetes 控制平面會管理許多工作,例如將 Kubernetes Pod 放置在工作節點上。 幾乎所有的軟體即服務 (SaaS) 解決方案都有控制平面來處理跨租使用者工作。

當您設計多租用戶解決方案時,需要考慮控制平面。 下列各節說明如何設定控制平面的範圍和設計。

控制平面的責任

控制平面或其責任沒有單一範本。 您的解決方案需求和架構會決定控制平面需要執行的動作,以及其運作方式。 在一些多租用戶解決方案中,控制平面具有廣泛的責任,而且本身是一個複雜的系統。 在其他多租用戶解決方案中,控制平面只有基本責任。

一般而言,控制平面可能有許多下列核心責任:

  • 資源管理: 其會布建和管理服務工作負載的系統資源,包括租使用者特定的資源。 控制平面可能會 叫用及協調部署管線 ,或直接執行部署作業。

  • 資源組態: 它會 重新設定共用資源 以辨識新的租使用者。 例如,控制平面可能會設定網路路由,以確保連入流量 到達正確的租用戶資源,或者您可能需要調整您的資源容量。

  • 租用戶設定: 它會儲存和管理每個租用戶的設定。

  • 租戶生命週期管理: 它會處理 租戶生命週期事件,包括上線、遷移和下線租戶。

  • 遙測: 它會追蹤每個租戶使用您功能的狀況和系統效能。

  • 取用追蹤: 它會 測量並匯總每個租用戶的資源耗用量。 取用計量可能會通知您的計費系統或支持資源控管。

如果您使用 完全多租使用者模型 且未部署租使用者特定資源,基本控制平面可能只會追蹤租使用者及其相關聯的元數據。 例如,當新的租用戶註冊您的服務時,控制平面可以更新資料庫中的適當記錄,讓系統的其餘部分可以處理新租使用者的要求。

相反地,如果您的解決方案使用需要租使用者特定基礎結構的部署模型,例如 自動化單一租使用者模型,您的控制平面可能會承擔更多責任。 當您將新租用戶上線時,可能需要部署或重新設定 Azure 基礎結構。 在此案例中,控制平面可能會與其他工具的控制平面互動,例如 Resource Manager 或 Kubernetes 控制平面。

進階控制平面可能會承擔更多責任:

  • 自動化維護作業: 它會執行一般維護作業,包括刪除或封存舊數據、建立和管理資料庫索引,以及輪替秘密和密碼編譯憑證。

  • 租戶安置:它會根據標記使用目標、租戶需求和 箱型填充策略等準則,將租戶配置給現有的部署或標記。

  • 租使用者重新平衡: 它會在部署戳記變更時,重新平衡現有的租使用者。

  • 客戶活動追蹤: 它與外部客戶管理解決方案整合,例如 Dynamics 365,以追蹤客戶活動。

設定控制平面的範圍

請仔細考慮為解決方案建置控制平面所花費多少心力。 控制平面不會直接提供立即的客戶價值,因此很難為設計及建置高品質控制平面的工程工作辯護。 不過,隨著系統成長和調整,您越來越需要自動化管理和作業,以跟上您的成長。

在某些情況下,您可能不需要完全控制平面。 如果您的系統少於10個租使用者,此方法可能會運作。 您的小組可以承擔控制平面的責任,並使用手動操作和流程來引進和管理租用戶。 不過,您仍然應該有一個流程並維護一個集中位置,以追蹤您的租戶及其配置設定。

小提示

如果您未完整建立控制平台,您仍應對管理流程採取系統化的方法:

  • 徹底記錄您的程式。
  • 盡可能為您的管理作業建立及重複使用腳本。

如果您需要在未來自動化程式,您的文件和腳本可以形成控制平面的基礎。

隨著租戶數量增加,您可以受益於追蹤每個租戶,並在您的資源和租戶群中套用監控。 您可能會注意到您的小組在租使用者管理上花費了越來越多的時間和精力。 或者,您可能會注意到錯誤或作業問題,因為小組成員執行管理工作的方式不一致。 如果發生這些情況,請考慮建立更全面的控制平面,以承擔這些責任。

備註

如果您提供自助租使用者管理,則需要在旅程初期的控制平面。 您可以選擇建立基本控制平面,並只自動化一些最常用的功能。 您可以隨著時間逐漸新增更多功能。

設計控制平面

在您判斷控制平面的需求和範圍之後,您需要設計並建構它。 控制平面是重要的元件,它應該與架構的任何其他部分相同的規劃層級。

考慮事項

這些考量能實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Well-Architected Framework

控制平面會作為自己的系統運作,因此當您設計一個架構時,您應該考慮 Well-Architected 架構 的所有五個要素。 下列各節會醒目提示要關注的特定區域。

可靠性

可靠性有助於確保您的應用程式可以符合您對客戶的承諾。 如需詳細資訊,請參閱可靠性的設計檢閱檢查清單

控制層通常作為任務關鍵元件。 您必須規劃控制平面所需的適當的復原性及可靠性層級。

請考慮控制平面中斷的影響。 在極端情況下,中斷可能會讓您的整個解決方案無法使用。 即使您的控制平面不是單一故障點,中斷可能會導致下列問題:

  • 您的系統無法讓新租用戶上線,這可能會影響您的銷售和業務成長。

  • 您的系統無法管理現有的租使用者,這會導致對支援小組進行更多呼叫。

  • 您無法測量租使用者的使用量,或為其使用量計費,這會導致收入損失。

  • 您無法停用或重新設定租使用者以回應安全性事件。

  • 維護債務累積,導致系統長期受損。 例如,如果您的解決方案需要夜間清除舊數據,您的磁碟可能會滿或效能降低。

定義控制平面 的服務等級目標 ,包括可用性目標、復原時間目標 (RTO) 和恢復點目標 (RPO)。 您為控制平面設定的目標可能會與您為客戶提供的目標不同。

安全性

安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱安全性的設計檢閱檢查清單

控制平面通常是高度特殊許可權的系統。 控制平面內的安全性問題可能會產生災難性的後果。 視其設計和功能而定,控制平面可能會容易受到許多不同類型的攻擊,包括下列類型:

  • 未經授權存取憑證: 控制面板可能會存取所有租用戶的密鑰和憑證。 擁有控制平面存取權的攻擊者,可能會存取任意租戶的數據或資源。

  • 濫用部署功能: 控制平面通常會將新的資源部署至 Azure。 攻擊者可能會利用控制平面將自己的資源部署到您的訂用帳戶,並可能會產生大量費用。

  • 拒絕服務: 如果攻擊者成功禁用您的控制平面,可能會對您的系統和企業造成立即和長期的損害。 如需控制平面停機的潛在後果,請參閱 可靠性

當您設計和實作控制平面時,必須遵循安全性最佳做法並建立完整的威脅模型。 此模型應該識別並降低解決方案中的潛在威脅和安全性問題。

卓越營運

卓越營運涵蓋部署應用程式並使其持續在生產環境中執行的作業流程。 如需詳細資訊,請參閱卓越營運的設計檢閱檢查清單

控制平面是關鍵元件,因此您應該仔細考慮如何在生產環境中部署及運行它。

如同解決方案的其他部分,您應該部署控制平面的非生產實例,以便徹底測試其功能。 如果您的控制平面執行配置作業,請考慮,您的非生產控制平面如何與您的 Azure 環境互動,以及要將非生產資源部署到哪個 Azure 訂用帳戶。 規劃如何快速清除測試資源,使其不會意外累積費用。

同時規劃如何控管小組對控制平面的存取權。 只授與小組成員執行其職責所需的許可權。 這種方法有助於防止安全性事件,並減少意外設定錯誤的影響。

元件

沒有用於建置控制平面的單一範本。 您設計和建置的元件取決於您的需求。 大部分的控制平面都包含 API 和背景工作元件。 在某些解決方案中,控制平面也包含使用者介面,您的小組甚至您的客戶可能會使用。

隔離控制平面與租使用者工作負載

您應該將控制平面的資源與用於租戶數據平面的資源分開。 例如,使用不同的資料庫伺服器、應用程式伺服器和其他元件。 將控制平面資源保留在專用的 Azure 資源群組中,與租使用者特定資源分開。

控制平面隔離提供下列優點:

  • 您可以個別設定調整。 例如,您的控制平面可能會有一致的資源需求,而租用戶的資源可能會根據其需求彈性調整。

  • 清楚的分隔會在控制平面和資料平面之間建立隔板,這有助於防止鄰近噪音問題蔓延到您的解決方案。

  • 控制平面通常是具有高層級存取權的高許可權系統。 控制平面隔離可降低安全性弱點的可能性,讓攻擊者在整個系統中提高其許可權。

  • 您可以部署不同的網路和防火牆組態。 數據平面和控制平面通常需要不同類型的網路存取。

協調長時間執行作業的序列

控制平面通常會執行長時間運行的操作,需要協調多個系統。 這些作業也可以有複雜的失敗模式,因此您必須選擇支援長時間執行作業或工作流程的技術。

例如,當您將新租用戶上線時,控制平面可能會依序執行下列動作:

  1. 部署新的資料庫。 此 Azure 部署作業可能需要幾分鐘的時間才能完成。

  2. 更新您的租用戶元數據目錄。 此動作可能涉及對 Azure SQL 資料庫執行命令。

  3. 傳送歡迎電子郵件給新的租使用者。 此動作會叫用非Microsoft API 來傳送電子郵件。

  4. 更新您的計費系統,以準備向新租用戶開立發票。 此動作會叫用偶爾會失敗的非Microsoft API。

  5. 更新您的客戶關係管理 (CRM) 系統以追蹤新的租使用者。 此動作會叫用非Microsoft API。

如果順序中的任何步驟失敗,請考慮如何回應:

  • 重試失敗的作業。 例如,如果步驟 2 中的 Azure SQL 命令因暫時性錯誤而失敗,您可以重試它。

  • 繼續至下個步驟。 例如,您可能會決定允許更新計費系統失敗,因為您的銷售小組稍後可以手動新增客戶。

  • 放棄工作流程並觸發手動復原程式。

也請考慮每個失敗案例的用戶體驗。

管理共用元件

控制平面必須辨識任何共享的元件,而不是專用於特定租使用者。 某些元件可能會在戳記內的所有租用戶之間共用。 其他元件可能會在區域中的所有戳記之間共用,或甚至跨所有區域和戳記全域共用。 當您上線、重新設定或卸除租使用者時,控制平面必須知道如何處理這些共用元件。

新增或移除租使用者時,某些共用元件需要重新設定。 例如,假設您有全域共用的 Azure Front Door 配置檔。 如果您新增具有自訂網域名稱的租戶,您的控制平面可能需要更新設定檔的配置,以將該網域名稱的要求導向至正確的應用程式。 同樣地,當租使用者下線時,您的控制平面可能需要從 Azure Front Door 配置檔中移除自定義功能變數名稱,以避免 子域接管攻擊

共用元件可能有控制平面必須遵循的複雜調整規則。 例如,如果您使用 量化封裝 方法來部署租用戶的資料庫,控制平面必須將每個新資料庫指派給 Azure SQL 彈性集區。

您可能需要判斷,針對每新增十個資料庫時,是否需要增加分配給集區的資源。 當您新增或移除租使用者時,您的控制平面必須重新評估集區的設定,並決定是否要變更集區的資源。 當您達到可以指派給單一彈性集區的資料庫數目上限時,您必須建立新的集區,並將該集區用於新的租用戶資料庫。 您的控制平面必須管理每個共享元件,包括在發生變更時調整大小和重新設定它們。

當控制平面管理共用元件時,請務必注意競爭狀況,當多個作業平行發生時,可能會發生這種狀況。 例如,如果您在將新租用戶上線的同時,將不同的租用戶下線,您必須確保最終結束狀態一致,並符合您的調整需求。

使用多個控制平面

在複雜的環境中,您可能需要使用多個管理不同區域的控制平面。 許多多租用戶解決方案遵循 部署戳記模式 ,以及跨多個戳記的分區租使用者。 在此模式中,您可以為全域和戳記責任建立個別的控制平面。

小提示

跨多個控制平面協調會增加複雜性,因此請嘗試將您所建置的控制平面數目降至最低。 大部分的解決方案只需要一個控制平面。

全域控制平面

全域控制平面通常會處理租用戶的整體管理和追蹤。 全域控制平面可以承擔下列責任:

  • 租使用者放置: 全域控制平面會決定租用戶應該使用的戳記。 根據租用戶區域、每個戳記的容量使用量,以及租用戶的服務等級需求等因素,可能會做出此判斷。

  • 租戶上線和生命週期管理:這些責任包括追蹤所有部署中的所有租戶。

戳記控制平面

每個部署標籤都包含自己的標籤控制平面,負責管理分配給該標籤的租戶和資源。 戳記控制平面可以承擔下列責任:

  • 租戶資源布建: 它會在平臺內建立和管理租戶特定資源,例如資料庫和儲存容器。

  • 共用資源管理: 它會監視 共用資源的 耗用量,並在其接近最大容量時部署新的實例。

  • 維護作業: 它會處理戳記內的工作,例如資料庫索引管理和清除作業。

每個戳記的控制平面會與全域控制平面協調。 例如,如果新的租用戶註冊,全球控制層一開始可能會為租用戶資源選擇一個標籤。 然後,全域控制平面會提示戳記的控制平面為租使用者建立必要的資源。

下圖顯示兩個控制平面如何在單一系統中共存。

顯示邏輯系統設計的圖表。該設計包含全域控制平面和標記控制平面。

租使用者控制平面

租使用者可能會使用租用戶層級控制平面來管理自己的邏輯或實體資源。 租戶控制平面可以承擔下列責任:

  • 組態管理: 它會處理租使用者特定設定,例如使用者存取。

  • 租使用者起始的維護作業: 它支援備份數據或下載先前備份等作業。

  • 更新管理: 如果您允許租使用者 控制其應用程式自己的更新,它會執行更新。

下圖顯示具有全域控制平面、戳記控制平面和租使用者控制平面的複雜系統。

此圖顯示邏輯系統設計。設計具有全域控制平面、區域控制平面和租戶控制平面。

貢獻者們

本文由 Microsoft 維護。 下列參與者撰寫本文。

主要作者:

  • John Downs |Azure 模式和實務的主要軟體工程師

其他貢獻者:

若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。

後續步驟