■AlwaysOn可用性グループの作成
1.AlwaysOn可用性グループの有効化
Windowsサーバ作業(SERVER-1,SERVER-2)
チェックして、SQLServerサービスを再起動する
※2台とも作業する。
2.ファイアーウォールの開放
Windowsサーバ作業(SERVER-1,SERVER-2)
TCP:1433、5022を許可する
3.リスナー登録のための権限設定
管理用サーバ作業
各コンピューターアカウントの所属するグループにグループを追加する
Account OperatorsとDnsAdminsを追加する
4.リスナー用のDNSレコードを登録する
5.可用性グループの作成
6.可用性グループ リスナーの追加
Windowsサーバ作業(SERVER-1)
SQLServer用のIPを追加する
SERVER-1の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でも書き込みパフォーマンスが相当良かった。