此參考架構會在 Azure 登陸區域中部署 Azure Spring Apps 基準架構。
在此案例中,您的組織預期工作負載會使用中央小組 (平臺) 集中式管理範例所管理的同盟資源,包括內部部署連線的網路、身分識別存取管理和原則。 本指南假設組織已採用 Azure 登陸區域,以套用一致的治理,並節省多個工作負載的成本。
重要
此參考架構是 雲端採用架構 中 Azure Spring Apps 登陸區域案例指引的一部分。 最佳做法適用於 想要符合上述期望的工作負載擁有者 。
工作負載會部署在 組織布建的 Azure 應用程式登陸區域 訂用帳戶中。 身為工作負載擁有者,您擁有此訂用帳戶中的資源。
工作負載取決於 共享資源的 Azure 平臺登陸區域 訂用帳戶。 平臺小組擁有這些資源。 不過,您必須負責驅動這些小組的需求,讓您的工作負載如預期般運作。 本指南將這些需求標註為 平台小組。
強烈建議您瞭解 Azure 登陸區域的概念。
此架構中所做的設計選擇涵蓋在關鍵技術設計領域。 如需詳細資訊,請參閱 雲端採用架構 中的 Azure Spring Apps 登陸區域。
提示
此架構是由 GitHub 上的範例實 作所支援,可說明一些設計選擇。 請考慮實作作為生產環境的第一個步驟。
架構
下圖描述此方法的架構:
此架構的一般用法包括:
- 私人應用程式:在混合式雲端環境中部署的內部應用程式。
- 公用應用程式:外部面向的應用程式。
這些使用案例類似,但安全性和網路流量規則的設定除外。
元件
下列各節說明此架構的元件。 元件會根據擁有權責任來劃分,以協助您識別與組織平臺小組共享的內容。 如需 Azure 服務的產品檔,請參閱 相關資源 一節。
應用程式小組擁有的資源
您的小組負責建立和維護下列資源。
Azure Spring Apps Standard 會在 Azure 中裝載 Java Spring Boot 應用程式。
Azure 應用程式閘道 Standard_v2是將連入 Web 流量路由傳送至 Azure Spring Apps 的反向 Proxy。 此 SKU 已整合 Azure Web 應用程式防火牆,可檢查 Open Web Application Security Project (OWASP) 弱點的流量。
Azure 虛擬機器 可作為管理作業的跳板。
適用於 MySQL 的 Azure 資料庫 儲存應用程式數據。
Azure 金鑰保存庫 會儲存秘密和組態,例如資料庫的 連接字串。
Log Analytics 是 Azure 監視器的一項功能,也稱為 Azure 監視器記錄。 Log Analytics 是監視接收,可儲存來自應用程式和 Azure 服務的記錄和計量。
Azure 應用程式 Insights 會作為應用程式效能管理 (APM) 工具來收集所有應用程式監視數據,並將其直接儲存在 Log Analytics 內。
平台團隊擁有的資源
此架構假設下列資源已經存在。 組織的核心小組擁有並維護這些資源。 您的應用程式相依於這些服務,以減少作業額外負荷並優化成本。
Azure 防火牆 會檢查和限制輸出流量。
Azure Bastion 可讓您安全地存取管理跳躍方塊。
Azure ExpressRoute 提供從內部部署到 Azure 基礎結構的私人連線。
Azure DNS 提供跨單位名稱解析。
Azure VPN 閘道 將應用程式與內部部署網路中遠端小組連線。
應用程式考慮
參考實作包含範例應用程式,說明裝載在 Azure Spring Apps 實例中的一般微服務應用程式。 下列各節提供裝載應用程式的詳細數據。 如需詳細資訊,請參閱 PetClinic 存放區範例。
服務探索
在微服務模式中,必須支援服務登錄功能,才能路由傳送使用者要求和服務對服務通訊。
服務應該能夠與其他服務通訊。 當新的實例繁衍時,它們會新增至登錄,以便動態探索它們。 在此架構中, Azure Spring Apps 已啟用受控 Spring Cloud Service Registry (OSS )。 此服務會維護即時應用程式實例的登錄、啟用用戶端負載平衡,並將服務提供者與用戶端分離,而不需要依賴域名服務 (DNS)。
Azure Spring Apps 實例會實作 閘道路由 模式,為外部流量提供單一進入點。 閘道會將連入要求路由傳送至登錄中找到的作用中服務實例。 在此設計中,模式是使用 Spring Cloud Gateway 的開放原始碼實作來實作。 它提供一個功能集,其中包含驗證和授權、復原功能和速率限制。
組態伺服器
針對微服務,組態數據必須與程式代碼分開。 在此架構中, Azure Spring Apps 組態伺服器 可透過支援本機記憶體和 Git 存放庫的插入式存放庫來管理資源。
備援性
您可以在建立 Azure Spring Apps 實例時使用可用性區域。
透過這項功能,Azure Spring Apps 會自動將基本資源分散到基礎 Azure 基礎結構的邏輯區段。 這可以提供更高等級的可用性,並且在硬體故障或計劃性維護事件中提供保護。
區域備援可確保基礎虛擬機 (VM) 節點平均分散到所有可用性區域。 不過,區域備援並不保證甚至會散發應用程式實例。 如果應用程式實例因為其所在區域關閉而失敗,Azure Spring Apps 會在另一個可用性區域的節點上,為此應用程式建立新的應用程式實例。
如果您在 Azure Spring Apps 中啟用自己的資源,例如您自己的永續性記憶體,請啟用資源的區域備援。 如需詳細資訊,請參閱如何在 Azure Spring 應用程式中啟用您自己的永續性儲存體。
所有區域都不支援可用性區域。 若要了解哪些區域支援可用性區域,請參閱具有可用性區域支援的 Azure 區域。
延展性
Azure Spring Apps 提供 現成的自動調整 功能,可讓應用程式根據計量閾值或在特定時間範圍內進行調整。 當應用程式需要相應增加或相應放大以響應不斷變化的需求時,建議自動調整。
Azure Spring Apps 也支持藉由調整每個實例的 CPU、記憶體/GB 和應用程式實例計數,手動調整您的應用程式。 這種類型的調整適用於您可能想要針對特定應用程式執行的一次性調整活動。 調整值以符合應用程式的調整需求,並確定您的設定符合每個屬性的最大限制。
重要
藉由調整設定來手動調整應用程式,與 Azure 入口網站 中自動調整設定的手動調整選項不同。
網路考量
在此設計中,工作負載取決於平臺小組所擁有的資源,以存取內部部署資源、控制輸出流量等等。 如需詳細資訊,請參閱 Azure Spring Apps 登陸區域:網路拓撲和連線能力。
網路拓撲
平臺小組會決定網路拓撲。 此架構中假設有中樞輪輻拓撲。
中樞虛擬網路
線上訂用帳戶包含整個組織共用的中樞虛擬網路。 網路包含 平臺小組所擁有和維護的網路資源 。 下列平臺小組資源在此架構的範圍內:
- Azure 防火牆 控制因特網的輸出流量。
- Azure Bastion 可保護管理跳躍方塊的存取權。
輪輻虛擬網路
應用程式登陸區域至少有一個預先布建的虛擬網路已對等互連至中樞網路。 您擁有此網路中的資源,例如路由傳送和保護從因特網到 Azure Spring Apps 的輸入 HTTP/秒連線的負載平衡器。
預先布建的虛擬網路和對等互連必須能夠支援工作負載的預期成長。 評估虛擬網路大小,並定期與平臺小組評估需求。 如需詳細資訊,請參閱 虛擬網路需求。
重要
平臺小組
- 在建立的虛擬網路上指派 Azure Spring Apps 資源提供者
Owner
許可權。 - 為參與對等互連的虛擬網路提供不同的位址。
- 配置足以包含服務運行時間和部署資源的IP位址空間,也支援延展性。
VNet 插入和子網
Azure Spring Apps 會透過 VNET 插入 程式部署到網路。 此程式會將應用程式與因特網、專用網中的系統、其他 Azure 服務,甚至是服務運行時間隔離。 根據網路規則,允許或拒絕來自應用程式的輸入和輸出流量。
隔離是透過子網達成的。 您必須負責配置輪輻虛擬網路中的子網。 Azure Spring Apps 需要服務運行時間和 Java Spring Boot 應用程式的兩個專用子網。
子網必須專用於單一 Azure Spring Apps 實例。 多個實例無法共用相同的子網。
每個子網的大小下限為 /28。 實際大小取決於 Azure Spring Apps 可支援的應用程式實例數目。 如需詳細資訊,請參閱 使用較小的子網範圍。
警告
選取的子網大小無法與現有的虛擬網路位址空間重疊。 大小也不應該與任何對等互連或內部部署子網位址範圍重疊。
網路控制
Azure 應用程式閘道,Web 應用程式防火牆 會限制從因特網到輪輻虛擬網路的輸入流量。 Web 應用程式防火牆 規則允許或拒絕 HTTP/s 連線。
網路內的流量會使用子網上的網路安全組 (NSG) 來控制。 NSG 會根據設定的IP位址和埠來篩選流量。 在此設計中,NSG 會放在所有子網上。 Azure Bastion 子網允許來自因特網、閘道服務、負載平衡器和虛擬網路的 HTTPS 流量。 只允許從子網對虛擬網路進行 RDP 和 SSH 通訊。
私人鏈接可用來控制 Azure Spring Apps 與其他 Azure 服務之間的連線,例如密鑰保存庫和資料庫的存取。 私人端點會放在個別的子網中。
應用程式主機 DNS 記錄應該儲存在 Azure 私用 DNS,以確保在地理失敗期間持續可用性。
雖然連線訂用帳戶具有私人 DNS 區域,但請建立您自己的 Azure 私用 DNS 區域,以支援私人端點存取的服務。
重要
平臺小組
- 將 Azure 私用 DNS 區域委派給應用程式小組。
- 在中樞網路中,將 DNS 伺服器值設定為 [預設] (Azure 提供), 以支援應用程式小組所管理的私人 DNS 區域。
必須限制來自虛擬網路的輸出流量,以防止數據外洩攻擊。 此流量會透過集中式 Azure 防火牆(下一個躍點)路由傳送,以允許或拒絕流量使用完整域名 (FQDN)。
重要
平臺小組
- 建立自定義路由的UDR。
- 指派 Azure 原則來封鎖應用程式小組建立沒有新路由表的子網。
- 為應用程式小組提供適當的角色型訪問控制 (RBAC) 許可權,以便根據工作負載需求擴充路由。
身分識別與存取權管理
工作負載的身分識別實作必須與組織最佳做法一致,以確保應用程式不會違反組織安全性或治理界限。 如需詳細資訊,請參閱 Azure Spring Apps 登陸區域:身分識別和存取管理。
建議Microsoft Entra標識符,以驗證與 Azure Spring Apps 實例互動的用戶和服務。
建議的方法是為應用程式啟用 Azure 資源的 Microsoft Entra 受控識別,讓應用程式能夠對其他服務進行自我驗證。 在此架構中,系統會使用系統指派的受控識別,以方便管理。
若要進行授權,請在授與許可權時套用最低許可權原則,以使用 Azure 角色型 存取控制 (RBAC)。
監視功能考量
Azure 登陸區域平臺會在管理訂用帳戶中提供共用的可觀察性資源。 不過,建議布建您自己的監視資源,以簡化工作負載的整體管理。 如需詳細資訊,請參閱 Azure Spring Apps 登陸區域:監視作業。
此架構會建立下列資源:
- Azure 應用程式 Insights 是 Application 效能監視器 ing (APM) 解決方案,並透過 Java 代理程式完全整合到服務中。 此代理程式可讓您查看所有已部署的應用程式和相依性,而不需要額外的程序代碼。
- Azure Log Analytics 工作區是從 Azure 服務和應用程式收集的所有記錄和計量的整合接收。
設定 Azure Spring Apps 實例,將診斷記錄從應用程式傳送至布建的 Log Analytics 工作區。 如需詳細資訊,請參閱 監視應用程式端對端。
收集其他 Azure 服務的記錄和計量。 啟動診斷已啟用跳躍方塊,因此您可以在虛擬機開機時擷取事件。
設定診斷設定 ,將所有其他 Azure 資源的資源記錄傳送至 Log Analytics 工作區。 在 資源記錄 路由傳送至目的地之前,不會收集這些記錄。 每個 Azure 資源都需要自己的診斷設定。
來自多個工作區的數據相互關聯
工作負載及其基礎結構元件所產生的記錄和計量會儲存在工作負載的Log Analytics工作區中。 不過,集中式服務所產生的記錄和計量,例如 Active Directory 和 Azure 防火牆 會儲存至由平臺小組管理的中央 Log Analytics 工作區。 將來自不同接收的數據相互關聯可能會導致複雜度。
請考慮使用者流程的案例,其中工作負載與集中式服務有相依性。 部分數據可能會收集到工作負載層級,並導出至與平台記錄相互關聯的中央 Log Analytics 工作區。
不過,其他專案可能只存在於工作負載的工作區,因為數據量、格式互操作性或安全性限制等問題。 單一使用者流程跨兩個或多個工作區存在的不相關記錄專案,可能會更難針對某些問題進行疑難解答。 這些新增的複雜性需要小組共同合作,以針對應用程式事件進行疑難解答。
若要協助進行這種類型的共同作業,請熟悉貴組織所設定的程式。 發生安全性事件時,可能會要求工作負載層級系統管理員檢閱其系統記錄是否有惡意活動的跡象,或將其記錄複本提供給事件處理程式,以進行進一步分析。 當工作負載系統管理員針對應用程式問題進行疑難解答時,可能需要平台系統管理員的協助,以將企業網路、安全性或其他平臺服務的記錄專案相互關聯。
重要
平臺小組
- 授與 RBAC 查詢和讀取相關平台資源的記錄接收。
- 啟用、
AzureFirewallNetworkRule
和AzureFirewallDnsProxy
的AzureFirewallApplicationRule
記錄。 應用程式小組必須監視來自應用程式的流量,以及向 DNS 伺服器提出的要求。 - 授與應用程式小組足夠的許可權來執行其作業。
如需詳細資訊,請參閱 Azure Spring Apps 登陸區域:監視作業。
健康情況探查
Azure 應用程式閘道 會使用健康情況探查來確保連入流量會路由傳送至回應式後端實例。 建議使用 Azure Spring Apps 整備、即時性和啟動探查。 如果失敗,這些探查有助於正常終止。 如需詳細資訊,請參閱 如何設定健康情況探查。
安全性考量
集中式小組在平臺中提供網路和身分識別控制。 不過,工作負載應具有安全性能供性,以減少受攻擊面。 如需詳細資訊,請參閱 Azure Spring Apps 登陸區域:安全性。
待用資料
待用數據應加密。 應用程式本身是無狀態的。 任何數據都會保存在外部資料庫中,在此資料庫中,此架構會使用 適用於 MySQL 的 Azure 資料庫。 此服務會加密數據,包括執行查詢時建立的備份和暫存盤。
傳輸中資料
傳輸中的數據應加密。 用戶瀏覽器與 Azure 應用程式閘道 之間的流量必須加密,以確保數據在傳輸期間維持不變。 在此架構中,Azure 應用程式閘道 只接受 HTTPS 流量並交涉 TLS 交握。 這項檢查是透過 應用程式閘道 子網上的 NSG 規則強制執行。 TLS 憑證會在部署期間直接載入。
從 應用程式閘道 到 Azure Spring Apps 實例的流量會重新加密,以確保只有安全的流量到達應用程式。 Azure Spring Apps 服務運行時間會接收該流量,並做為 TLS 終止點。 從該點開始,應用程式內的服務間通訊不會加密。 不過,與其他 Azure PaaS 服務和服務運行時間的通訊會透過 TLS 進行。
您可以選擇透過 Azure Spring Apps 實作端對端 TLS 通訊。 請考慮取捨。 延遲和作業可能會產生負面影響。
傳輸中的數據應該檢查是否有弱點。 Web 應用程式防火牆 與 應用程式閘道整合,並進一步檢查流量封鎖 OWASP 弱點。 您可以設定 Web 應用程式防火牆 來偵測、監視和記錄威脅警示。 或者,您可以設定服務來封鎖規則偵測到的入侵和攻擊。
DDoS 保護
分散式阻斷服務 (DDoS) 可以透過過度負擔要求來關閉系統。 在基礎結構層級啟用基本 DDoS 保護,讓所有 Azure 服務都能抵禦這類攻擊。 請考慮升級至 Azure DDoS 保護 服務,以利用監視、警示、應用程式設定閾值等功能。 如需詳細資訊,請參閱 Azure DDoS 保護服務常見問題。
祕密管理
Microsoft 零信任 安全性方法需要將秘密、憑證和認證儲存在安全保存庫中。 建議的服務是 Azure 金鑰保存庫。
根據 Azure 服務和意圖,有替代方式可儲存秘密。 此架構會實作下列方法:
- 憑證會在部署期間載入。
- MySQL 的連線是使用 服務連接器來實作。
成本最佳化策略
由於分散式系統設計的性質,基礎結構蔓延是現實。 這種現實會導致非預期且無法控制的成本。 Azure Spring Apps 是使用可調整的元件來建置,以協助符合需求並優化成本。 此架構的基礎是 Azure Kubernetes Service (AKS) 。 此服務的設計目的是要降低管理 Kubernetes 的複雜度和作業額外負荷,並包含叢集作業成本的效率。
您可以將不同的應用程式和應用程式類型部署到 Azure Spring Apps 的單一實例。 此服務支援由計量或排程觸發的應用程式自動調整,以改善使用率和成本效益。
您也可以使用 Application Insights 和 Azure 監視器來降低營運成本。 透過完整的記錄解決方案所提供的可見度,您可以實作自動化來即時調整系統的元件。 您也可以分析記錄數據,以在應用程式程式代碼中顯示效率低下,以改善系統的整體成本和效能。
案例部署
此參考架構的部署可在 Azure Spring Apps 登陸區域 GitHub 存放庫中取得。 部署使用 Terraform 範本。
此存放庫中的成品提供您可以為您的環境自定義的基礎。 實作會建立具有共用資源的中樞網路,例如 Azure 防火牆 以說明用途。 此群組可以對應至不同的登陸區域訂用帳戶,以將工作負載和平臺功能分開。
若要部署架構,請遵循 逐步指示。
企業層的 VMware 支援
如果您想要即時部署的受控 VMware Tanzu® 支援,請考慮升級至 Azure Spring Apps 企業層。 VMware Tanzu® 服務登錄已針對 Azure Spring Apps 整合,可允許服務探索和註冊。
針對網關路由,您可以切換至 VMware Spring Cloud Gateway。 它提供一個功能集,其中包含驗證和授權、復原功能和速率限制。
在企業層中, Tanzu® 的應用程式組態服務可讓您管理 Kubernetes 原生 ConfigMap 資源,這些資源會從一或多個 Git 存放庫中定義的屬性填入。
此層支援其他 VMware 服務。 如需詳細資訊,請參閱 Azure Marketplace 中的企業層。
參考實作支援 Azure Spring Apps 企業 SKU 作為部署選項。 在此選項中,有一些架構變更。 它會使用搭配 Azure 虛擬網絡 整合部署的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,以及具有私人端點的 Azure Cache for Redis。 範例應用程式是 Fitness Store 應用程式。
下一步
- 檢閱 Azure Spring Apps 登陸區域指引的設計區域。
相關資源
如需此架構中使用的 Azure 服務產品檔,請參閱下列文章:
如需其他實作案例,請參閱下列文章: