web-dev-qa-db-ja.com

AlwaysOn-マルチサブネットクラスターの可用性グループリスナー

ノード3が別のサブネット上にある3ノードクラスター用にAGリスナーを作成するのが困難になっています。

次のようなエラーが発生します

Create failed for Availability Group Listener 'AO-AGL'
None of the IP addresses configured for the availability group listener can be hosted by the server 
'NODE3'. Either configure a public cluster network on which one of the specified IP addresses can 
be hosted, or add another listener IP address which can be hosted on a public cluster network for 
this server. (Microsoft SQL Server, Error: 19456)

この状況にどう対処するか。このブログ投稿( http://mohdsohail.wordpress.com/2013/02/14/adding-seconday-replica/ )は、参照用に見つけることができる唯一のものであり、あまり明確ではありませんソリューションについて。彼は2番目のIPアドレスを追加すると述べています。しかし、これはDNSで正確にどのように見えますか? 2つのIPアドレスを持つ1つのDNSホスト名がありますか?

3
Geoff Dawdy

コード例と操作の順序を探している人のために、受け入れられた答えを少し具体化するために、私は次のことをしなければなりませんでした:

  1. 最初に、プライマリノードで可用性グループを作成します

  2. プライマリノードのAGリスナーに静的サブネットIPを追加します。

  3. セカンダリノードに接続し、可用性グループに結合します

  4. BACKをセカンダリノードに接続し、2番目の静的サブネットIPアドレス(セカンダリノードのサブネットに属する)をAGリスナーに追加します。

上記の手順を示すコードのサンプルの一部を次に示します(明らかにダミーIPとノード名を使用しています)。

:Connect PrimaryAGInstName

USE [master]

GO

CREATE AVAILABILITY GROUP [PrimaryAGInstName]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY)
FOR DATABASE [DBName]
REPLICA ON N'PrimaryAGInstName' WITH (ENDPOINT_URL = N'TCP://PrimaryAGInstName.Domain.Info:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)),
    N'SecondaryAGInstName' WITH (ENDPOINT_URL = N'TCP://SecondaryAGInstName.Domain.Info:5022', FAILOVER_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50, SECONDARY_ROLE(ALLOW_CONNECTIONS = NO));

GO

:Connect PrimaryAGInstName

USE [master]

GO

ALTER AVAILABILITY GROUP [PrimaryAGInstName]
ADD LISTENER N'AG_Listener_Name' (
WITH IP
((N'12.345.67.8', N'255.255.248.0')
)
, PORT=1919);

GO

:Connect SecondaryAGInstName

USE [master]

GO

ALTER AVAILABILITY GROUP [PrimaryAGInstName] JOIN;

GO


:Connect PrimaryAGInstName

USE [master]

GO

ALTER AVAILABILITY GROUP [PrimaryAGInstName]
ADD LISTENER N'AG_Listener_Name' (
WITH IP
((N'12.567.89.0', N'255.255.248.0')
)
, PORT=1919);
GO
3
DCaugs

新しいノードを可用性グループに追加するときに実行する必要がある一般的な機能(エンドポイントの作成、レプリカの追加、可用性グループへの参加など)の他に、3番目のノードの追加に最も関連する2つのステップがあります。別のサブネット:

  1. NODE3が、NODE1とNODE2がオンになっているのと同じフェールオーバークラスターにあることを確認します。簡単な方法は、管理PowershellコンソールからNODE1でこれを実行することです:_Add-ClusterNode NODE3 -NoStorage_。これが完了すると、フェイルオーバーマネージャーに2つのクラスターネットワークが表示されます。1つはNODE1とNODE2が存在するサブネット用で、もう1つはNODE3のサブネット用です。これらのサブネットのいずれかにリスナーIPを追加できるため、これは非常に重要です。

  2. NODE3のサブネットからIPをプロビジョニングし(10.10.10.10であるとしましょう)、NODE3でSSMSを使用して2番目のリスナーIPとして追加します:ALTER AVAILABILITY GROUP [MYAG] MODIFY LISTENER 'MYAGLISTENER' (ADD IP ('10.10.10.10', '255.255.255.0'))。注:ポートは不要です。リスナーですでに確立されているポートを使用します。

2
CaptainSlock

この問題のより簡単な解決策:AG Wizard First、Listener Second

新しい可用性グループWizardを使用してAGグループを作成しますが、図Aに示すように意図的にリスナーを作成しないことを選択します。Wizardが完了したら、図Bに示すように、Availabilty Group ListenersコンテキストメニューからAdd Listenerをクリックしてリスナーを作成します。結果のGUI内で、AGグループが表す各サブネットの静的IPアドレスを追加します。

図A:AlwaysOnでWizardリスナーを作成しないでください

enter image description here

図B:Wizardが構成された後(リスナーなし))、次にIPアドレスを使用してリスナーを作成しますそれぞれ異なるサブネット

enter image description here

できた!

pS Wizardの実行中にリスナーを追加するだけでいいのですが、Wizard GUIでは静的IPアドレスを追加できません。変更され、ワンステッププロセスになります。

1
Sting

このエラーは、2番目のIPをリスナーに追加することで解決されました。両方のサブネットのIPアドレスは、すでに使用されているIPアドレス、つまりいずれかのノードのIPアドレスにすることはできません。リスナーはプロセスの一部としてDNSエントリを作成するため、DNSエントリも必要ありません。

1
Geoff Dawdy