ノード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ホスト名がありますか?
コード例と操作の順序を探している人のために、受け入れられた答えを少し具体化するために、私は次のことをしなければなりませんでした:
最初に、プライマリノードで可用性グループを作成します
プライマリノードのAGリスナーに静的サブネットIPを追加します。
セカンダリノードに接続し、可用性グループに結合します
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番目のノードの追加に最も関連する2つのステップがあります。別のサブネット:
NODE3が、NODE1とNODE2がオンになっているのと同じフェールオーバークラスターにあることを確認します。簡単な方法は、管理PowershellコンソールからNODE1でこれを実行することです:_Add-ClusterNode NODE3 -NoStorage
_。これが完了すると、フェイルオーバーマネージャーに2つのクラスターネットワークが表示されます。1つはNODE1とNODE2が存在するサブネット用で、もう1つはNODE3のサブネット用です。これらのサブネットのいずれかにリスナーIPを追加できるため、これは非常に重要です。
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'))
。注:ポートは不要です。リスナーですでに確立されているポートを使用します。
この問題のより簡単な解決策:AG Wizard First、Listener Second
新しい可用性グループWizardを使用してAGグループを作成しますが、図Aに示すように意図的にリスナーを作成しないことを選択します。Wizardが完了したら、図Bに示すように、Availabilty Group ListenersコンテキストメニューからAdd Listenerをクリックしてリスナーを作成します。結果のGUI内で、AGグループが表す各サブネットの静的IPアドレスを追加します。
図A:AlwaysOnでWizardリスナーを作成しないでください
図B:Wizardが構成された後(リスナーなし))、次にIPアドレスを使用してリスナーを作成しますそれぞれ異なるサブネット
できた!
pS Wizardの実行中にリスナーを追加するだけでいいのですが、Wizard GUIでは静的IPアドレスを追加できません。変更され、ワンステッププロセスになります。
このエラーは、2番目のIPをリスナーに追加することで解決されました。両方のサブネットのIPアドレスは、すでに使用されているIPアドレス、つまりいずれかのノードのIPアドレスにすることはできません。リスナーはプロセスの一部としてDNSエントリを作成するため、DNSエントリも必要ありません。