

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon FSx 設定 SQL Server Always On FCI 的異地同步備份基礎設施
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx"></a>

*Manish Garg、T.V.R.L.Phani Kumar Dadi、Nishad Mankar 和 RAJNEESH TYAGI，Amazon Web Services*

## 總結
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-summary"></a>

如果您需要快速遷移大量 Microsoft SQL Server Always On 容錯移轉叢集執行個體 (FCIs)，此模式可協助您將佈建時間降至最低。透過使用自動化和 Amazon FSx for Windows File Server，可減少手動作業、人為錯誤，以及部署大量叢集所需的時間。

此模式會在 Amazon Web Services (AWS) 的多可用區域 （多可用區域） 部署中設定 SQL Server FCIs 的基礎設施。此基礎設施所需的 AWS 服務佈建是使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 範本自動化的。[Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 執行個體上的 SQL Server 安裝和叢集節點建立是使用 PowerShell 命令執行。

此解決方案使用高度可用的多可用區域 [Amazon FSx for Windows](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) 檔案系統做為存放 SQL Server 資料庫檔案的共用見證。託管 SQL Server 的 Amazon FSx 檔案系統和 EC2 Windows 執行個體會加入相同的 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 網域。

## 先決條件和限制
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 具有足夠許可的 AWS 使用者，可使用 AWS CloudFormation 範本佈建資源
+ 適用於 Microsoft Active Directory 的 AWS Directory Service
+ AWS Secrets Manager 中要驗證金鑰/值對中 AWS Managed Microsoft AD 的登入資料：
  + `ADDomainName`：＜網域名稱>
  + `ADDomainJoinUserName`：<Domain Username>
  + `ADDomainJoinPassword`：＜網域使用者密碼>
  + `TargetOU`：<Target OU 值>
**注意**  
您將在 AWS Managed Microsoft AD 聯結活動的 AWS Systems Manager 自動化中使用相同的金鑰名稱。
+ SQL Server 安裝和 Windows 服務或網域帳戶建立的 SQL Server 媒體檔案，將在叢集建立期間使用
+ 虛擬私有雲端 (VPC)，在個別可用區域中有兩個公有子網路、可用區域中有兩個私有子網路、網際網路閘道、NAT 閘道、路由表關聯和跳接伺服器

**產品版本**
+ Windows Server 2012 R2 和 Microsoft SQL Server 2016

## Architecture
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-architecture"></a>

**來源技術堆疊**
+ 使用共用磁碟機搭配 FCIs 的內部部署 SQL Server

**目標技術堆疊**
+ AWS EC2 執行個體
+ Amazon FSx for Windows File Server
+ AWS Systems Manager Automation Runbook
+ 網路組態 (VPC、子網路、網際網路閘道、NAT 閘道、跳躍伺服器、安全群組）
+ AWS Secrets Manager
+ AWS 受管 Microsoft AD
+ Amazon EventBridge
+ AWS Identity and Access Management (IAM)

**目標架構**

下圖顯示單一 AWS 區域中的 AWS 帳戶，其中包含兩個可用區域的 VPC、兩個具有 NAT 閘道的公有子網路、第一個公有子網路中的跳轉伺服器、兩個私有子網路，每個子網路都有節點安全群組中 SQL Server 節點的 EC2 執行個體，以及連線至每個 SQL Server 節點的 Amazon FSx 檔案系統。也包含 AWS Directory Service、Amazon EventBridge、AWS Secrets Manager 和 AWS Systems Manager。

![具有公有和私有子網路中資源的異地同步備份架構，具有節點安全群組。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/f09c0164-be2d-4665-a574-7ec29fd25082/images/543829a9-e130-4542-9c4e-7518c6cbe967.png)


**自動化和擴展**
+ 您可以使用 AWS Systems Manager 加入 AWS Managed Microsoft AD 並執行 SQL Server 安裝。

## 工具
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-tools"></a>

**AWS 服務**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 可協助您設定 AWS 資源、快速一致地佈建資源，以及在整個 AWS 帳戶和區域的生命週期中管理這些資源。
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) 提供多種方式來搭配其他 AWS 服務使用 Microsoft Active Directory (AD)，例如 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Relational Database Service (Amazon RDS) for SQL Server 和 Amazon FSx for Windows File Server。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) 在 AWS 雲端中提供可擴展的運算容量。您可以視需要啟動任意數量的虛擬伺服器，，並快速進行擴展或縮減。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 是一種無伺服器事件匯流排服務，可協助您將應用程式與來自各種來源的即時資料連線。例如，AWS Lambda 函數、使用 API 目的地的 HTTP 調用端點，或其他 AWS 帳戶中的事件匯流排。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 可透過控制已驗證並獲授權使用的人員，協助您安全地管理對 AWS 資源的存取。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 可協助您以 API 呼叫 Secrets Manager，以程式設計方式擷取秘密，取代程式碼中的硬式編碼登入資料，包括密碼。
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 可協助您管理在 AWS 雲端中執行的應用程式和基礎設施。它可簡化應用程式和資源管理、縮短偵測和解決操作問題的時間，並協助您大規模安全地管理 AWS 資源。

**其他工具**
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/) 是在 Windows、Linux 和 macOS 上執行的 Microsoft 自動化和組態管理程式。此模式使用 PowerShell 指令碼。

**程式碼儲存庫**

