可用性グループ リスナーの作成または構成 (SQL Server)
このトピックでは、SQL Server 2012 で SQL Server Management Studio、Transact-SQL、または PowerShell を使用して、AlwaysOn 可用性グループに対して 1 つの可用性グループ リスナーを作成または構成する方法について説明します。
重要 |
---|
可用性グループの最初の可用性グループ リスナーを作成するには、SQL Server Management Studio、Transact-SQL、または SQL Server PowerShell を使用することを強くお勧めします。 必要な場合 (追加リスナーを作成する場合など) を除いて、WSFC クラスターでリスナーを直接作成することは避けてください。 |
作業を開始する準備:
この可用性グループに既にリスナーが存在するか
制限事項と制約事項
推奨事項
前提条件
可用性グループ リスナーの DNS 名の要件
Windows 権限
SQL Server 権限
可用性グループ リスナーを作成または構成するために使用するもの:
SQL Server Management Studio
Transact-SQL
PowerShell
トラブルシューティング
Active Directory クォータが原因となる可用性グループ リスナーの作成の失敗
補足情報: 可用性グループ リスナーの作成後
MultiSubnetFailover のキーワードおよび関連機能
RegisterAllProvidersIP の設定
HostRecordTTL の設定
RegisterAllProvidersIP を無効にし、TTL を短縮する PowerShell サンプル スクリプト
補足情報: 推奨事項
可用性グループの追加のリスナーの作成 (省略可能)
作業を開始する準備
この可用性グループに既にリスナーが存在するか
可用性グループにリスナーが既に存在するかどうかを確認するには
注 |
---|
リスナーが既に存在するときに追加リスナーを作成する場合は、このトピックの「可用性グループの追加のリスナーを作成するには (省略可能)」を参照してください。 |
制限事項と制約事項
- SQL Server で、可用性グループに対して作成できるリスナーは 1 つのみです。 通常、それぞれの可用性グループで必要なリスナーは 1 つだけです。 ただし、一部の顧客シナリオでは、1 つの可用性グループで複数のリスナーが必要です。 SQL Server で 1 つのリスナーを作成した後、フェールオーバー クラスターの Windows PowerShell または WSFC フェールオーバー クラスター マネージャーを使用して、追加のリスナーを作成します。 詳細については、このトピックの後の「可用性グループの追加のリスナーを作成するには (省略可能)」を参照してください。
推奨事項
複数のサブネットを構成する場合は、必須ではありませんが、静的 IP アドレスの使用をお勧めします。
前提条件
プライマリ レプリカをホストするサーバー インスタンスに接続されている必要があります。
複数のサブネットにわたる可用性グループ リスナーを設定し、静的 IP アドレスを使用する場合は、リスナーを作成する可用性グループの可用性レプリカがホストされているすべてのサブネットの静的 IP アドレスを取得する必要があります。 通常は、静的 IP アドレスをネットワーク管理者に問い合わせる必要があります。
重要 |
---|
初めてリスナーを作成する方は、「AlwaysOn クライアント接続 (SQL Server)」をお読みいただくよう強くお勧めします。 |
可用性グループ リスナーの DNS 名の要件
各可用性グループ リスナーは、ドメインおよび NetBIOS 内で一意の DNS ホスト名を必要とします。 DNS 名は、文字列値です。 この名前には、英数字、ダッシュ (-)、およびハイフン (_) のみを任意の順序で含めることができます。 DNS ホスト名では大文字と小文字は区別されません。 最大長は 63 文字です。ただし、SQL Server Management Studio で指定できる最大長は 15 文字です。
意味のある文字列を指定することをお勧めします。 たとえば、可用性グループの名前が AG1 の場合は、ag1-listener のような意味のある DNS ホスト名にします。
重要 |
---|
NetBIOS では、dns_name の最初の 15 文字のみが認識されます。 同じ Active Directory で制御されている 2 つの WSFC クラスターがあり、両方のクラスターで可用性グループ リスナーを作成しようとする場合、15 文字より長い名前を使用して、15 文字のプレフィックスが同一であると、仮想ネットワーク名リソースをオンラインにできなかったことを示すエラーが表示されます。 DNS 名のプレフィックスに対する名前付け規則の詳細については、「ドメイン名を割り当てる」を参照してください。 |
Windows 権限
権限 |
リンク |
||
---|---|---|---|
可用性グループをホストしている WSFC クラスターのクラスター オブジェクト名 (CNO) には、Create Computer objects 権限が必要です。 Active Directory では、CNO は既定で Create Computer objects 権限を明示的に持たず、仮想コンピューター オブジェクト (VCO) を最大で 10 個作成できます。 VCO を 10 個作成した後、追加で VCO を作成しようとしても失敗します。 この問題は、WSFC クラスターの CNO に権限を明示的に与えることで回避できます。 削除した可用性グループの VCO は Active Directory 内で自動的に削除されず、手動で削除しない限り、VCO の 10 個の既定の制限の対象としてカウントされます。
|
|
||
リスナーの仮想ネットワーク名にコンピューター アカウントを事前設定する必要がある場合は、Account Operator グループのメンバーシップが必要です。または、ドメイン管理者に依頼する必要があります。
|
クラスター化されたサービスまたはアプリケーションのアカウントを事前設定する手順: 「フェールオーバー クラスター ステップ バイ ステップ ガイド: Active Directory のアカウントの構成」 |
[先頭に戻る]
SQL Server 権限
タスク |
権限 |
---|---|
可用性グループ リスナーを作成するには |
sysadmin 固定サーバー ロールのメンバーシップと、CREATE AVAILABILITY GROUP サーバー権限、ALTER ANY AVAILABILITY GROUP 権限、CONTROL SERVER 権限のいずれかが必要です。 |
既存の可用性グループ リスナーを変更するには |
可用性グループの ALTER AVAILABILITY GROUP 権限、CONTROL AVAILABILITY GROUP 権限、ALTER ANY AVAILABILITY GROUP 権限、または CONTROL SERVER 権限が必要です。 |
[先頭に戻る]
SQL Server Management Studio の使用
ヒント |
---|
新しい可用性グループ ウィザードは、新しい可用性グループに対するリスナーの作成をサポートします。 |
可用性グループ リスナーを作成または構成するには
オブジェクト エクスプローラーで、可用性グループのプライマリ レプリカをホストするサーバー インスタンスに接続し、サーバー名をクリックしてサーバー ツリーを展開します。
[AlwaysOn 高可用性] ノードと [可用性グループ] ノードを展開します。
リスナーを構成する可用性グループをクリックし、次のいずれかを選択します。
リスナーを作成するには、[可用性グループ リスナー] ノードを右クリックし、[新しいリスナー] をクリックします。 これにより、[新しい可用性グループ リスナー] ダイアログ ボックスが開きます。 詳細については、このトピックの「[新しい可用性グループ リスナー] (ダイアログ ボックス)」を参照してください。
既存のリスナーのポート番号を変更するには、[可用性グループ リスナー] ノードを展開し、リスナーを右クリックして、[プロパティ] をクリックします。 [ポート] フィールドに新しいポート番号を入力し、[OK] をクリックします。
[先頭に戻る]
[新しい可用性グループ リスナー] (ダイアログ ボックス)
[リスナーの DNS 名]
可用性グループ リスナーの DNS ホスト名を指定します。 DNS 名は、ドメインおよび NetBIOS 内で一意であることが必要な文字列です。 この名前には、英数字、ダッシュ (-)、およびハイフン (_) のみを任意の順序で含めることができます。 DNS ホスト名では大文字と小文字は区別されません。 最大長は 15 文字です。詳細については、このトピックの前の「可用性グループ リスナーの DNS 名の要件」を参照してください。
ポート
このリスナーで使用される TCP ポート。[ネットワーク モード]
リスナーで使用される TCP プロトコルを指定します。次のいずれかです。[DHCP]
リスナーは、動的ホスト構成プロトコル (DHCP) を実行しているサーバーによって割り当てられる動的 IP アドレスを使用します。 DHCP は、単一のサブネットに制限されます。重要 運用環境での DHCP の使用はお勧めしません。 ダウンタイムが発生して DHCP IP のリース期限が切れると、リスナーの DNS 名に関連付けられている新しい DHCP のネットワーク IP アドレスの登録に余分な時間がかかり、クライアント接続に影響が及びます。 ただし、開発環境とテスト環境を設定して可用性グループの基本機能を確認する場合や、アプリケーションとの統合の場合には DHCP が適しています。
[静的 IP]
リスナーは、1 つまたは複数の静的 IP アドレスを使用します。 必要に応じて追加の IP アドレスを指定できます。 複数のサブネットにわたる可用性グループ リスナーを作成するには、各サブネットのリスナー構成に静的 IP アドレスを指定する必要があります。 これらの静的 IP アドレスを取得するには、ネットワーク管理者に問い合わせてください。[静的 IP] を選択した場合、[ネットワーク モード] フィールドの下にサブネット グリッドが表示されます。 このグリッドに、この可用性グループ リスナーによってアクセスできる各サブネットについての情報が表示されます。 このグリッドは、[追加] をクリックして静的 IP アドレスを追加するまでは空です。
次の列で構成されます。
[サブネット]
可用性グループ リスナーに追加される各サブネットの識別子が表示されます。[IP アドレス]
特定のサブネットの IP アドレスが表示されます。 サブネットの IP アドレスには、IPv4 アドレスまたは IPv6 アドレスを使用できます。
[追加]
選択したサブネットまたはこのリスナーの別のサブネットに静的 IP アドレスを追加する場合にクリックします。 クリックすると、[IP アドレスの追加] ダイアログ ボックスが開きます。 詳細については、「[IP アドレスの追加] ダイアログ ボックス (SQL Server Management Studio)」ヘルプ トピックを参照してください。[削除]
選択したサブネットをこのリスナーから削除する場合にクリックします。[OK]
指定した可用性グループ リスナーを作成する場合にクリックします。
[先頭に戻る]
Transact-SQL の使用
可用性グループ リスナーを作成または構成するには
プライマリ レプリカをホストするサーバー インスタンスに接続します。
CREATE AVAILABILITY GROUP ステートメントの LISTENER オプションまたは ALTER AVAILABILITY GROUP ステートメントの ADD LISTENER オプションを使用します。
次の例では、可用性グループ リスナーを MyAg2 という名前の既存の可用性グループに追加します。 このリスナーには、一意の DNS 名 MyAg2ListenerIvP6 を指定します。 2 つのレプリカが異なるサブネット上に存在するため、(推奨されるように) リスナーで静的 IP アドレスを使用します。 WITH IP 句には、2 つの可用性レプリカについて、それぞれ IPv6 形式の静的 IP アドレス (2001:4898:f0:f00f::cf3c and 2001:4898:e0:f213::4ce2) を指定します。 また、この例では、オプションの PORT 引数を使用して、60173 をリスナー ポートとして指定しています。
ALTER AVAILABILITY GROUP MyAg2 ADD LISTENER ‘MyAg2ListenerIvP6’ ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173 ); GO
PowerShell の使用
可用性グループ リスナーを作成または構成するには
プライマリ レプリカをホストするサーバー インスタンスにディレクトリを変更 (cd) します。
可用性グループ リスナーを作成または変更するには、次のコマンドレットのいずれかを使用します。
New-SqlAvailabilityGroupListener
新しい可用性グループ リスナーを作成して、既存の可用性グループにアタッチします。たとえば、次の New-SqlAvailabilityGroupListener コマンドは、可用性グループ MyAg に対し、MyListener という名前の可用性グループ リスナーを作成します。 このリスナーは、-StaticIp パラメーターに渡された IPv4 アドレスを仮想 IP アドレスとして使用します。
New-SqlAvailabilityGroupListener -Name MyListener ` -StaticIp '192.168.3.1/255.255.252.0' ` -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg
Set-SqlAvailabilityGroupListener
既存の可用性グループ リスナーのポート設定を変更します。たとえば、次の Set-SqlAvailabilityGroupListener コマンドは、MyListener という名前の可用性グループ リスナーのポート番号を 1535 に設定します。 このポートは、リスナーへの接続をリッスンするために使用されます。
Set-SqlAvailabilityGroupListener -Port 1535 ` -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg\AGListeners\MyListener
Add-SqlAGListenerstaticIp
既存の可用性グループ リスナー構成に静的 IP アドレスを追加します。 IP アドレスには、サブネットを含む IPv4 アドレス、または IPv6 アドレスを指定できます。たとえば、次の Add-SqlAGListenerstaticIp コマンドは、可用性グループ MyAg の可用性グループ リスナー MyListener に静的 IPv4 アドレスを追加します。 この IPv6 アドレスは、サブネット 255.255.252.0 でリスナーの仮想 IP アドレスとして機能します。 可用性グループが複数のサブネットにまたがっている場合は、各サブネットの静的 IP アドレスをリスナーに追加する必要があります。
$path = "SQLSERVER:\SQL\PrimaryServer\InstanceName\AvailabilityGroups\MyAg\AGListeners\ MyListener" ` Add-SqlAGListenerstaticIp -Path $path ` -StaticIp "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
注 コマンドレットの構文を表示するには、SQL Server PowerShell 環境で Get-Help コマンドレットを使用します。 詳細については、「SQL Server PowerShell のヘルプの参照」を参照してください。
SQL Server PowerShell プロバイダーを設定して使用するには
[先頭に戻る]
トラブルシューティング
Active Directory クォータが原因となる可用性グループ リスナーの作成の失敗
新しい可用性グループ リスナーの作成は、参加しているクラスター ノード マシン アカウントの Active Directory クォータに達したため、失敗する場合があります。 詳細については、次の各資料を参照してください。
[先頭に戻る]
補足情報: 可用性グループ リスナーの作成後
MultiSubnetFailover のキーワードおよび関連機能
MultiSubnetFailover は、SQL Server 2012 の AlwaysOn 可用性グループおよび AlwaysOn フェールオーバー クラスター インスタンスに対して高速フェールオーバーを有効にするために使用する新しい接続文字列キーワードです。 接続文字列で MultiSubnetFailover=True が設定されていると、次の 3 つのサブ機能が有効になります。
AlwaysOn 可用性グループまたはフェールオーバー クラスター インスタンスに対する複数サブネット リスナーへのより高速なマルチサブネット フェールオーバー。
AlwaysOn 可用性グループまたはフェールオーバー クラスター インスタンスの単一サブネット リスナーへのより高速な単一サブネット フェールオーバー。
- この機能は、単一のサブネット内に単一の IP を持つリスナーに接続する場合に使用されます。 TCP 接続の再試行をより積極的に実行して、単一サブネット フェールオーバーを高速化します。
マルチサブネット AlwaysOn フェールオーバー クラスター インスタンスへの名前付きインスタンスの解決。
- 複数サブネット エンドポイントを持つ AlwaysOn フェールオーバー クラスター インスタンスの名前付きインスタンス解決サポートを追加します。
.NET Framework 3.5 および OLEDB で MultiSubnetFailover=True はサポートされない
問題点: 異なるサブネットからの複数の IP アドレスに応じて可用性グループまたはフェールオーバー クラスター インスタンスにリスナー名 (ネットワーク名または WSFC クラスター マネージャーのクライアント アクセス ポイント) がある場合に、ADO.NET with .NET Framework 3.5SP1 または SQL Native Client 11.0 OLEDB を使用していると、可用性グループ リスナーに対するクライアント接続要求の 50% が接続タイムアウトに達する可能性があります。
回避策: 次のいずれかのタスクを実行することをお勧めします。
クラスター リソースを操作する権限がない場合は、接続タイムアウトを 30 秒に設定します (この値は結果として、20 秒の TCP タイムアウトと 10 秒のバッファーになります)。
長所: クロスサブネット フェールオーバーが発生した場合、クライアントの復旧時間が短くなります。
短所: 半数のクライアント接続に 20 秒以上要します。
クラスター リソースを操作する権限がある場合は、可用性グループ リスナーのネットワーク名を RegisterAllProvidersIP=0 に設定する方法をお勧めします。 詳細については、このセクションの「RegisterAllProvidersIP の設定」を参照してください。
長所: クライアント接続のタイムアウト値を大きくする必要がありません。
短所: クロスサブネット フェールオーバーが発生した場合、HostRecordTTL の設定やクロスサイト DNS/AD レプリケーション スケジュールの設定によっては、クライアントの復旧時間が 15 分以上になる可能性があります。
RegisterAllProvidersIP の設定
SQL Server Management Studio、Transact-SQL、または PowerShell を使用して可用性グループ リスナーを作成すると、WSFC にクライアント アクセス ポイントが作成され、その RegisterAllProvidersIP プロパティが 1 (true) に設定されます。 このプロパティ値の効果は、次に示すように、クライアント接続文字列によって異なります。
MultiSubnetFailover を true に設定する接続文字列
AlwaysOn 可用性グループ は、クライアント接続文字列で MultiSubnetFailover = True (推奨どおり) を指定しているクライアントのフェールオーバー後の再接続時間を短縮するために、RegisterAllProvidersIP プロパティを 1 に設定します。 リスナーのマルチサブネット機能を活用するには、クライアントに MultiSubnetFailover キーワードをサポートするデータ プロバイダーが必要な場合があります。 マルチサブネット フェールオーバーのドライバー サポートの詳細については、「AlwaysOn クライアント接続 (SQL Server)」を参照してください。
マルチサブネット クラスタリングの詳細については、「SQL Server マルチサブネット クラスタリング (SQL Server)」を参照してください。
ヒント RegisterAllProvidersIP = 1 のときに、WSFC クラスターに対して WSFC の構成の検証ウィザードを実行すると、次の警告メッセージが表示されます。
"ネットワーク名 'Name:<network_name>' の RegisterAllProviderIP プロパティは 1 に設定されています。現在のクラスター構成の場合、この値は 0 に設定する必要があります。"
このメッセージは無視してください。
MultiSubnetFailover を true に設定しない接続文字列
RegisterAllProvidersIP = 1 の場合、接続文字列で MultiSubnetFailover = True を使用しないクライアントは、接続の待機時間が長くなります。 これが発生するのは、このようなクライアントはすべての IP への接続を順に試行するためです。 これに対し、RegisterAllProvidersIP を 0 に変更すると、WSFC クラスターのクライアント アクセス ポイントにアクティブな IP アドレスが登録され、レガシ クライアントの待機時間が短縮されます。 したがって、可用性グループ リスナーに接続する必要があるが、MultiSubnetFailover プロパティを使用できないレガシ クライアントがある場合は、RegisterAllProvidersIP を 0 に変更することをお勧めします。
重要 WSFC クラスター (フェールオーバー クラスター マネージャーの GUI) を通してリスナーを作成すると、RegisterAllProvidersIP は既定で 0 (false) になります。
HostRecordTTL の設定
既定では、クライアントは 20 分間、クラスター DNS レコードをキャッシュします。 HostRecordTTL の値 (キャッシュするレコードの有効期限 (TTL)) を小さくすると、レガシ クライアントはよりすばやく再接続できるようになります。 ただし、HostRecordTTL の設定を小さくすると、DN サーバーへのトラフィックが増加する可能性があります。
RegisterAllProvidersIP を無効にし、TTL を短縮する PowerShell サンプル スクリプト
次の PowerShell の例では、リスナー リソースに対する RegisterAllProvidersIP クラスター パラメーターと HostRecordTTL クラスター パラメーターの両方を構成する方法を示しています。 DNS レコードは、既定の 20 分間ではなく、5 分間キャッシュされます。 両方のクラスター パラメーターを変更すると、MultiSubnetFailover パラメーターを使用できないレガシ クライアントのフェールオーバーが発生した後に、適切な IP アドレスに接続する時間が短縮される可能性があります。 yourListenerName は、変更対象のリスナーの名前に置き換えてください。
Import-Module FailoverClusters
Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0
Get-ClusterResource yourListenerName|Set-ClusterParameter HostRecordTTL 300
Stop-ClusterResource yourListenerName
Start-ClusterResource yourListenerName
フェールオーバー時の復旧時間の詳細については、「フェールオーバー中のクライアント回復待機時間」を参照してください。
補足情報: 推奨事項
可用性グループ リスナーを作成した後:
リスナーの IP アドレスが排他的に使用されるように確保することを、ネットワーク管理者に依頼します。
この可用性グループへのクライアント接続を要求するときの接続文字列で使用できるよう、リスナーの DNS ホスト名をアプリケーション開発者に通知します。
可能であれば、MultiSubnetFailover = True を指定するようにクライアント接続文字列を更新することを開発者に勧めてください。 マルチサブネット フェールオーバーのドライバー サポートの詳細については、「AlwaysOn クライアント接続 (SQL Server)」を参照してください。
[先頭に戻る]
可用性グループの追加のリスナーの作成 (省略可能)
SQL Server で 1 つのリスナーを作成した後、次の手順で追加のリスナーを追加できます。
次のツールのいずれかを使用してリスナーを作成します。
WSFC フェールオーバー クラスター マネージャーの使用:
クライアント アクセス ポイントを追加し、IP アドレスを構成します。
リスナーをオンラインにします。
WSFC 可用性グループに対する依存関係を追加します。
フェールオーバー クラスター マネージャーのダイアログ ボックスおよびタブの詳細については、「ユーザー インターフェイス : フェールオーバー クラスター マネージャー スナップイン」を参照してください。
フェールオーバー クラスターの Windows PowerShell の使用:
Add-ClusterResource を使用して、ネットワーク名と IP アドレス リソースを作成します。
Start-ClusterResource を使用して、ネットワーク名リソースを開始します。
Add-ClusterResourceDependency を使用して、ネットワーク名と、既存の SQL Server 可用性グループ リソース間の依存関係を設定します。
フェールオーバー クラスターの Windows PowerShell の詳細については、「サーバー マネージャーのコマンドの概要」を参照してください。
SQL Server で新しいリスナーのリッスンを開始します。 追加リスナーを作成した後、プライマリ レプリカをホストする SQL Server のインスタンスに接続し、SQL Server Management Studio、Transact-SQL、または PowerShell を使用してリスナー ポートを変更します。
詳細については、「同じ可用性グループの複数のリスナーを作成する方法」(SQL Server AlwaysOn チームのブログ) を参照してください。
関連タスク
関連コンテンツ
[先頭に戻る]
関連項目
概念
AlwaysOn 可用性グループの概要 (SQL Server)