共用方式為


在具有 SQL Server 的 Azure Stack Hub 上的 Windows 多層式架構 (N-tier) 應用程式

此參考架構展示如何在 Windows 上使用 SQL Server 作為資料層,來部署針對多層式架構 (N-Tier) 應用程式設定的虛擬機器 (VM) 和虛擬網路。

架構

此架構具有下列元件。

此圖顯示包含六個子網的虛擬網路:應用程式閘道、管理、Web 層、商務層、資料層和 Active Directory。資料層子網使用雲端見證。有三個負載平衡器。

一般

  • 資源群組資源群組可用來將 Azure 資源組合在一起,讓它們可以依存留期、擁有者或其他準則管理。

  • 可用性設定組。 可用性設定組是資料中心設定,用於提供 VM 備援和可用性。 Azure Stack Hub 戳記中的這項設定可確保在規劃或未規劃的維護事件發生期間,至少有一部虛擬機器可以使用。 VM 放置在一個可用性設定組中,該可用性設定組將 VM 分散在多個容錯網域中 (Azure Stack Hub 主機)

網路和負載平衡

  • 虛擬網路和子網路。 每部 Azure VM 都會部署到可以分割成子網路的虛擬網路。 針對每一層建立不同的子網路。

  • 第 7 層負載平衡器。 由於尚無法在 Azure Stack Hub 上使用應用程式閘道,因此 Azure Stack Hub Marketplace 上有可用的替代方案,例如:KEMP LoadMaster 負載平衡器 ADC 內容切換/ 、f5 Big-IP Virtual EditionA10 vThunder ADC

  • 負載平衡器。 使用 Azure Load Balancer 將來自Web 層的流量散佈到商務層,以及將來自商務層的流量散佈到 SQL Server。

  • 網路安全性群組 (NSG)。 使用 NSG 來限制虛擬網路內的網路流量。 例如,在如下所示的三層式架構中,資料庫層不接受來自 Web 前端的流量,只接受來自 Business 層和管理子網路的流量。

  • DNS。 Azure Stack Hub 未提供自己的 DNS 裝載服務,請在您的 ADDS 中使用 DNS 伺服器。

虛擬機器

  • SQL Server Always On 可用性群組。 藉由啟用複寫和容錯移轉,在資料層提供高可用性。 它會使用 Windows Server 容錯移轉叢集 (WSFC) 技術來進行容錯移轉。

  • Active Directory Domain Services (AD DS) 伺服器。 容錯移轉叢集及其相關聯叢集角色的電腦物件,是在 Active Directory Domain Services (AD DS) 中建立。 在相同的虛擬網路中設定 AD DS 伺服器,是將其他 VM 加入 AD DS 的慣用方式。 您也可以藉由將將虛擬網路連線至具有 VPN 連線的企業網路,將 VM 加入現有的企業 AD DS。 透過這兩種方法,您需要將虛擬網路 DNS 變更為 AD DS DNS 伺服器 (在虛擬網路或現有企業網路中),以解析 AD DS 網域 FQDN。

  • 雲端見證。 容錯移轉叢集需要它一半以上的節點執行,也就是具有仲裁。 如果叢集只有兩個節點,網路磁碟分割可能會導致每個節點都認為其為控制平面節點。 在此情況下,您需要「見證」以打破和局,並建立仲裁。 見證是例如共用磁碟的資源,可以作為打破和局項目以建立仲裁。 雲端見證是使用 Azure Blob 儲存體的見證類型。 若要深入了解有關仲裁的概念,請參閱<了解叢集和集區仲裁>。 如需雲端見證的詳細資訊,請參閱<為容錯移轉叢集部署雲端見證>。 在 Azure Stack Hub 中,雲端見證端點與全域 Azure 不同。

看起來如下:

  • 若是全域 Azure:
    https://mywitness.blob.core.windows.net/

  • 若是 Azure Stack Hub:
    https://mywitness.blob.<region>.<FQDN>

  • Jumpbox。 也稱為防禦主機。 網路上系統管理員用來連線到其他 VM 的安全 VM。 Jumpbox 具有 NSG,只允許來自安全清單上公用 IP 位址的遠端流量。 NSG 應該允許遠端桌面 (RDP) 流量。

建議

您的需求可能和此處所述的架構不同。 請使用以下建議作為起點。

