AWSにSQLServer2016 Standardを構築する(冗長構成 AlwaysOn可用性グループ利用)AlwaysOn作成編

■AlwaysOn可用性グループの作成

1.AlwaysOn可用性グループの有効化

Windowsサーバ作業(SERVER-1,SERVER-2)


チェックして、SQLServerサービスを再起動する
※2台とも作業する。


2.ファイアーウォールの開放

Windowsサーバ作業(SERVER-1,SERVER-2)
TCP:1433、5022を許可する


3.リスナー登録のための権限設定

管理用サーバ作業
各コンピューターアカウントの所属するグループにグループを追加する


Account OperatorsとDnsAdminsを追加する


DnsAdminsを追加する
※2台とも


4.リスナー用のDNSレコードを登録する

管理用サーバ作業
予めリスナー用のDNSレコードを登録する


5.可用性グループの作成

Windowsサーバ作業(SERVER-1)


6.可用性グループ リスナーの追加

Windowsサーバ作業(SERVER-1)

SQLServer用のIPを追加する

SERVER-1のSQLServerのIP


SERVER-2のSQLServerのIP


7.追加したリスナーのコンピューターアカウントの確認

管理用サーバ作業
AD上に、コンピュータアカウントが作成される


8.可用性グループ リスナーの設定変更

Windowsサーバ作業(SERVER-1)

MultiSubnetFailoverに対応していないシステムからDB接続する場合、リスナーにアクティブなSQLServerのIPが設定されるように設定変更する

PowerShellプロンプトで実行する

8.1 クラスタリソースの確認

PS C:\> get-clusterresource

Name                          State                         OwnerGroup                    ResourceType
----                          -----                         ----------                    ------------
AG_01                         Online                        AG_01                         SQL Server Availability Group
AG_01_10.100.0.57             Online                        AG_01                         IP Address
AG_01_10.100.1.57             Offline                       AG_01                         IP Address
AG_01_SERVER-0                Online                        AG_01                         Network Name
クラスター IP アドレス        Online                        クラスター グループ           IP Address
クラスター IP アドレス 10.... Offline                       クラスター グループ           IP Address
クラスター名                  Online                        クラスター グループ           Network Name
ファイル共有監視              Online                        クラスター グループ           File Share Witness

8.2 クラスタパラメータの確認

PS C:\> Get-ClusterResource AG_01_SERVER-0 | Get-ClusterParameter

Object                        Name                          Value                         Type
------                        ----                          -----                         ----
AG_01_SERVER-0                Name                          SERVER-0                      String
AG_01_SERVER-0                DnsName                       SERVER-0                      String
AG_01_SERVER-0                Aliases                                                     String
AG_01_SERVER-0                RemapPipeNames                1                             UInt32
AG_01_SERVER-0                HostRecordTTL                 1200                          UInt32
AG_01_SERVER-0                RegisterAllProvidersIP        1                             UInt32
AG_01_SERVER-0                PublishPTRRecords             1                             UInt32
AG_01_SERVER-0                ResourceData                  {1, 0, 0, 0...}               ByteArray
AG_01_SERVER-0                StatusNetBIOS                 0                             UInt32
AG_01_SERVER-0                StatusDNS                     9016                          UInt32
AG_01_SERVER-0                StatusKerberos                0                             UInt32
AG_01_SERVER-0                CreatingDC                    \\aws-abcdefghijkl.sadtest... String
AG_01_SERVER-0                LastDNSUpdateTime             2017/12/25 1:23:45            DateTime
AG_01_SERVER-0                ObjectGUID                    ab123456654654654654654456... String
AG_01_SERVER-0                DnsSuffix                     sadtest.local                 String
AG_01_SERVER-0                ADAware                       1                             UInt32

8.3 RegisterAllProvidersIPの設定変更

PS C:\> Get-ClusterResource AG_01_SERVER-0 | Set-ClusterParameter RegisterAllProvidersIP 0

8.4 HostRecordTTLの設定変更

PS C:\> Get-ClusterResource AG_01_SERVER-0 | Set-ClusterParameter HostRecordTTL 20

8.5 設定後のクラスタパラメータの確認

PS C:\> Get-ClusterResource AG_01_SERVER-0 | Get-ClusterParameter

Object                        Name                          Value                         Type
------                        ----                          -----                         ----
AG_01_SERVER-0                Name                          SERVER-0                      String
AG_01_SERVER-0                DnsName                       SERVER-0                      String
AG_01_SERVER-0                Aliases                                                     String
AG_01_SERVER-0                RemapPipeNames                1                             UInt32
AG_01_SERVER-0                HostRecordTTL                 20                            UInt32
AG_01_SERVER-0                RegisterAllProvidersIP        0                             UInt32
AG_01_SERVER-0                PublishPTRRecords             1                             UInt32
AG_01_SERVER-0                ResourceData                  {1, 0, 0, 0...}               ByteArray
AG_01_SERVER-0                StatusNetBIOS                 0                             UInt32
AG_01_SERVER-0                StatusDNS                     9016                          UInt32
AG_01_SERVER-0                StatusKerberos                0                             UInt32
AG_01_SERVER-0                CreatingDC                    \\aws-abcdefghijkl.sadtest... String
AG_01_SERVER-0                LastDNSUpdateTime             2017/12/25 1:23:45            DateTime
AG_01_SERVER-0                ObjectGUID                    ab123456654654654654654456... String
AG_01_SERVER-0                DnsSuffix                     sadtest.local                 String
AG_01_SERVER-0                ADAware                       1                             UInt32

設定後、反映のためにnodeを切り替えるなど、AG_01_SERVER-0がオフライン、オンラインされるようにする


9. 構築・利用してみて

SimpleADで構築してみて、利用する上では問題ないのですが、DNS周りのエラーが気になりました。
AWS Microsoft AD (Standard Edition)が2017/10にリリースされたので、こちらを検討してみるのもよいかもしれません。
東京リージョンの時間単価は
SimpleAD (Small)$0.08  (Large)$0.24
MicrosoftAD (Standard Edition)$0.146  (Enterprise Edition)$0.445

マルチAZでAlwaysOnを構築しましたが、書き込み処理のパフォーマンスへの影響が大きい。
DBのプライマリ-セカンダリの切り替えた時、データ取り込み処理で利用しているバッチサーバのあるAZとプライマリDBのあるAZが違うと、処理時間への影響が大きい。
トランザクションの遅延持続性を利用するとマルチAZのAlwaysOnでも書き込みパフォーマンスが相当良かった。



管理人 has written 36 articles