您可以藉由分隔出不同機器上的不同應用程式層元件,以及個別元件,開發各種類型的多層式架構應用程式。 例如,您可以將用戶端應用程式和商務規則元件放在一部機器中,前端 Web 層和資料存取層元件放在另一部機器,然後再將後端資料庫層放在另一部機器。 這種結構有助於分離各個層。 如果您變更了資料來源,就不需要變更用戶端或 Web 應用程式,只要變更資料存取層元件即可。
典型的 多層式架構 應用程式包含展示層、商務層和資料層:
層
描述
展示
展示層 (Web 層、前端層) 是使用者與應用程式互動的層。
商務
商務層 (中間層) 是讓展示層和資料層彼此通訊的層,並含有系統的核心功能。
Data
資料層 基本上是儲存應用程式資料的伺服器 (例如,執行 SQL Server 的伺服器)。
應用程式層描述應用程式中功能與元件的邏輯群組;而層則描述個別實體伺服器、電腦、網路或遠端位置上功能與元件的實體分佈。 應用程式層可位於同一部實體電腦 (同一層),或分散在不同電腦 (多層式架構),而每個層中的元件可透過定義明確的介面,與其他層中的元件進行通訊。 您可以將「層」這個詞彙視為實體分佈模式,例如兩層、三層和多層式架構。
2 層應用程式模式 包含兩個應用程式層:應用程式伺服器和資料庫伺服器。 應用程式伺服器和資料庫伺服器之間會進行直接通訊。 應用程式伺服器包含 Web 層和商務層元件。 在 3 層應用程式模式中,有三個應用程式層:Web 伺服器、應用程式伺服器 (其中包含商務邏輯層和/或商務層資料存取元件),以及資料庫伺服器。 Web 伺服器和資料庫伺服器之間會透過應用程式伺服器進行通訊。 如需應用程式層和各層的詳細資訊,請參閱 Microsoft 應用程式架構指南。
請在不同的 VM 中執行應用程式的多個複本,確認可以負載平衡它們的要求。 當您有多個虛擬機器時,必須確定可以存取所有 VM,且 VM 均能在某個時間點同時執行。 如果設定負載平衡,Azure Load Balancer 就會追蹤 VM 的健全狀況,然後將傳入的呼叫正確引導至運作狀況良好的 VM 節點。 如需如何設定虛擬機器負載平衡的資訊,請參閱 Azure 基礎結構服務的負載平衡。 在負載平衡器後方有多個 Web 和應用程式伺服器執行個體,可確保展示層和商務層的高可用性。
需要 SQL HADR 之應用程式模式的最佳作法
當您在 Azure 虛擬機器中設定 SQL Server 高可用性和災害復原解決方案時,必須使用 Azure 虛擬網路 為您的虛擬機器設定虛擬網路。 即使在服務停機期間,虛擬網路內的虛擬機器也會有一個穩定的私人 IP 位址,讓您可以避免 DNS 名稱解析所需的更新時間。 此外,虛擬網路可讓您將內部部署網路延伸至 Azure,並建立信任的安全性界限。 例如,如果您的應用程式具有公司網域限制 (如 Windows 驗證、Active Directory),則必須設定 Azure 虛擬網路 。
在此應用程式模式中,展示層包含 Web 角色,這是在 Azure 執行環境中執行的雲端服務元件,且是針對 Web 應用程式的程式設計而自訂,並受 IIS 和 ASP.NET 的支援。 商務層或後端層包含背景工作角色,這是在 Azure 執行環境中執行的雲端服務元件,對於通用開發而言很實用,此外也可針對 Web 角色執行背景處理。 資料庫層位於 Azure 中的 SQL Server 虛擬機器內。 展示層和資料庫層之間會透過商務層 (背景工作角色元件),直接進行通訊。
若有下列情況,此應用程式模式會很適用:
您想要藉由實作 SQL Server 高可用性和災害復原功能,將企業應用程式從虛擬化平台的內部部署移至 Azure。
您想要擁有可依需求擴大和降低規模的基礎結構環境。
Azure SQL Database 不支援您應用程式或資料庫所需的所有功能。
您想要針對各種工作負載層級執行壓力測試,但同時又不想一直擁有及維護許多實體機器。
下圖說明某個內部部署案例以及其啟用雲端功能的解決方案。 在此案例中,您會在 Web 角色中放置展示層、在背景工作角色中放置商務層,但在 Azure 虛擬機器中放置資料層。 在不同的 Web 角色中執行多個展示層的複本,可確保能負載平衡它們的要求。 當您將「Azure 雲端服務」與「Azure 虛擬機器」結合時,建議您一併設定 Azure 虛擬網路 。 有了 Azure 虛擬網路,就能在雲端內的相同雲端服務中擁有穩定且持續不變的私人 IP 位址。 當您定義虛擬機器和雲端服務的虛擬網路後,它們就可以開始透過私人 IP 位址彼此通訊。 此外,讓虛擬機器和 Azure Web 角色/背景工作角色位於同一個 Azure 虛擬網路 中,可提供低延遲且更安全的連線。 如需詳細資訊,請參閱 什麼是雲端服務。
如圖所示,Azure Load Balancer 會將流量分配到多個虛擬機器,也會決定要連接到哪部 Web 伺服器或應用程式伺服器。 在負載平衡器後方有多個 Web 和應用程式伺服器執行個體,可確保展示層和商務層的高可用性。 如需詳細資訊,請參閱 需要 SQL HADR 之應用程式模式的最佳作法。
實作此應用程式模式的另一種方法是使用合併的 Web 角色 (包含展示層和商務層元件),如下圖所示。 如果應用程式需要可設定狀態的設計,此應用程式模式就很實用。 由於 Azure 在 Web 和背景工作角色上提供無狀態的計算節點,因此建議您實作邏輯,以使用下列其中一種技術來儲存工作階段狀態:Azure 快取、Azure 資料表儲存體或 Azure SQL Database。
您可以在 Azure 中保留 Web 伺服器、應用程式伺服器及資料庫伺服器內的非機密資料,然後將機密資料保留在內部部署。
您可以將 Web 伺服器和應用程式伺服器保留在內部部署,而在 Azure 虛擬機器中保留資料庫伺服器。
您可以將資料庫伺服器、Web 伺服器和應用程式伺服器保留在內部部署,而在 Azure 虛擬機器中保留資料庫複本。 此設定可讓內部部署 Web 伺服器或報告應用程式存取 Azure 中的資料庫複本。 因此,您可以在內部部署資料庫中達到較低的工作負載。 我們建議您針對讀取密集的工作負載和開發用途,實作此案例。 如需在 Azure 中建立資料庫複本的資訊,請參閱 Azure 虛擬機器上的 SQL Server 高可用性和災害復原中的「AlwaysOn 可用性群組」。
比較 Azure 中的 Web 開發策略
若要在 Azure 中實作和部署以多層式 SQL Server 為基礎的應用程式,您可以使用下列兩種程式設計方法其中之一:
在 Azure 中設定傳統 Web 伺服器 (IIS - 網際網路資訊服務),並存取位於 Azure 虛擬機器上 SQL Server 內的資料庫。
實作雲端服務並將其部署至 Azure。 然後請確定此雲端服務可以存取 Azure 虛擬機器上 SQL Server 內的資料庫。 雲端服務可以包含多個 Web 角色和背景工作角色。
關於 Azure 虛擬機器上的 SQL Server,下表提供傳統 Web 開發與 Azure 雲端服務和 Azure Web Apps 的比較。 表格中包含 Azure Web Apps,因為它可以透過其公用虛擬 IP 位址或 DNS 名稱,使用 Azure VM 中的 SQL Server 當做 Azure Web Apps 的資料來源。
Azure 虛擬機器中的傳統 Web 開發
Azure 中的雲端服務
虛擬主機與 Azure Web Apps
從內部部署進行應用程式移轉
現有的應用程式維持不變。
應用程式需要 Web 角色和背景工作角色。
現有的應用程式維持不變,但仍適用於需要快速擴充的獨立式 Web 應用程式和 Web 服務。
開發和部署
Visual Studio、WebMatrix、Visual Web Developer、WebDeploy、FTP、TFS、IIS Manager,PowerShell。
Azure 會管理從基礎硬體或作業系統軟體導致的失敗。 我們建議您實作多個 Web 角色或背景工作角色執行個體,以確保應用程式的高可用性。 如需資訊,請參閱雲端服務、虛擬機器和虛擬網路服務等級協定。
您需負責備份自己的資料和應用程式。
針對在 Azure VM 中位於 SQL Server 資料庫的資料庫,您必須負責實作高可用性和災害復原解決方案,以避免任何停機。 如需支援的 HADR 技術,請參閱 Azure 虛擬機上 SQL Server 的高可用性和災害復原。
SQL Server Database 鏡像:與 Azure 雲端服務 (Web/背景工作角色) 搭配使用。 SQL Server VM 和雲端服務專案可位於相同的 Azure 虛擬網路。 如果 SQL Server VM 不在相同的虛擬網路中,您便必須建立 SQL Server 別名,以將通訊路由傳送至 SQL Server 執行個體。 此外,別名必須與 SQL Server 名稱相符。
使用 Azure VM 中的 SQL Server 當做 Azure Web Apps 的資料來源時,請記住,Azure Web Apps 不支援 Azure 虛擬網路。 換言之,從 Azure Web Apps 到 Azure 中 SQL Server VM 的所有連線,都必須透過虛擬機器的公用端點。 這可能會對高可用性和災害復原案例造成一些限制。 例如,在 Azure Web Apps 上使用資料庫鏡像連接到 SQL Server VM 的用戶端應用程式,會無法連接至新的主要伺服器,因為您必須在 Azure 中的 SQL Server 主機 VM 之間設定 Azure 虛擬網路才能使用資料庫鏡像。 因此,目前不支援 SQL Server 資料庫鏡像與 Azure Web 應用程式搭配使用。
SQL Server AlwaysOn 可用性群組︰使用 Azure 中的 SQL Server VM 搭配 Azure Web 應用程式時,您可以設定 AlwaysOn 可用性群組。 但您必須設定 AlwaysOn 可用性群組接聽程式,透過公用負載平衡的端點將通訊路由至主要複本。
重要注意事項:Azure 中的自動調整規模功能可讓您自動增加或減少應用程式所使用的虛擬機器數量。 這項功能可保證使用者的體驗不會在尖峰期間受到影響,且 VM 不會在需求降低時關機。 如果雲端服務含有 SQL Server VM,建議您不要為雲端服務設定「自動調整」選項。 原因是「自動縮放」功能會讓 Azure 在該 VM 中的 CPU 使用率高於某個閾值時,開啟虛擬機器;以及在 CPU 使用率低於該閾值時,關閉虛擬機器。 「自動調整規模」功能對於無狀態的應用很實用,例如 Web 伺服器,其中所有 VM 均可管理工作負載,且不用參考任何先前的狀態。 但「自動調整規模」功能不適用於可設定狀態的應用程式,例如 SQL Server,其中只有一個執行個體允許寫入資料庫。
透過使用多個 Web 角色和背景工作角色來相應增加。 如需 Web 角色和背景工作角色之虛擬機器大小的詳細資訊,請參閱設定雲端服務的大小。
當使用雲端服務時,您可以定義多個角色來分散處理,並達到彈性調整應用程式。 每個雲端服務包含一或多個 Web 角色和/或背景工作角色,且各有自己的應用程式檔案和組態。 您可以增加針對某個角色而部署的角色執行個體 (虛擬機器) 數目,藉此調升雲端服務的規模;或是減少角色執行個體數目,以調降雲端服務的規模。 如需詳細資訊,請參閱 Azure 執行模型。