虛擬機器

如需有關設定 VM 的建議,請參閱在 Azure Stack Hub 上執行 Windows VM

虛擬網路

當您建立虛擬網路時,請判斷您在每個子網路中的資源需要多少個 IP 位址。 使用 CIDR 標記法,針對所需的 IP 位址指定子網路遮罩和夠大的網路位址範圍。 使用落在標準私人 IP 位址區塊內的位址空間,其為 10.0.0.0/8、172.16.0.0/12 及 192.168.0.0/16。

選擇不會與您的內部部署網路重疊的位址範圍,以防您稍後需要在虛擬網路和您的內部部署網路之間設定閘道。 一旦建立虛擬網路之後,就無法變更位址範圍。

請記得以功能和安全性需求來設計子網路。 位於相同層或角色的所有 VM 都應移入相同的子網路,它可以是安全性界限。 如需設計虛擬網路和子網路的詳細資訊,請參閱規劃和設計 Azure 虛擬網路

負載平衡器

不要直接將 VM 公開至網際網路,而是改為每個 VM 提供私人 IP 位址。 用戶端會使用與第 7 層負載平衡器相關聯的公用 IP 位址來進行連線。

定義負載平衡器規則,以將網路流量導向至 VM。 例如,若要啟用 HTTP 流量,請將前端設定的連接埠 80 對應至後端位址集區的連接埠 80。 當用戶端將 HTTP 要求傳送到連接埠 80 時,負載平衡器會藉由使用雜湊演算法 (其中包含來源 IP 位址) 來選取後端 IP 位址。 用戶端要求會散發到後端位址集區中的所有 VM。

網路安全性群組

使用 NSG 規則來限制各層之間的流量。 在如上所示的三層式架構中,Web 層不會直接與資料庫層通訊。 若要強制執行此規則,資料庫層應該封鎖來自 Web 層子網路的連入流量。

  1. 拒絕來自虛擬網路的所有輸入流量。 (使用規則中的 VIRTUAL_NETWORK 標籤。)

  2. 允許來自 Business 層子網路的輸入流量。

  3. 允許來自資料庫層子網路本身的輸入流量。 此規則允許資料庫 VM 之間的通訊,是進行資料庫複寫和容錯移轉所需的。

  4. 允許來自 Jumpbox 子網路的 RDP 流量 (連接埠 3389)。 此規則讓系統管理員能夠從 Jumpbox 連線到資料庫層。

建立規則 2 - 4,其優先順序會高於第一個規則,因此會覆寫第一個規則。

SQL Server Always On 可用性群組

我們建議使用 Always On 可用性群組來獲得 SQL Server 高可用性。 在 Windows Server 2016 之前,Always On 可用性群組需要一個網域控制站,而且可用性群組中的所有節點都必須位於相同的 AD 網域。

針對 VM 層高可用性,所有 SQL VM 都應該位於可用性設定組中。

其他各層會透過可用性群組接聽程式連線到資料庫。 此接聽程式讓 SQL 用戶端能夠在不知道 SQL Server 實體執行個體名稱的情況下連線。 存取資料庫的 VM 必須加入該網域。 用戶端 (在此案例中為另一層) 會使用 DNS,將接聽程式的虛擬網路名稱解析為 IP 位址。

設定 SQL Server Always On 可用性群組,如下:

  1. 建立 Windows Server 容錯移轉叢集 (WSFC) 叢集、SQL Server Always On 可用性群組,以及主要複本。 如需詳細資訊,請參閱 Always On 可用性群組使用者入門

  2. 建立具有靜態私人 IP 位址的內部負載平衡器。

  3. 建立可用性群組接聽程式,並將接聽程式的 DNS 名稱對應到內部負載平衡器的 IP 位址。

  4. 建立 SQL Server 接聽連接埠的負載平衡器規則 (預設為 TCP 連接埠 1433)。 負載平衡器規則必須啟用「浮動 IP」,也稱為「伺服器直接回傳」。 這樣會導致 VM 直接回覆用戶端,以啟用與主要複本的直接連線。

注意

啟用浮動 IP 時,前端連接埠號碼必須與負載平衡器規則中的後端連接埠號碼相同。

