AWS/Azure/GCP における SQL Server の高可用性パターンまとめ

## はじめに
各クラウドごとに以下のパターンを記載しています。

* マネージドサービスを利用する場合
* VM で Always On Availability Groups を構成する場合
* VM で Always On Failover Cluster Instances を構成する場合


## AWS
### Amazon RDS with SQL Server Always On Availability Groups
RDSのマルチAZ配置では以下のバージョンおよびエディションで Always On AG をサポート。

* SQL Server 2019：Standard and Enterprise Editions
* SQL Server 2017：Enterprise Edition 14.00.3049.1以降
* SQL Server 2016：Enterprise Edition 13.00.5216.0以降

上記以外のSQL Server 2012 以降の Starndard Edtion および Enterprise Edtion では
データベースミラーリングによるマルチAZ構成となる。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_SQLServerMultiAZ.html

### Amazon EC2 with SQL Server Always On Availability Groups
[AWS Launch Wizard for SQL Server](https://aws.amazon.com/launchwizard/) を使用することでマルチAZ環境で
SQL Server Always On Availability Groups を自動的にプロビジョニングすることができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/26c5360f-fa01-fd77-a977-21ed4a92262a.png)


https://aws.amazon.com/jp/blogs/news/accelerate-sql-server-always-on-deployments-with-aws-launch-wizard/

### Amazon EC2 with SQL Server Always On Failover Cluster Instances
[Amazon FSx for Windows File Server](https://aws.amazon.com/jp/fsx/windows/) が Continuously Available File Shares をサポートした。これにより FSx for Windows File Server を共有ディスクとして利用することで、SMB Transparent Failover による Always On FCI 構成をデプロイをできるようになった。また FSx for Windows File Server を最小構成の32GBで作成し、SMB ファイル共有監視として利用することで AWS上でマネージドされたストレージを活用して以下のような構成をとることができる。
(画像は AWS Storage Blog より引用)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/7f8b4aa6-d38f-8b5a-2243-990b93c601e0.png)

https://aws.amazon.com/jp/blogs/storage/simplify-your-microsoft-sql-server-high-availability-deployments-using-amazon-fsx-for-windows-file-server/

**2021/5/30 追記**
上記の構成が [AWS Launch Wizard for SQL Server](https://aws.amazon.com/launchwizard/) を使用してセットアップ可能になった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/0ed6e773-1361-5b1d-6ce1-4add58ea5741.png)

https://aws.amazon.com/jp/blogs/storage/simplify-sql-server-always-on-deployments-with-the-aws-launch-wizard-and-amazon-fsx/

### 参考資料
* [Best practices for advanced SQL Server storage architectures](https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Best_practices_for_advanced_SQL_Server_storage_architectures_WIN319-R1.pdf)
* [Design, migrate, and optimize SQL Server on AWS](https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Design,_migrate,_and_optimize_SQL_Server_on_AWS_WIN313-R1.pdf)
* [Deep dive on Amazon FSx for Windows File Server](https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Deep_dive_on_Amazon_FSx_for_Windows_File_Server_STG306-R1.pdf)

## Azure
### Azure SQL Database
Basic, Standard, General Purpose サービス層では標準可用性モデルが適用される。
Premium および Business Critical サービス層ではプレミアム可用性モデルが適用される。
プレミアム可用性モデルでは Always On Availability Groups と同様のテクノロジーで
高可用性が実装されているとのこと。
Hyperscale サービス層ではアーキテクチャ自体が従来のデータベースサービスとは異なる
分散アーキテクチャで構成されている。AWS でいうところの Aurora に近い。

**High-availability and Azure SQL Database**
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-high-availability

### Azure VM with SQL Server Always On Availability Groups
手動で構成するか、Azure Portal のギャラリーまたは GitHub で公開されている
クイックスタートテンプレートを使用して部分的に自動プロビジョニングが可能。

**Use Azure quickstart templates to configure an availability group for SQL Server on an Azure VM**
https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-availability-group-quickstart-template

### Azure VM with SQL Server Always On Failover Cluster Instances

Windows Server 2016 以降で S2D: Storage Spaces Direct による仮想的な共有ストレージを作成するか、
Azure Files のプレミアムファイル共有を利用することで Always On FCI を構築可能。

**Configure a SQL Server failover cluster instance on Azure virtual machines**
https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-create-failover-cluster
**Configure a SQL Server failover cluster instance with premium file share on Azure virtual machines**
https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-create-failover-cluster-premium-file-share

2020年8月に Azure Shared Disks による Always On FCI 構成が一般利用可能になった。

**Create an FCI with Azure shared disks (SQL Server on Azure VMs)**
https://docs.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/failover-cluster-instance-azure-shared-disks-manually-configure

## GCP
### Cloud SQL for SQL Server
2020年2月19日に一般利用可能になった。
同期レプリケーションによるHA構成をとることができるが、Always On AG ではない。
(Cloud SQL で利用できない機能の一覧に Always On Availability Groups の記載あり)

**General features unavailable for Cloud SQL**
https://cloud.google.com/sql/docs/sqlserver/features#sqlserver-unavailable

### Compute Engine with SQL Server Always On Availability Groups
以下の手順で手動で構成することが可能

**SQL Server AlwaysOn 可用性グループの構成**
https://cloud.google.com/compute/docs/instances/sql-server/configure-availability

### Compute Engine with SQL Server Always On Failover Cluster Instances
以下の手順で、S2D を利用した Always On FCI を構成することが可能。(Windows Server 2016 以降)

**SQL Server フェイルオーバー クラスタ インスタンスの構成**
https://cloud.google.com/compute/docs/instances/sql-server/configure-failover-cluster-instance

以上です。
参考になれば幸いです。