此模式的程式碼可在 GitHub [aws-windows-failover-cluster-automation](https://github.com/aws-samples/aws-windows-failover-cluster-automation) 儲存庫中使用。

## 最佳實務
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-best-practices"></a>
+ 用於部署此解決方案的 IAM 角色應遵循最低權限原則。如需詳細資訊，請參閱 [IAM 文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。
+ 遵循 [AWS CloudFormation 最佳實務](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html)。

## 史詩
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-epics"></a>

### 部署基礎設施
<a name="deploy-the-infrastructure"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 部署 Systems Manager CloudFormation 堆疊。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps，DevOps 工程師 | 
| 部署基礎設施堆疊。 | 成功部署 Systems Manager 堆疊後，請建立`infra`堆疊，其中包含 EC2 執行個體節點、安全群組、Amazon FSx for Windows File Server 檔案系統和 IAM 角色。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps，DevOps 工程師 | 

### 設定 Windows SQL Server Always On FCI
<a name="set-up-the-windows-sql-server-always-on-fci"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 安裝 Windows 工具。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps、DevOps 工程師、DBA | 
| 在 Active Directory Domain Services 中預先準備叢集電腦物件。 | 若要預先準備 Active Directory Domain Services (AD DS) 中的叢集名稱物件 (CNO)，並預先準備叢集角色的虛擬電腦物件 (VCO)，請遵循 [Windows Server 文件](https://learn.microsoft.com/en-us/windows-server/failover-clustering/prestage-cluster-adds)中的指示。 | AWS DevOps、DBA、DevOps 工程師 | 
| 建立 WSFC。 | 若要建立 Windows Server 容錯移轉叢集 (WSFC) 叢集，請執行下列動作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | AWS DevOps、DBA、DevOps 工程師 | 
| 安裝 SQL Server 容錯移轉叢集。 | 設定 WSFC 叢集後，在主要執行個體 (node1) 上安裝 SQL Server 叢集。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html)<pre>D:\setup.exe /Q  `<br />/ACTION=InstallFailoverCluster `<br />/IACCEPTSQLSERVERLICENSETERMS `<br />/FEATURES="SQL,IS,BC,Conn"  `<br />/INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"  `<br />/INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"  `<br />/RSINSTALLMODE="FilesOnlyMode"  `<br />/INSTANCEID="MSSQLSERVER" `<br />/INSTANCENAME="MSSQLSERVER"  `<br />/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)"  `<br />/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>"  `<br />/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>"  `<br />/INSTANCEDIR="C:\Program Files\Microsoft SQL Server"  `<br />/ENU="True"  `<br />/ERRORREPORTING=0  `<br />/SQMREPORTING=0  `<br />/SAPWD="<Domain User password>" `<br />/SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS"  `<br />/SQLSYSADMINACCOUNTS="<domain\username>" `<br />/SQLSVCACCOUNT="<domain\username>"  /SQLSVCPASSWORD="<Domain User password>" `<br />/AGTSVCACCOUNT="<domain\username>"  /AGTSVCPASSWORD="<Domain User password>" `<br />/ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>"  `<br />/FTSVCACCOUNT="NT Service\MSSQLFDLauncher"  `<br />/INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server"  `<br />/SQLUSERDBDIR="\\<FSX DNS name>\share\data"  `<br />/SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" `<br />/SQLTEMPDBDIR="T:\tempdb"  `<br />/SQLTEMPDBLOGDIR="T:\log"  `<br />/SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" `<br />/SkipRules=Cluster_VerifyForErrors `<br />/INDICATEPROGRESS</pre> | AWS DevOps、DBA、DevOps 工程師 | 
| 將次要節點新增至叢集。 | 若要將 SQL Server 新增至次要節點 （節點 2)，請執行下列PowerShell 命令。<pre>D:\setup.exe /Q  `<br />/ACTION=AddNode `<br />/IACCEPTSQLSERVERLICENSETERMS `<br />/INSTANCENAME="MSSQLSERVER"  `<br />/FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" `<br />/FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" `<br />/FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" `<br />/CONFIRMIPDEPENDENCYCHANGE=1 `<br />/SQLSVCACCOUNT="<domain\username>"  /SQLSVCPASSWORD="<Domain User password>" `<br />/AGTSVCACCOUNT="domain\username>"  /AGTSVCPASSWORD="<Domain User password>" `<br />/FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `<br />/SkipRules=Cluster_VerifyForErrors `<br />/INDICATEPROGRESS</pre> | AWS DevOps、DBA、DevOps 工程師 | 
| 測試 SQL Server FCI。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | DBA，DevOps 工程師 | 

### 清除資源
<a name="clean-up-resources"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 清除資源。 | 若要清除資源，請使用 AWS CloudFormation 堆疊刪除程序：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html)<br />堆疊刪除完成後，堆疊將處於 `DELETE_COMPLETE` 狀態。根據預設，`DELETE_COMPLETE`處於 狀態的堆疊不會顯示在 CloudFormation 主控台中。若要顯示已刪除的堆疊，您必須變更堆疊檢視篩選條件，如在 [ AWS CloudFormation 主控台上檢視已刪除的堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-deleted-stacks.html)所述。<br />如果刪除失敗，堆疊將處於 `DELETE_FAILED` 狀態。如需解決方案，請參閱 CloudFormation 文件中的[刪除堆疊失敗](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-delete-stack-fails)。 | AWS DevOps、DBA、DevOps 工程師 | 

## 疑難排解
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| AWS CloudFormation 範本失敗 | 如果 CloudFormation 範本在部署期間失敗，請執行下列動作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | 
| AWS Managed Microsoft AD 聯結失敗 | 若要疑難排解聯結問題，請依照下列步驟進行：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.html) | 

## 相關資源
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-resources"></a>
+ [使用 Amazon FSx for Windows File Server 簡化 Microsoft SQL Server 高可用性部署](https://aws.amazon.com/blogs/storage/simplify-your-microsoft-sql-server-high-availability-deployments-using-amazon-fsx-for-windows-file-server/)
+ [將 FSx for Windows File Server 與 Microsoft SQL Server 搭配使用](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/sql-server.html)