このチュートリアルは、Microsoft Active Directory、SQL Server 2016、Internet Information Services(IIS)を使用して、可用性の高い Windows 環境を Google Cloud にデプロイに役立つシリーズの 2 番目です。このチュートリアルでは、同じリージョンの異なるゾーンに 2 つの SQL Server インスタンスをセットアップし、これらをマルチ サブネットの Always On SQL Server 可用性グループとして構成します。
このシリーズは次のチュートリアルで構成されています。
- フォールト トレラントな Microsoft Active Directory 環境のデプロイ
- マルチ サブネット SQL Server のデプロイ(このドキュメント)
- 負荷分散された IIS ウェブサーバーのデプロイ
各チュートリアルは、前のチュートリアルで作成したインフラストラクチャに基づいています。
目標
- 2 つのゾーンにまたがる 2 つのネットワーク サブネットを作成する。
- 各ゾーンに Microsoft SQL Server 2016 仮想マシン(VM)をデプロイする。
- Active Directory ドメインに参加するように SQL Server インスタンスを設定する。
- Windows Server フェイルオーバー クラスタを作成する。
- SQL Server
bookshelf
サンプルデータベースを作成して構成する。 - SQL Server Always On Availability グループを設定する。
費用
このチュートリアルでは、前のチュートリアルで構成した Google Cloud リソースを引き続き使用します。次の課金対象コンポーネントを使用します。
料金計算ツールの見積もりでは、この環境の費用は 1 日あたり約 $98 です。これには、SQL Server 2016 Enterprise ライセンスと 2 サーバーの Active Directory 環境の費用も含まれています。
始める前に
このチュートリアルで使用する構成には、Windows ドメイン コントローラと作業中の Active Directory ドメインへのアクセス権が必要です。この環境がない場合は、次のチュートリアルの手順を完了します。
共通変数の初期化
インフラストラクチャの要素がデプロイされる場所を制御する環境変数をいくつか定義する必要があります。
テキスト エディタを使用して、次の環境変数を設定して、使用するリージョンとゾーンとともにプロジェクト ID を指定するスクリプトを作成します。
変数は、リージョンを
us-east1
に設定します。以前のチュートリアルで別のリージョンを使用した場合は、このスクリプトのリージョンを以前使用したものと一致するように変更します。region=us-east1 zone_1=${region}-b zone_2=${region}-c vpc_name=webappnet project_id=your-project-id
your-project-id は、使用している Cloud プロジェクトの ID に置き換えます。
Cloud Shell を開きます。
スクリプトを Cloud Shell ウィンドウにコピーして実行します。
デフォルトのリージョンとプロジェクト ID を設定します。そうすると、以降の各コマンドでこれらの値を指定する必要がなくなります。
gcloud config set compute/region ${region} gcloud config set project ${project_id}
ネットワーク インフラストラクチャの作成
インフラストラクチャ変数を定義した後には、SQL Server で使用するネットワーク サブネットを作成します。
既存の Virtual Private Cloud(VPC)ネットワークに新しいサブネットを追加します。
gcloud compute networks subnets create private-sql-1 \ --network ${vpc_name} \ --range 10.3.0.0/24 gcloud compute networks subnets create private-sql-2 \ --network ${vpc_name} \ --range 10.4.0.0/24
以前に作成した
private-ad*
サブネットと新しいprivate-sql*
サブネットの間のトラフィックを許可する内部ファイアウォール ルールを作成します。gcloud compute firewall-rules create allow-internal-ports-private-sql \ --network ${vpc_name} \ --allow tcp:0-65535,udp:0-65535,icmp \ --source-ranges 10.4.0.0/24,10.3.0.0/24,10.2.0.0/24,10.1.0.0/24
SQL Server インスタンスの作成
次に、以下のプロパティを持つ Compute Engine の事前構成済みイメージを使用して、SQL Server 2016 Enterprise エディションの VM を 2 台作成します。
- 名前:
bookshelf-sql1
とbookshelf-sql2
- ブートディスクのサイズ:
200GB
- マシンタイプ:
n1-highmem-4
このチュートリアル以外でこの環境を使用し、追加の計算リソースが必要になった場合は、これらのインスタンスに合わせてマシンタイプをカスタマイズできます。ディスクを追加して、既存の永続ディスクのサイズを変更することもできます。
このチュートリアルでは、VM 用の Windows Server パブリック イメージに構築された SQL Server を使用します。つまり、SQL Server の使用料金が請求されます。ソフトウェア アシュアランスによるライセンス モビリティを使用して既存の SQL Server ライセンスを Compute Engine にデプロイし、Windows Server のパブリック イメージのいずれかに SQL Server をインストールした後で、これらのライセンスを適用することもできます。
SQL Server 2016 Enterprise で Windows Server 2016 の Compute Engine インスタンスを作成します。
gcloud compute instances create bookshelf-sql1 \ --machine-type n1-highmem-4 \ --boot-disk-type pd-ssd \ --boot-disk-size 200GB \ --image-project windows-sql-cloud \ --image-family sql-ent-2016-win-2016 \ --zone ${zone_1} \ --network-interface=network=${vpc_name},subnet=private-sql-1,private-network-ip=10.3.0.2,aliases=10.3.0.4/31
2 番目のインスタンスを作成します。
gcloud compute instances create bookshelf-sql2 \ --machine-type n1-highmem-4 \ --boot-disk-type pd-ssd \ --boot-disk-size 200GB \ --image-project windows-sql-cloud \ --image-family sql-ent-2016-win-2016 \ --zone ${zone_2} \ --network-interface=network=${vpc_name},subnet=private-sql-2,private-network-ip=10.4.0.2,aliases=10.4.0.4/31
bookshelf-sql2 インスタンスの構成
次に、bookshelf-sql2
インスタンスを構成します。bookshelf-sql1
でデータベースを構成するには追加の作業が必要であり、また bookshelf-sql2
を構成する際に最初に必要となるリモート デスクトップ プロトコル(RDP)セッションは少ないため、2 番目のインスタンスから始めます。
Windows インスタンス
bookshelf-sql2
のパスワードを作成します。gcloud compute reset-windows-password bookshelf-sql2 \ --zone ${zone_2} --quiet
ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。
RDP を使用し、以前に作成した認証情報を使用して SQL Server インスタンスに接続します。
インスタンスで、管理者として PowerShell ターミナルを開きます。([スタート] をクリックし、「
PowerShell
」と入力してControl+Shift+Enter
キーを押します)。以下の変数を設定します。
$DomainName = "example-gcp.com" $DNS1 = "10.1.0.100" $DNS2 = "10.2.0.100" $LocalStaticIp = "10.4.0.2" $DefaultGateway = "10.4.0.1"
プライマリ DNS サーバーを設定します。
netsh interface ip set dns Ethernet static $DNS1
セカンダリ DNS サーバーを設定します。
netsh interface ip add dns Ethernet $DNS2 index=2
IP アドレスとデフォルト ゲートウェイを設定します。
netsh interface ip set address name=Ethernet static $LocalStaticIp 255.255.255.0 $DefaultGateway 1
Windows ドメインに VM を追加します。
Add-Computer -DomainName $DomainName ` -Credential (Get-Credential "example-gcp\Administrator")
Administrator
アカウントのパスワードの入力を求められたら、前のチュートリアルで Active Directory フォレストをインストールするときに定義した Administrator の認証情報を使用します。ユーザー名には、EXAMPLE-GCP\Administrator
のようにドメイン名をプレフィックスとして追加します。SQL Server 可用性グループの Windows ファイアウォール ポートを開きます。
netsh advfirewall firewall add rule name="5022 for Avail Groups" dir=in action=allow protocol=TCP localport=5022 netsh advfirewall firewall add rule name="1433 for SQL Server" dir=in action=allow protocol=TCP localport=1433
フェイルオーバー クラスタリング機能をインストールします。
Install-WindowsFeature Failover-Clustering -IncludeManagementTools
インスタンスを再起動します。
Restart-Computer
RDP を使用し、
EXAMPLE-GCP\Administrator
アカウントの認証情報を使用して SQL Server インスタンスに接続します。Administrator として PowerShell コンソールを開きます。
PowerShell コンソール ウィンドウで、SQL Server のデータとログファイルを保存するフォルダを作成します。
New-Item -ItemType directory -Path C:\SQLData New-Item -ItemType directory -Path C:\SQLLog
データベースのバックアップを保存する新しいフォルダを作成して共有します。
New-Item -ItemType directory -Path C:\SQLBackup New-SMBShare -Name SQLBackup -Path C:\SQLBackup -FullAccess "Authenticated Users"
bookshelf-sql1 インスタンスの構成
次に、bookshelf-sql1
インスタンスを構成します。
Cloud Shell で、Windows インスタンス
bookshelf-sql1
のパスワードを作成します。gcloud compute reset-windows-password bookshelf-sql1 --zone ${zone_1} --quiet
ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。
RDP を使用して、
bookshelf-sql1
インスタンス用に作成した認証情報を使用して SQL Server インスタンスに接続します。Administrator として PowerShell コンソールを開きます。
PowerShell コンソール ウィンドウで、次の変数を設定します。
$DomainName = "example-gcp.com" $DNS1 = "10.1.0.100" $DNS2 = "10.2.0.100" $LocalStaticIp = "10.3.0.2" $DefaultGateway = "10.3.0.1"
プライマリ DNS サーバーを設定します。
netsh interface ip set dns Ethernet static $DNS1
セカンダリ DNS サーバーを設定します。
netsh interface ip add dns Ethernet $DNS2 index=2
IP アドレスとデフォルト ゲートウェイを設定します。
netsh interface ip set address name=Ethernet static $LocalStaticIp 255.255.255.0 $DefaultGateway 1
VM をドメインに追加します。
Add-Computer -DomainName $DomainName ` -Credential (Get-Credential "example-gcp\Administrator")
Administrator アカウントのパスワードの入力を求められたら、前のチュートリアルで Active Directory フォレストをインストールするときに定義した Administrator の認証情報を使用します。ユーザー名には、
EXAMPLE-GCP\Administrator
のようにドメイン名をプレフィックスとして追加します。Windows ファイアウォールのルールを追加します。
netsh advfirewall firewall add rule name="5022 for Avail Groups" dir=in action=allow protocol=TCP localport=5022 netsh advfirewall firewall add rule name="1433 for SQL Server" dir=in action=allow protocol=TCP localport=1433
フェイルオーバー クラスタリング機能をインストールします。
Install-WindowsFeature Failover-Clustering -IncludeManagementTools
インスタンスを再起動します。
Restart-Computer
Windows Server フェイルオーバー クラスタの構成
RDP を使用して
bookshelf-sql1
インスタンスに接続します。Administrator アカウントのパスワードの入力を求められたら、前のチュートリアルで Active Directory フォレストをインストールするときに定義した Administrator の認証情報を使用します。ユーザー名には、EXAMPLE-GCP\Administrator
のようにドメイン名をプレフィックスとして追加します。Administrator として PowerShell コンソールを開きます。
PowerShell コンソール ウィンドウで、次の変数を設定します。
$node1 = "bookshelf-sql1" $node2 = "bookshelf-sql2"
クラスタの名前を設定します。
$nameWSFC = "bookshelf-dbclus"
クラスタとクラスタ リスナーの IP アドレスを設定します。
$ipWSFC1 = "10.3.0.4" $ipWSFC2 = "10.4.0.4" $ipWSListener1 = "10.3.0.5" $ipWSListener2 = "10.4.0.5"
bookshelf-sql1
SQL Server インスタンスがクラスタに参加する準備ができていることを確認します。次のスクリプトを実行して、SQL Server インスタンスに接続します。$SQLServer1IsReady=$False For ($i=0; $i -le 30; $i++) { $SqlCatalog = "master" $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server = $node1;" + ` "Database = $SqlCatalog; Integrated Security = True" try { $SqlConnection.Open() Write-Host "Connection to the server $node1 was successful" $SQLServer1IsReady=$True $SqlConnection.Close() break } catch { Write-Host "SQL server $node1 is not ready, waiting for 60s" Start-Sleep -s 60 #Wait for 60 seconds } } if($SQLServer1IsReady -eq $False) { Write-Error "$node1 is not responding. Was it deployed correctly?" }
bookshelf-sql2
SQL Server インスタンスがクラスタに参加する準備ができていることを確認します。$SQLServer2IsReady=$False For ($i=0; $i -le 30; $i++) { $SqlCatalog = "master" $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server = $node2;" + ` "Database = $SqlCatalog; Integrated Security = True" try { $SqlConnection.Open() Write-Host "Connection to the server $node2 was successful" $SQLServer2IsReady=$True $SqlConnection.Close() break } catch { Write-Host "SQL server $node2 is not ready, waiting for 60s" Start-Sleep -s 60 #Wait for 60 seconds } } if($SQLServer2IsReady -eq $False) { Write-Error "$node2 is not responding. Was it deployed correctly?" }
新しいクラスタを作成します。
New-Cluster -Name $nameWSFC -Node $node1, $node2 -NoStorage ` -StaticAddress $ipWSFC1, $ipWSFC2
両方のノードで Always On availability グループ機能を有効にします。
Enable-SqlAlwaysOn -ServerInstance $node1 -Force Enable-SqlAlwaysOn -ServerInstance $node2 -Force
データベース データとログファイル用のフォルダを作成します。
New-Item -ItemType directory -Path C:\SQLData New-Item -ItemType directory -Path C:\SQLLog
データベースの設定
このチュートリアルでは、bookshelf
サンプル データベースを使用して、構成が正しく動作することをテストします。
使用している PowerShell コンソール ウィンドウで、次の SQL ステートメントを実行して
bookshelf
データベースを作成します。$CreateDatabaseSQLScript = @" CREATE DATABASE bookshelf ON PRIMARY (NAME = 'bookshelf_Data', FILENAME='C:\SQLData\bookshelf_data.mdf', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB ) LOG ON (NAME = 'bookshelf_log', FILENAME='C:\SQLLog\bookshelf_log.ldf', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 256MB ) GO USE [bookshelf] Exec dbo.sp_changedbowner @loginame = 'sa', @map = false; ALTER DATABASE [bookshelf] SET RECOVERY FULL; GO BACKUP DATABASE bookshelf to disk = '\\bookshelf-sql2\SQLBackup\bookshelf.bak' WITH INIT GO "@ Invoke-Sqlcmd -Query $CreateDatabaseSQLScript -ServerInstance $node1
次の SQL ステートメントを実行して
Books
テーブルを作成します。$CreateTableSQLScript = @" USE [bookshelf] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Books] ( [Id] [bigint] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Author] [nvarchar](max) NULL, [PublishedDate] [datetime] NULL, [ImageUrl] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [CreatedById] [nvarchar](max) NULL, CONSTRAINT [PK_dbo.Books] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO "@ Invoke-Sqlcmd -Query $CreateTableSQLScript -ServerInstance $node1
以下の変数を設定します。
$Domain = "example-gcp.com" $ADControllerFQDN = "ad-dc1.$Domain" $ServiceAccountName = "sql.service" $ServiceAccountPrincipalName = "$ServiceAccountName@$Domain"
次の PowerShell コマンドで
RSAT-AD-PowerShell
cmdlet を有効にします。Add-WindowsFeature RSAT-AD-PowerShell
VM からサービス アカウントを作成するには、リモート サーバー管理ツールが必要です。
ドメイン内に
sql.service
という名前のデータベース サービス アカウントを追加します。New-ADUser -Name $ServiceAccountName ` -Server $ADControllerFQDN ` -SamAccountName $ServiceAccountName ` -UserPrincipalName $ServiceAccountPrincipalName ` -AccountPassword (Read-Host -AsSecureString "AccountPassword") ` -PassThru | Enable-ADAccount
sql.service
アカウントのパスワードを入力するよう求められたら、強力なパスワードを使用し、今後使用するためにパスワードを安全な場所に保管してください。次の SQL ステートメントを実行して、データベース管理者として
EXAMPLE-GCP\sql.service
アカウントを追加します。$AddSQLServiceAccountScript = @" USE [master] GO CREATE LOGIN [EXAMPLE-GCP\sql.service] FROM WINDOWS WITH DEFAULT_DATABASE=[bookshelf], DEFAULT_LANGUAGE=[us_english] GO USE [bookshelf] GO CREATE USER [EXAMPLE-GCP\sql.service] FOR LOGIN [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_accessadmin] ADD MEMBER [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_backupoperator] ADD MEMBER [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_datareader] ADD MEMBER [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_datawriter] ADD MEMBER [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_ddladmin] ADD MEMBER [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_owner] ADD MEMBER [EXAMPLE-GCP\sql.service] GO USE [bookshelf] GO ALTER ROLE [db_securityadmin] ADD MEMBER [EXAMPLE-GCP\sql.service] GO "@ Invoke-Sqlcmd -Query $AddSQLServiceAccountScript -ServerInstance $node1
SQL Server 可用性グループの設定
作業中のインスタンスがまだ存在する場合は、次の変数を設定します。
$Database="bookshelf" $BackupFolder="SQLBackup" $SharedLocation="\\$node2\$BackupFolder" $ListenerName="sql-listener" $AGName="MainAG" $PrimaryServer = "$node1.$Domain\MSSQLSERVER" $SecondaryServer = "$node2.$Domain\MSSQLSERVER"
プライマリ サーバーでデータベースのバックアップを作成します。
Backup-SqlDatabase ` -Database $Database -Initialize ` -BackupFile "$SharedLocation\$Database.bak" ` -ServerInstance $node1
セカンダリ サーバーにデータベースを復元します。
Restore-SqlDatabase ` -Database $Database ` -BackupFile "$SharedLocation\$Database.bak" ` -ServerInstance $node2 ` -NORECOVERY
プライマリ サーバーでデータベース ログのバックアップを作成します。
Backup-SqlDatabase ` -Database $Database -Initialize ` -BackupFile "$SharedLocation\$Database.log" ` -ServerInstance $node1 ` -BackupAction Log
セカンダリ サーバーにデータベース ログを復元します。
Restore-SqlDatabase ` -Database $Database ` -BackupFile "$SharedLocation\$Database.log" ` -ServerInstance $node2 ` -RestoreAction Log ` -NORECOVERY
エンドポイントを作成して開始します。
$endpoint1=New-SqlHADREndpoint -Port 5022 -Owner sa ` -Encryption Supported -EncryptionAlgorithm Aes ` -Name AlwaysonEndpoint1 ` -Path "SQLSERVER:\SQL\$node1.$Domain\Default" Set-SqlHADREndpoint -InputObject $endpoint1 -State Started $endpoint2=New-SqlHADREndpoint -Port 5022 -Owner sa ` -Encryption Supported -EncryptionAlgorithm Aes ` -Name AlwaysonEndpoint2 ` -Path "SQLSERVER:\SQL\$node2.$Domain\Default" Set-SqlHADREndpoint -InputObject $endpoint2 -State Started
次のような出力が表示されます。
AlwaysonEndpoint1 STARTED 5022 - for node1 AlwaysonEndpoint2 STARTED 5022 - for node2
PowerShell で次のコマンドを実行して、構成を確認します。
$node1 = "bookshelf-sql1" $node2 = "bookshelf-sql2" Invoke-Sqlcmd -Query "select name, state_desc, port FROM sys.tcp_endpoints" -ServerInstance $node1 Invoke-Sqlcmd -Query "select name, state_desc, port FROM sys.tcp_endpoints" -ServerInstance $node2
構成が正しい場合は、次のような出力が表示されます。
name state_desc port ---- ---------- ---- Dedicated Admin Connection STARTED 0 TSQL Default TCP STARTED 0 AlwaysonEndpoint1 STARTED 5022 Dedicated Admin Connection STARTED 0 TSQL Default TCP STARTED 0 AlwaysonEndpoint2 STARTED 5022
エンドポイント URL を設定します。
$EndpointUrlSQLServer1="TCP://" + $node1 + "." + $Domain + ":5022" $EndpointUrlSQLServer2="TCP://" + $node2 + "." + $Domain + ":5022"
レプリカのメモリ内表現を作成します。
$PrimaryReplica = New-SqlAvailabilityReplica -Name $node1 ` -EndpointUrl $EndpointUrlSQLServer1 ` -FailoverMode "Automatic" ` -AvailabilityMode "SynchronousCommit" ` -AsTemplate -Version 13 $SecondaryReplica = New-SqlAvailabilityReplica -Name $node2 ` -EndpointUrl $EndpointUrlSQLServer2 ` -FailoverMode "Automatic" ` -AvailabilityMode "SynchronousCommit" ` -AsTemplate -Version 13
可用性グループを作成します。
New-SqlAvailabilityGroup -Name $AGName ` -AvailabilityReplica @($PrimaryReplica, $SecondaryReplica) ` -Path "SQLSERVER:\SQL\$node1.$Domain\Default" ` -Database $Database
セカンダリ インスタンスを可用性グループに追加します。
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\$node2\Default" -Name $AGName
セカンダリ データベースを可用性グループに追加します。
Add-SqlAvailabilityDatabase ` -Path "SQLSERVER:\SQL\$node2\Default\AvailabilityGroups\$AGName" ` -Database $Database
リスナーを作成します。
New-SqlAvailabilityGroupListener -Name $ListenerName ` -Port 1433 ` -StaticIp @("$ipWSListener1/255.255.255.0","$ipWSListener2/255.255.255.0") ` -Path SQLSERVER:\Sql\$node1\Default\AvailabilityGroups\$AGName
不要になった共有フォルダを削除します。
For ($i=0; $i -le 30; $i++) { try { Remove-Item \\$node2\c$\$BackupFolder -Force -Recurse -ErrorAction Stop Write-Host "Shared folder $SharedLocation was removed" break } catch { Write-Host "\\$node2\c$\$BackupFolder is in use waiting 1m to retry" Start-Sleep -s 60 } }
クリーンアップ
このシリーズの次のチュートリアル(負荷分散された IIS ウェブサーバーのデプロイ)に進む場合は、このチュートリアルで作成したリソースを使用します。ただし、このチュートリアルで作成した環境を使用しない場合、Google Cloud で作成したリソースについて料金が発生しないようリソースをクリーンアップします。次のセクションで、このようなリソースを削除するか無効にする方法を説明します。
プロジェクトの削除
インスタンスの削除
プロジェクト全体を削除しない場合、作成した特定のリソースを削除できます。
Compute Engine インスタンスを削除するには:
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
削除するインスタンスを選択します。
ページの上部にある [削除] をクリックして、インスタンスを削除します。
VPC ネットワークの削除
VPC ネットワーク、サブネット、ファイアウォール ルールを削除するには:
Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
作成した VPC ネットワークを選択します。
ページの上部にある [削除] をクリックして、ネットワークを削除します。
次のステップ
- このシリーズの次のチュートリアルに進む。
- Google Cloud での SQL Server の詳細を学ぶ。
- スケーラブルで可用性の高いワークロードを設計するためのベスト プラクティスを確認する。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center をご覧ください。