マルチ サブネットの SQL Server 2016 Always On 可用性グループを Compute Engine にデプロイ


このチュートリアルは、Microsoft Active Directory、SQL Server 2016、Internet Information Services(IIS)を使用して、可用性の高い Windows 環境を Google Cloud にデプロイに役立つシリーズの 2 番目です。このチュートリアルでは、同じリージョンの異なるゾーンに 2 つの SQL Server インスタンスをセットアップし、これらをマルチ サブネットの Always On SQL Server 可用性グループとして構成します。

このシリーズは次のチュートリアルで構成されています。

各チュートリアルは、前のチュートリアルで作成したインフラストラクチャに基づいています。

目標

  • 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 ドメインへのアクセス権が必要です。この環境がない場合は、次のチュートリアルの手順を完了します。

共通変数の初期化

インフラストラクチャの要素がデプロイされる場所を制御する環境変数をいくつか定義する必要があります。

  1. テキスト エディタを使用して、次の環境変数を設定して、使用するリージョンとゾーンとともにプロジェクト 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 に置き換えます。

  2. Cloud Shell を開きます。

    Cloud Shell を開く

  3. スクリプトを Cloud Shell ウィンドウにコピーして実行します。

  4. デフォルトのリージョンとプロジェクト ID を設定します。そうすると、以降の各コマンドでこれらの値を指定する必要がなくなります。

    gcloud config set compute/region ${region}
    gcloud config set project ${project_id}
    

ネットワーク インフラストラクチャの作成

インフラストラクチャ変数を定義した後には、SQL Server で使用するネットワーク サブネットを作成します。

  1. 既存の 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
    
  2. 以前に作成した 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-sql1bookshelf-sql2
  • ブートディスクのサイズ: 200GB
  • マシンタイプ: n1-highmem-4

このチュートリアル以外でこの環境を使用し、追加の計算リソースが必要になった場合は、これらのインスタンスに合わせてマシンタイプをカスタマイズできます。ディスクを追加して、既存の永続ディスクのサイズを変更することもできます。

このチュートリアルでは、VM 用の Windows Server パブリック イメージに構築された SQL Server を使用します。つまり、SQL Server の使用料金が請求されます。ソフトウェア アシュアランスによるライセンス モビリティを使用して既存の SQL Server ライセンスを Compute Engine にデプロイし、Windows Server のパブリック イメージのいずれかに SQL Server をインストールした後で、これらのライセンスを適用することもできます。

  1. 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. 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 番目のインスタンスから始めます。

  1. Windows インスタンス bookshelf-sql2 のパスワードを作成します。

    gcloud compute reset-windows-password bookshelf-sql2 \
        --zone ${zone_2} --quiet
    

    ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。

  2. RDP を使用し、以前に作成した認証情報を使用して SQL Server インスタンスに接続します。

  3. インスタンスで、管理者として PowerShell ターミナルを開きます。([スタート] をクリックし、「PowerShell」と入力して Control+Shift+Enter キーを押します)。

  4. 以下の変数を設定します。

    $DomainName = "example-gcp.com"
    $DNS1 = "10.1.0.100"
    $DNS2 = "10.2.0.100"
    $LocalStaticIp = "10.4.0.2"
    $DefaultGateway = "10.4.0.1"
    
  5. プライマリ DNS サーバーを設定します。

    netsh interface ip set dns Ethernet static $DNS1
  6. セカンダリ DNS サーバーを設定します。

    netsh interface ip add dns Ethernet $DNS2 index=2
  7. IP アドレスとデフォルト ゲートウェイを設定します。

    netsh interface ip set address name=Ethernet static $LocalStaticIp 255.255.255.0 $DefaultGateway 1
  8. Windows ドメインに VM を追加します。

    Add-Computer -DomainName $DomainName `
        -Credential (Get-Credential "example-gcp\Administrator")
    
  9. Administrator アカウントのパスワードの入力を求められたら、前のチュートリアルで Active Directory フォレストをインストールするときに定義した Administrator の認証情報を使用します。ユーザー名には、EXAMPLE-GCP\Administrator のようにドメイン名をプレフィックスとして追加します。

  10. 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
    
  11. フェイルオーバー クラスタリング機能をインストールします。

    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
  12. インスタンスを再起動します。

    Restart-Computer
  13. RDP を使用し、EXAMPLE-GCP\Administrator アカウントの認証情報を使用して SQL Server インスタンスに接続します。

  14. Administrator として PowerShell コンソールを開きます。

  15. PowerShell コンソール ウィンドウで、SQL Server のデータとログファイルを保存するフォルダを作成します。

    New-Item -ItemType directory -Path C:\SQLData
    New-Item -ItemType directory -Path C:\SQLLog
    
  16. データベースのバックアップを保存する新しいフォルダを作成して共有します。

    New-Item -ItemType directory -Path C:\SQLBackup
    New-SMBShare -Name SQLBackup -Path C:\SQLBackup -FullAccess "Authenticated Users"
    

bookshelf-sql1 インスタンスの構成

次に、bookshelf-sql1 インスタンスを構成します。

  1. Cloud Shell で、Windows インスタンス bookshelf-sql1 のパスワードを作成します。

    gcloud compute reset-windows-password bookshelf-sql1 --zone ${zone_1}  --quiet

    ユーザー名は Google アカウントのユーザー名です。今後の使用のためにユーザー名とパスワードを記録しておきます。

  2. RDP を使用して、bookshelf-sql1 インスタンス用に作成した認証情報を使用して SQL Server インスタンスに接続します。

  3. Administrator として PowerShell コンソールを開きます。

  4. 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"
    
  5. プライマリ DNS サーバーを設定します。

    netsh interface ip set dns Ethernet static $DNS1
  6. セカンダリ DNS サーバーを設定します。

    netsh interface ip add dns Ethernet $DNS2 index=2
  7. IP アドレスとデフォルト ゲートウェイを設定します。

    netsh interface ip set address name=Ethernet static $LocalStaticIp 255.255.255.0 $DefaultGateway 1
  8. VM をドメインに追加します。

    Add-Computer -DomainName $DomainName `
        -Credential (Get-Credential "example-gcp\Administrator")
    
  9. Administrator アカウントのパスワードの入力を求められたら、前のチュートリアルで Active Directory フォレストをインストールするときに定義した Administrator の認証情報を使用します。ユーザー名には、EXAMPLE-GCP\Administrator のようにドメイン名をプレフィックスとして追加します。

  10. 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
    
  11. フェイルオーバー クラスタリング機能をインストールします。

    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
  12. インスタンスを再起動します。

    Restart-Computer

