

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon FSx を使用して SQL Server Always On FCI 向けのマルチ AZ インフラストラクチャをセットアップする
<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 フェイルオーバークラスターインスタンス (FCI) を迅速に移行する必要がある場合、このパターンを使用するとプロビジョニング時間を最小限に抑えることができます。自動化と Amazon FSx for Windows File Server を使用することで、手作業、人為的ミス、および多数のクラスターをデプロイするのに必要な時間を削減できます。

このパターンでは、Amazon Web Services (AWS) のマルチアベイラビリティーゾーン (マルチ AZ) 配置で SQL Server FCI のインフラストラクチャを設定します。このインフラストラクチャに必要な 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 コマンドで実行されます。

このソリューションでは、可用性の高いマルチ AZ [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 CloudFormation テンプレートを使用してリソースをプロビジョニングするために十分な権限を持つ AWS ユーザー
+ AWS Directory Service for Microsoft Active Directory
+ キーと値のペアで AWS Managed Microsoft AD を認証するための AWS Secrets Manager の認証情報:
  + `ADDomainName`: <Domain Name>
  + `ADDomainJoinUserName`: <Domain Username>
  + `ADDomainJoinPassword`:<Domain User Password>
  + `TargetOU` : <Target OU Value>
**注記**  
AWS Managed Microsoft AD への参加アクティビティでは、AWS Systems Manager Automation でも同じキー名を使用します。
+ SQL Server のインストールおよび Windows サービスまたはドメインアカウントを作成するための SQL Server メディアファイル。これらはクラスター作成時に使用されます。
+ 別々のアベイラビリティーゾーンに 2 つのパブリックサブネット、アベイラビリティーゾーンに 2 つのプライベートサブネット、インターネットゲートウェイ、NAT ゲートウェイ、ルートテーブルの関連付け、ジャンプサーバーを備えた仮想プライベートクラウド (VPC)

**製品バージョン**
+ Windows Server 2012 R2 および Microsoft SQL Server 2016

## アーキテクチャ
<a name="set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx-architecture"></a>

**ソーステクノロジースタック**
+ 共有ドライブを使用する FCI を備えたオンプレミスの SQL Server

**ターゲットテクノロジースタック**
+ AWS EC2 インスタンス
+ Amazon FSx for Windows File Server
+ AWS Systems Manager Automation ランブック
+ ネットワーク設定 (VPC、サブネット、インターネットゲートウェイ、NAT ゲートウェイ、ジャンプサーバー、セキュリティグループ)
+ AWS Secrets Manager
+ AWS Managed Microsoft AD
+ Amazon EventBridge
+ AWS Identity and Access Management (IAM)

**ターゲットアーキテクチャ**

次の図は、1 つの AWS リージョン内の AWS アカウントを示しています。その VPC には 2 つのアベイラビリティーゾーン、2 つのパブリックサブネット (NAT ゲートウェイ付き)、1 つ目のパブリックサブネットに 1 つのジャンプサーバー、2 つのプライベートサブネット (それぞれにノードセキュリティグループ内の SQL Server ノードの EC2 インスタンスがあります)、および 各 SQL Server ノードに接続する Amazon FSx ファイルシステムが含まれます。AWS Directory Service、Amazon EventBridge、AWS Secrets Manager、AWS Systems Manager も含まれます。　

![パブリックサブネットとプライベートサブネットのリソースとノードセキュリティグループを備えたマルチ AZ アーキテクチャ。](http://docs.aws.amazon.com/ja_jp/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) は、Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Relational Database Service (Amazon RDS) for SQL Server、Amazon FSx for Windows File Server などの他の AWS サービスで Microsoft Active Directory (AD) を使用するための複数の方法を提供します。
+ 「[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) は、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、シークレットをプログラムで取得する上で役立ちます。
+ 「[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>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Systems Manager CloudFormation スタックをデプロイします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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 スタックのデプロイが正常に完了したら、EC2 インスタンスノード、セキュリティグループ、Amazon FSx for Windows File Server ファイルシステム、および IAM ロールを含む `infra` スタックを作成します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Windows ツールのインストール　 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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 ドメインサービスでクラスター化されたコンピュータオブジェクトをプレステージします。 | Active Directory ドメインサービス (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 Failover Clustering (WSFC) クラスターを作成できます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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 クラスターを設定したら、SQL Server クラスターをプライマリインスタンス (ノード 1) にインストールします。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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/ja_jp/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>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リソースをクリーンアップします。 | リソースをクリーンアップするには、AWS CloudFormation スタックの削除プロセスを実行します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/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/ja_jp/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/ja_jp/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/)」
+ 「[Microsoft SQL Server で FSx for Windows File Server を使用する](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/sql-server.html)」