當 SQL 用戶端嘗試連線時,負載平衡器會將連線要求路由傳送到主要複本。 如果已容錯移轉至另一個複本,負載平衡器會自動將新要求路由傳送到新的主要複本。 如需詳細資訊,請參閱設定 SQL Server Always On 可用性群組的 ILB 接聽程式

在容錯移轉期間,會關閉現有的用戶端連線。 當容錯移轉完成之後,會將新的連線路由傳送到新的主要複本。

如果您應用程式的讀取次數比寫入多很多,您可以將某些唯讀查詢卸載至次要複本。 請參閱使用接聽程式連線至唯讀次要複本 (唯讀路由)

執行可用性群組的強制手動容錯移轉來測試您的部署。

對於 SQL 效能最佳化,您也可以參閱 SQL Server 最佳做法一文,以將 Azure Stack Hub 的效能最佳化。

Jumpbox

不允許從公用網際網路對執行應用程式工作負載的 VM 進行 RDP 存取。 對這些 VM 所做的所有 RDP 存取應該改為透過 Jumpbox 進行。 系統管理員會登入 Jumpbox,然後從 Jumpbox 登入其他 VM。 Jumpbox 允許來自網際網路,但只來自已知且安全 IP 位址的 RDP 流量。

Jumpbox 有最低效能需求,因此選取小的 VM 大小。 針對 Jumpbox 建立公用 IP 位址。 將 Jumpbox 放置於與其他 VM 相同的虛擬網路,但在個別的管理子網路中。

若要保護 Jumpbox,請新增 NSG 規則,只允許來自一組安全公用 IP 位址的 RDP 連線。 設定其他子網路的 NSG,允許來自管理子網路的 RDP 流量。

延展性考量

擴展集

針對 Web 和 Business 層,請考慮使用虛擬機器擴展集,而不是部署個別虛擬機器。 擴展集可協助您輕鬆部署及管理一組完全相同的 VM。 如果您需要快速擴充 VM,請考慮擴展集。

有兩種基本方法可用來設定擴展集中部署的 VM:

  • 部署虛擬機器之後,使用擴充功能來設定它。 透過此方法,新的 VM 執行個體可能需要較長的時間來啟動不具擴充功能的 VM。

  • 利用自訂的磁碟映像來部署受控磁碟。 這個選項可能會更快速地部署。 不過,它會要求您讓映像保持最新狀態。

如需詳細資訊,請參閱擴展集的設計考量。 對於 Azure Stack Hub,此設計考量大部分是正確的,但有一些注意事項:

  • Azure Stack Hub 上的虛擬機器擴展集不支援過度佈建或輪流升級。

  • 您無法在 Azure Stack Hub 上自動調整虛擬機器擴展集。

  • 強烈建議在 Azure Stack Hub 上使用受控磁碟,而不是虛擬機器擴展集的非受控磁碟

  • 目前,Azure Stack Hub 上有 700 部 VM 限制,其適用於所有 Azure Stack Hub 基礎結構 VM、個別 VM 和擴展集執行個體。

訂用帳戶限制

每個 Azure Stack Hub 租用戶訂閱已有預設限制,包括 Azure Stack Hub 操作員為每個區域設定的 VM 最大數目。 如需詳細資訊,請參閱 Azure Stack Hub 服務、方案、供應項目、訂閱概觀。 另請參閱 Azure Stack Hub 中的配額類型

安全性考量

虛擬網路是 Azure 中的流量隔離界限。 預設情況下,一個虛擬網路中的 VM 無法與不同虛擬網路中的 VM 直接通訊。

NSG。 使用網路安全性群組 (NSG) 來限制網際網路的進出流量。 如需詳細資訊,請參閱 Microsoft 雲端服務和網路安全性

DMZ。 請考慮新增網路虛擬設備 (NVA),在網際網路和 Azure 虛擬網路之間建立 DMZ。 NVA 是虛擬設備的通稱,可以執行網路相關的工作,例如防火牆、封包檢查、稽核和自訂路由傳送。

加密。 將敏感性待用資料加密,並使用 Azure Stack Hub 中的 Key Vault 來管理資料庫加密金鑰。 如需詳細資訊,請參閱 在 Azure VM 上設定 SQL Server 的 Azure 金鑰保存庫整合。 也建議將應用程式密碼 (例如資料庫連接字串) 儲存在金鑰保存庫中。

後續步驟