Windows Server フェイルオーバー クラスタの構成

  1. RDP を使用して bookshelf-sql1 インスタンスに接続します。Administrator アカウントのパスワードの入力を求められたら、前のチュートリアルで Active Directory フォレストをインストールするときに定義した Administrator の認証情報を使用します。ユーザー名には、EXAMPLE-GCP\Administrator のようにドメイン名をプレフィックスとして追加します。

  2. Administrator として PowerShell コンソールを開きます。

  3. PowerShell コンソール ウィンドウで、次の変数を設定します。

    $node1 = "bookshelf-sql1"
    $node2 = "bookshelf-sql2"
    
  4. クラスタの名前を設定します。

    $nameWSFC = "bookshelf-dbclus"
  5. クラスタとクラスタ リスナーの IP アドレスを設定します。

    $ipWSFC1 = "10.3.0.4"
    $ipWSFC2 = "10.4.0.4"
    $ipWSListener1 = "10.3.0.5"
    $ipWSListener2 = "10.4.0.5"
    
  6. 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?"
    }
    
  7. 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?"
    }
    
  8. 新しいクラスタを作成します。

    New-Cluster -Name $nameWSFC -Node $node1, $node2 -NoStorage `
        -StaticAddress $ipWSFC1, $ipWSFC2
    
  9. 両方のノードで Always On availability グループ機能を有効にします。

    Enable-SqlAlwaysOn -ServerInstance $node1 -Force
    Enable-SqlAlwaysOn -ServerInstance $node2 -Force
    
  10. データベース データとログファイル用のフォルダを作成します。

    New-Item -ItemType directory -Path C:\SQLData
    New-Item -ItemType directory -Path C:\SQLLog
    

データベースの設定

このチュートリアルでは、bookshelf サンプル データベースを使用して、構成が正しく動作することをテストします。

  1. 使用している 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
    
  2. 次の 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
    
  3. 以下の変数を設定します。

    $Domain = "example-gcp.com"
    $ADControllerFQDN = "ad-dc1.$Domain"
    $ServiceAccountName = "sql.service"
    $ServiceAccountPrincipalName = "$ServiceAccountName@$Domain"
    
  4. 次の PowerShell コマンドで RSAT-AD-PowerShell cmdlet を有効にします。

    Add-WindowsFeature RSAT-AD-PowerShell

    VM からサービス アカウントを作成するには、リモート サーバー管理ツールが必要です。

  5. ドメイン内に sql.service という名前のデータベース サービス アカウントを追加します。

    New-ADUser -Name $ServiceAccountName `
        -Server $ADControllerFQDN `
        -SamAccountName $ServiceAccountName `
        -UserPrincipalName $ServiceAccountPrincipalName `
        -AccountPassword (Read-Host -AsSecureString "AccountPassword") `
        -PassThru | Enable-ADAccount
    
  6. sql.service アカウントのパスワードを入力するよう求められたら、強力なパスワードを使用し、今後使用するためにパスワードを安全な場所に保管してください。

  7. 次の 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 可用性グループの設定

  1. 作業中のインスタンスがまだ存在する場合は、次の変数を設定します。

    $Database="bookshelf"
    $BackupFolder="SQLBackup"
    $SharedLocation="\\$node2\$BackupFolder"
    $ListenerName="sql-listener"
    $AGName="MainAG"
    $PrimaryServer = "$node1.$Domain\MSSQLSERVER"
    $SecondaryServer = "$node2.$Domain\MSSQLSERVER"
    
  2. プライマリ サーバーでデータベースのバックアップを作成します。

    Backup-SqlDatabase `
        -Database $Database -Initialize `
        -BackupFile "$SharedLocation\$Database.bak" `
        -ServerInstance $node1
    
  3. セカンダリ サーバーにデータベースを復元します。

    Restore-SqlDatabase `
        -Database $Database `
        -BackupFile "$SharedLocation\$Database.bak" `
        -ServerInstance $node2 `
        -NORECOVERY
    
  4. プライマリ サーバーでデータベース ログのバックアップを作成します。

    Backup-SqlDatabase `
        -Database $Database -Initialize `
        -BackupFile "$SharedLocation\$Database.log" `
        -ServerInstance $node1 `
        -BackupAction Log
    
  5. セカンダリ サーバーにデータベース ログを復元します。

    Restore-SqlDatabase `
        -Database $Database `
        -BackupFile "$SharedLocation\$Database.log" `
        -ServerInstance $node2 `
        -RestoreAction Log `
        -NORECOVERY
    
  6. エンドポイントを作成して開始します。

    $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
    
  7. 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
    
  8. エンドポイント URL を設定します。

    $EndpointUrlSQLServer1="TCP://" + $node1 + "." + $Domain + ":5022"
    $EndpointUrlSQLServer2="TCP://" + $node2 + "." + $Domain + ":5022"
    
  9. レプリカのメモリ内表現を作成します。

    $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
    
  10. 可用性グループを作成します。

    New-SqlAvailabilityGroup -Name $AGName `
        -AvailabilityReplica @($PrimaryReplica, $SecondaryReplica) `
        -Path "SQLSERVER:\SQL\$node1.$Domain\Default" `
        -Database $Database
    
  11. セカンダリ インスタンスを可用性グループに追加します。

    Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\$node2\Default" -Name $AGName
  12. セカンダリ データベースを可用性グループに追加します。

    Add-SqlAvailabilityDatabase `
        -Path "SQLSERVER:\SQL\$node2\Default\AvailabilityGroups\$AGName" `
        -Database $Database
    
  13. リスナーを作成します。

    New-SqlAvailabilityGroupListener -Name $ListenerName `
        -Port 1433 `
        -StaticIp @("$ipWSListener1/255.255.255.0","$ipWSListener2/255.255.255.0") `
        -Path SQLSERVER:\Sql\$node1\Default\AvailabilityGroups\$AGName
    
  14. 不要になった共有フォルダを削除します。

    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 で作成したリソースについて料金が発生しないようリソースをクリーンアップします。次のセクションで、このようなリソースを削除するか無効にする方法を説明します。

プロジェクトの削除

  • Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  • プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  • ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
  • インスタンスの削除

    プロジェクト全体を削除しない場合、作成した特定のリソースを削除できます。

    Compute Engine インスタンスを削除するには:

    1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

      [VM インスタンス] ページに移動

    2. 削除するインスタンスを選択します。

    3. ページの上部にある [削除] をクリックして、インスタンスを削除します。

    VPC ネットワークの削除

    VPC ネットワーク、サブネット、ファイアウォール ルールを削除するには:

    1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

      [VPC ネットワーク] ページに移動

    2. 作成した VPC ネットワークを選択します。

    3. ページの上部にある [削除] をクリックして、ネットワークを削除します。

    次のステップ