本文提供參考架構,說明如何在 Google Cloud 中使用 Always On 可用性群組,部署高可用性 (HA) Microsoft SQL Server 資料庫。這份文件也包含高可用性和災難復原 (DR) 的設計考量、部署選項、自動化建議,以及備份和災難復原作業的指南。本文適用於正在評估 Google Cloud 是否適合做為 SQL Server 資料庫執行平台的技術人員。並假設您已具備 Compute Engine 和 SQL Server 的基本知識。
Google Cloud 提供具成本效益、可靠、安全且高效能的解決方案,可用於執行 SQL Server 資料庫。如要瞭解 Google Cloud中支援的 SQL Server 解決方案,請參閱「 Google Cloud上的 SQL Server」。
如要在 Google Cloud中運作 SQL Server 的非開發部署作業,請使用下列其中一個授權選項:
自備授權 (BYOL):將現有的 Microsoft SQL Server 授權帶到 Google Cloud。您必須使用單一租戶節點或具備授權行動性的軟體保證。
使用隨選授權:在 Google Cloud 中使用預先建構的 SQL Server 映像檔,並支付包含運算費用和 Microsoft 授權費用的費用。Google 會負責處理 Microsoft 授權協議和帳單。
架構
下圖顯示在 Google Cloud中,已設定高可用性的 SQL Server 部署作業參考架構:
上述架構顯示一個Always On 可用性群組,其中有三個節點位於 Windows Server 容錯移轉叢集 (WSFC) 中。每個節點都是執行 SQL Server 的 Compute Engine VM。
Always On 可用性群組是業界標準的部署模式,可達成重要 SQL Server 資料庫的可靠性目標。Always On 可用性群組提供本機高可用性 (區域內的容錯移轉)和跨區域容錯移轉,以利災難復原。這種部署模式是資料庫鏡像的企業級替代方案。Always On 可用性群組具有下列優點:
- 不需要專門的基礎架構元件:SQL Server 會管理所有已設定資料庫副本的複製作業。
- SQL Server 最高服務水準協議設定:復原時間目標 (RTO) 不到一分鐘,復原點目標 (RPO) 接近零。
- 可將唯讀工作負載卸載至次要副本:有效率地擴充部署作業,以進行分析和其他常見用途。
- 其他區域的節點,用於災難復原:部署主要副本和最多八個次要副本。
- 可部署於 Windows 和 Linux:您可以將 Pacemaker 等第三方工具做為 Linux 部署作業的叢集管理工具。
在上述架構中,主要和次要 SQL Server 節點位於區域內的不同可用區。DR 節點位於地理位置偏遠的區域。主要節點的資料會同步複製到次要節點,並非同步複製到 DR 節點。
如要將應用程式層的流量分配至區域內的主要和次要資料庫節點,可以使用下列其中一種方法:
- 如架構圖所示的內部負載平衡器。
- 分散式網路名稱 (DNN) 接聽程式和 DNS 伺服器。
使用的產品
此架構使用下列 Google Cloud 和 Microsoft 產品與元件。
Google Cloud 產品
- Compute Engine:安全可靠且可自訂的運算服務,可讓您透過 Google 的基礎架構建立及執行 VM。
- Google Cloud Hyperdisk:這項網路儲存空間服務可供您佈建及動態擴充區塊儲存空間磁碟區,並提供可設定且可預測的效能。
- 虛擬私有雲 (VPC):虛擬系統,可為 Google Cloud 工作負載提供全球性、可擴充的網路功能。虛擬私有雲包括虛擬私有雲網路對等互連、Private Service Connect、私人服務存取權和 Shared VPC。
- Cloud Load Balancing:一系列高效能、可擴充的全球和區域負載平衡器。
Microsoft 產品和元件
SQL Server 節點會包含或啟用下列元件:
- Windows Server (2019 以上版本)。
- WSFC: 一組安裝在多個 Windows Server 叢集節點或多個子網路的 SQL Server 執行個體。
- Always On 可用性群組: 企業級高可用性和災難復原解決方案,可做為資料庫鏡像的替代方案。
- 可用性群組接聽程式: 用戶端可用來存取 Always On 可用性群組主要或次要副本中資料庫的虛擬網路名稱 (VNN)。用戶端不需要知道副本的實體執行個體名稱。由於接聽程式會將流量轉送至適當的伺服器,因此容錯移轉後,不需要修改用戶端連線字串。
部署這項架構時,需要下列額外元件:
- Active Directory 網域服務: Windows Server 目錄服務,用於管理網域中常見的資源,例如電腦、角色和使用者。
- DNS: 可將網域名稱解析為對應 IP 位址的伺服器。
- 法定人數見證: 這可以是伺服器訊息區塊 (SMB) 檔案共用或本機附加的共用磁碟。
設計須知
本節將說明設計因素、最佳做法和設計建議,供您參考這些資訊,使用這個參考架構開發拓撲,以滿足可靠性、作業效率、安全性、成本和效能方面的需求。
可靠性
本節說明設計考量事項和建議,協助您在Google Cloud中為 SQL Server 部署作業建構及運作可靠的基礎架構。
選擇高可用性和災害復原策略
如要在 Google Cloud中部署可靠的 SQL Server 資料庫,您需要結合 Google Cloud 的強大基礎架構,以及 SQL Server 的高可用性和災害復原功能。這項組合可保護資料庫,避免受到可用區中斷到區域性災害等故障影響。
為 SQL Server 部署作業設計高可用性和 DR 策略時,請考量下列因素:
- RPO:發生故障時,可接受的資料遺失量。
- 如要達到低 RPO (趨近於零的資料損失),請使用 Always On 可用性群組搭配同步複製功能。
- 如果可以容忍部分資料遺失,請使用下列其中一種方法:非同步複製、備份和災難復原服務、備份至 Cloud Storage 值區或記錄檔傳送。
- RTO:發生故障後,資料庫需要多快才能恢復運作?
- 如要縮短 RTO,請使用 Always On 可用性群組。
- 如果可以接受停機一段時間,請從備份還原資料庫,或使用記錄檔傳送功能並手動容錯移轉。
- 預算:權衡成本與可靠性。
- 成本高但可靠:使用 Always On 可用性群組,並透過非同步複製功能,將資料複製到 DR 地區的其他節點。規劃備援基礎架構和授權。
- 中等成本:在其他區域實作非同步磁碟複製,或使用備份和災難復原服務。
- 成本低但復原時間長:將資料庫備份至多區域 Cloud Storage bucket。
- 故障類型:您需要處理哪些類型的故障?
- 如要處理硬體層級、執行個體層級和區域故障,可以使用可用性群組。
- 如要從全站中斷或災害中復原,您需要地理位置分散的災難復原解決方案,例如記錄檔傳送或 Always On 可用性群組,並搭配非同步資料庫複製功能。
- 業務重要性:應用程式對貴商家有多重要?
- 重要業務應用程式需要採用策略,以提供最高可用性、將資料遺失減至最少,並快速復原。
- 對於重要性較低的系統,請考慮採用可接受停機或資料遺失的策略。
請填寫下列決策流程問卷,為 SQL Server 資料庫選擇最佳可靠性策略。策略選項包括 Always On 可用性群組 (可將資料遺失量降至接近零),以及符合成本效益的異地備份。
- 異地備份是否符合您的 RPO 和 RTO?
- 是:使用異地備份或記錄檔傳送。
- 否:繼續下一個問題。
- 您的 RTO 或 RPO 是否少於一分鐘?
- 是 (RPO 接近零):使用 SQL Server Always On 可用性群組和 DR 資料庫副本。
- 否:繼續下一個問題。
- 你的 RTO 是多少?
- 不到五分鐘:使用 SQL Server Always On 可用性群組和非同步磁碟副本。
- 一小時以上:請繼續下一個問題。
- 你的 RPO 是多少?
- 不到兩小時:使用 SQL Server Always On 可用性群組搭配備份和災難復原服務。
- 八小時以上:使用異地備份或記錄傳送。
選擇合適的備份選項
如果可靠性策略包含資料庫備份,請選擇符合需求的備份方法。 Google Cloud 提供下列彈性且適合企業使用的 SQL Server 資料庫備份選項:
- 直接備份至 Cloud Storage bucket:
使用
BACKUP TO URL指令和 SQL Server (2022 年或更新版本) 中的 S3 連接器,直接將資料庫備份寫入 Cloud Storage。在正式環境中,您可以使用雜湊架構訊息驗證代碼 (HMAC) 存取金鑰。這個備份選項可為資料庫和記錄提供經濟實惠的保護,不需要中繼本機儲存空間。 - Compute Engine 即時快照: 使用 Transact-SQL (T-SQL) 凍結/解除凍結作業,搭配 Compute Engine 一致性群組,即可在不到一秒的時間內,跨多個磁碟 (例如 Hyperdisk Balanced 磁碟) 同時擷取快照。這個選項可為多磁碟資料庫提供高效能的 VM 層級備份,且幾乎不需要寫入凍結。
- 備份和災難復原: 使用 Microsoft VSS 提供者和一致性群組,協調應用程式一致的快照。如果您需要精細的多資料庫時間點復原 (PITR),並能使用記錄向前復原資料庫,則適合使用這項備份選項。
- Google Cloud NetApp Volumes: 使用 ONTAP 儲存引擎,建立即時快照和非同步備份,並儲存至遠端保存庫。如果企業應用程式對延遲時間很敏感,且需要快速緩解勒索軟體攻擊,以及節省空間的複製功能,建議使用 NetApp Volumes。
對於需要統一資料保護政策的多雲和混合式部署作業,您可以選擇第三方備份產品,例如 Veeam、Veritas NetBackup 或 Cohesity。
作業
為確保部署在 Compute Engine VM 上的 SQL Server 資料庫具有高可用性及最佳效能,請使用 Cloud Monitoring 和 Cloud Logging 設定完善的監控和警報系統。
- 持續追蹤 CPU 使用率和記憶體負載等核心資源的指標。設定基準快訊,在查詢開始效能降低前,偵測資源壓力。
- 為避免資料庫寫入作業停止,請持續觀察磁碟空間使用率。 監控整體服務狀態,並設定快訊,在資料庫意外停止時收到通知。
- 對於高可用性部署作業,請追蹤任何非計畫性的容錯移轉,並確保在自動災難復原事件期間,能全面掌握情況。
- 除了系統層級的遙測資料, Google Cloud 還提供廣泛的資料庫專屬指標套件,例如有效使用者連線限制、複寫延遲和交易率。追蹤這些指標,監控 SQL Server 資料庫的可用性和效能。
- 如要直接從 SQL Server 錯誤記錄擷取應用程式層級的錯誤 (例如死結、資料庫損毀和代理程式工作失敗),請在 Logging 中設定以記錄為準的自訂快訊。
安全性
本節說明設計考量事項和建議,協助您在 Google Cloud 中設計 SQL Server 部署作業,以符合工作負載的安全防護需求。
網路安全和隔離
- 為避免資料庫暴露於外部,請在 VPC 內使用私人 IP 位址部署 SQL Server 執行個體。使用私人服務存取權在內部傳送流量。這種做法可確保資料庫流量絕不會經過公用網際網路。
- 設定嚴格的虛擬私有雲防火牆規則,只允許來自授權應用程式子網路或特定 CIDR 區塊的流量,進一步限制資料庫存取權。
- 為保護傳輸中的資料免於竊聽和攔截,請為所有資料庫連線強制執行 TLS/SSL,實作加密連線。
加密和金鑰控管
- 根據預設, Google Cloud 會使用 Google 代管的 AES-256 金鑰,自動加密資料庫磁碟、暫時檔案和備份中的所有靜態資料。為符合法規遵循環境,您可以透過 SQL Server 的透明資料加密 (TDE) 功能,實作資料庫層級的加密。
- 為確保資料主權,您可以在 Cloud Key Management Service 中使用客戶自行管理的加密金鑰 (CMEK)。CMEK 可讓您全面控管加密作業。您可以管理金鑰生命週期、設定自動輪替時間表,並在需要時立即撤銷資料庫及其備份的存取權。
驗證及授權
- 將資料庫與 Microsoft Active Directory 整合,或使用 Identity and Access Management (IAM),集中管理 SQL Server 資料庫和其他Google Cloud 資源的 ID。
- 建立身分後,請套用最小權限原則,確保使用者和應用程式服務帳戶只具有執行職務所需的權限。將身分對應至細微的 SQL Server 資料庫角色。
成本最佳化
本節提供指引,說明如何最佳化使用這個參考架構建構的 SQL Server 部署作業設定和運作成本。成本最佳化有助於確保部署作業符合工作負載的可靠性和效能需求,同時不超出預算限制。
建議如下:
- 停用多執行緒並行 (SMT):停用 SMT 後,授權用途回報的核心數量會減少 50%。將 CPU 超量佈建 20% 後停用 SMT,即可大幅節省授權費用,同時維持效能。詳情請參閱「設定每個核心的執行緒數量」。
- 使用 SQL Server Standard Edition:視高可用性和災害復原需求而定,您可以改用 SQL Server Standard Edition,而非 Enterprise Edition,藉此降低授權費用。詳情請參閱「SQL Server 版本和支援的功能」。
- 最佳化儲存空間:Hyperdisk 提供不同的 磁碟選項 ,您可以根據 SQL Server 部署作業的需求選擇。Hyperdisk Balanced 可在成本和效能之間取得平衡。您可以獨立調整輸送量和每秒輸入/輸出作業數 (IOPS),讓基礎架構支出與工作負載需求完全相符。詳情請參閱「選擇合適的儲存磁碟類型」一節。
效能最佳化
本節說明如何設計及部署 SQL Server,以符合效能需求。
在 Compute Engine VM 上部署 SQL Server,即可全面掌控資料庫和基礎架構。工作負載的效能取決於您選擇的基礎架構。如要兼顧效能、成本和可靠性,您必須針對 VM 機器系列和資料庫節點的磁碟類型做出明智決策。
選擇合適的 VM 機器家族
您為 Compute Engine VM 選擇的機器系列,會決定 SQL Server 節點可用的處理能力 (vCPU) 和記憶體 (RAM)。這些資源會影響資料庫的效能。
選擇可解決主要效能瓶頸的 VM 機器系列。舉例來說,如果 SQL Server 資料庫的 CPU 使用率持續偏高,請從運算最佳化機器家族中選擇機型。如果 SQL Server 資料庫顯示磁碟讀取速度緩慢,請選擇記憶體最佳化機型。
下表比較了 Compute Engine 提供的 VM 機器系列、各機器系列的主要用途,以及對 SQL Server 資料庫的效能影響:
| 機器家族和系列 | 主要應用實例 | 對 SQL Server 效能的影響 |
|---|---|---|
| 一般用途 (N4 機器系列) | 兼顧價格和效能 | 對於大多數工作負載,建議您從這個機器家族著手。N4 機器系列提供最佳的 CPU 和記憶體平衡,適用於混合用途資料庫、網頁應用程式,以及開發或測試環境。 |
| 運算最佳化 (C3 或 C4 機器系列) | 每核心最高效能 | 這個機器家族適用於 CPU 密集型工作負載。如果資料庫執行複雜查詢、處理大量資料,或提供大量線上交易處理 (OLTP) 作業,請使用 C3 和 C4 系列機器。這些系列的機器類型有助於大幅縮短查詢執行時間。 |
| 記憶體最佳化 (M3 或 M4 機器系列) | 記憶體與 vCPU 比率較高 | 這個機器家族非常適合需要大量記憶體的應用程式。SQL Server 會將資料和執行計畫快取在記憶體中,因此效能比從磁碟讀取資料更高。如果是用於線上分析處理 (OLAP) 的超大型資料庫或資料倉儲,查詢通常會掃描大型表格和資料集。在這種情況下,記憶體容量越大,效能就越好。 |
詳情請參閱機器家族資源與比較指南。
選擇適當的儲存空間磁碟類型
磁碟效能是影響資料庫回應速度的重要因素,而這對應用程式效能至關重要。對於 Google Cloud提供的磁碟類型,效能指標如下:
- IOPS:磁碟每秒可處理的讀取和寫入要求數量。對於 OLTP 工作負載而言,IOPS 至關重要,因為這類工作負載涉及許多隨機的小型讀取和寫入作業,例如更新客戶記錄或處理訂單。
- 處理量:每秒可移至或移出磁碟的資料總量。對於需要掃描大量資料的 OLAP 工作負載 (例如執行報表、資料倉儲或執行備份),總處理量至關重要。
下表比較可供選擇的 Google Cloud 磁碟類型:
| 磁碟類型 | 效能特徵 | 工作負載適用性 |
|---|---|---|
SSD 永久磁碟 (pd-ssd) |
效能中等至高,視 VM 機型和磁碟大小而定 | 工作負載需要效能隨著磁碟大小和 VM 的 vCPU 調整。詳情請參閱「永久磁碟效能總覽」。 |
| Hyperdisk Balanced | 可設定 IOPS 和總處理量,提供高效能 | SQL Server 生產環境資料和記錄檔。您可以根據工作負載需求,獨立設定 Hyperdisk Balanced 的 IOPS 和處理量,不必考慮磁碟大小。 |
| Hyperdisk Extreme | 可設定 IOPS,效能極高 | 需要最高 IOPS 和最低延遲時間的高階重要 OLTP 工作負載,例如大規模金融或電子商務系統。 |
| 本機 SSD | 與其他磁碟類型相比,IOPS 和處理量最高 | 不需要永久磁碟耐用性的暫時資料。對於tempdb系統資料庫和 Windows 分頁檔等資料,本機 SSD 與 VM 實體連接,因此延遲時間最短。 |
根據效能需求選擇合適的基礎架構
根據工作負載的效能需求,選擇 VM 機器類型和磁碟類型。下表針對不同工作負載情境,建議基礎架構設定:
| 情境 | 效能需求 | 建議的機型和磁碟設定 |
|---|---|---|
| 適用於 OLTP 的高交易量電子商務資料庫 | 高 IOPS,可處理數千個並行的小型讀寫作業 |
VM 機型:選擇運算最佳化機型 (例如 C4 機器系列),有效處理交易。 資料和記錄磁碟:使用 Hyperdisk Balanced 磁碟。佈建高 IOPS,以滿足交易需求。使用不同的磁碟來儲存資料和記錄。
|
| 公司資料倉儲 (適用於 OLAP) | 高處理量,可掃描及匯總數 TB 的資料,以供製作報表 |
VM 機型:選擇記憶體最佳化機型 (例如 M4 機器系列),盡可能快取大型資料集。 資料磁碟:使用 Hyperdisk Balanced 磁碟。 提供高處理量,加快大型資料掃描作業。 |
| 開發或測試伺服器 | 成本效益,而非最高效能 | VM 機型:從 E2 或 N4 機器系列中,選擇機器大小較小的一般用途機型。 磁碟:使用平衡型永久磁碟 ( |
部署作業
如要部署這項參考架構,請使用下列任一資源:
- 基礎架構即程式碼 (IaC):使用 Terraform 設定在 Google Cloud中佈建 SQL Server 叢集。設定包括 PowerShell 所需狀態設定 (DSC) 和 bash 指令碼,用於設定必要元件。您可以下載並根據設定需求修改程式碼。
- 導覽式工作流程:使用 Workload Manager 部署單一節點或叢集設定的 SQL Server。
- 教學課程:按照逐步指南使用內部負載平衡器,設定 SQL Server Always On 可用性群組和同步認可。
後續步驟
- 瞭解 Google Cloud上的 SQL Server 授權和映像檔選項。
- 參閱災難復原規劃指南。
- 瞭解 Microsoft SQL Server 的災難復原。
- 瞭解如何部署 Microsoft SQL Server,以進行多區域災難復原。
- 瞭解如何在 Compute Engine 執行個體之間共用磁碟。
- 如要查看更多參考架構、圖表和最佳做法,請瀏覽 Cloud Architecture Center。
貢獻者
作者:
- Tom Niedzielak | 員工系統開發工程師
- Sung Baek | 軟體工程師
其他貢獻者:Kumar Dhanagopal | 跨產品解決方案開發人員