FCI VNN 用に Azure ロード バランサーを構成する - Azure VM 上の SQL Server
適用対象: Azure VM 上の SQL Server
ヒント
可用性グループをデプロイする方法は多数あります。 デプロイを簡略化し、Always On 可用性グループに対して Azure Load Balancer または分散ネットワーク名 (DNN) を不要にするには、同じ Azure 仮想ネットワーク内の複数のサブネットに SQL Server 仮想マシン (VM) を作成します。 可用性グループを 1 つのサブネットに既に作成している場合は、マルチサブネット環境に移行できます。
Azure 仮想マシンでは、クラスターは、一度に 1 つのクラスター ノードに存在する必要がある IP アドレスを保持するためにロード バランサーを使用します。 このソリューションでは、Azure のクラスター化されたリソースで使用する仮想ネットワーク名 (VNN) の IP アドレスが、ロード バランサーによって保持されます。
この記事では、Azure Load Balancer サービスを使用してロード バランサーを構成する方法について説明します。 高可用性とディザスター リカバリー (HADR) を実現するために、ロード バランサーによって、Azure VM 上の SQL Server を使用するフェールオーバー クラスター インスタンスにトラフィックがルーティングされます。
SQL Server 2019 CU2 以降で代替の接続オプションを使用する場合は、代わりに分散ネットワーク名 (DNN) を使用することを検討してください。 DNN を使用すると、構成が簡素化され、フェールオーバーが改善されます。
前提条件
この記事の手順を完了するには、次のものが必要です。
- Azure Load Balancer がお客様の FCI に適切な接続オプションであると判断済みであること。
- FCI を構成済みであること。
- 最新バージョンの PowerShell をインストール済みであること。
ロード バランサーの作成
次のいずれかの種類のロード バランサーを作成できます。
内部: 内部ロード バランサーは、ネットワークの内部にあるプライベート リソースからのみアクセスできます。 内部ロード バランサーとその規則を構成するときは、フロントエンド IP アドレスとして FCI IP アドレスを使用します。
外部: 外部ロード バランサーは、パブリック リソースから内部リソースへとトラフィックをルーティングすることができます。 外部ロード バランサーを構成するときは、FCI IP アドレスのようなパブリック IP アドレスは使用できません。
外部ロード バランサーを使用するには、FCI と同じサブネット内の IP アドレスのうち、他の IP アドレスと競合しないアドレスを論理的に割り当てます。 このアドレスを負荷分散規則のフロントエンド IP アドレスとして使用します。
ロード バランサーを作成するには、次の手順を実行します。
Azure portal で、仮想マシンが含まれているリソース グループに移動します。
[追加] を選択します。 Azure Marketplace で「ロード バランサー」を検索します。 [ロード バランサー] を選択します。
[作成] を選択します
[ロード バランサーの作成] の [基本] タブで、次の値を使用してロード バランサーを設定します。
- サブスクリプション:Azure サブスクリプション。
- [リソース グループ] :仮想マシンが含まれているリソース グループ。
- Name:ロード バランサーを識別する名前。
- [リージョン] :仮想マシンが含まれている Azure の場所。
- [SKU]: Standard。
- [種類]: パブリックまたは内部。 内部ロード バランサーには、仮想ネットワーク内からアクセスできます。 ほとんどの Azure アプリケーションで内部ロード バランサーを使用できます。 アプリケーションがインターネット経由で直接 SQL Server にアクセスする必要がある場合は、パブリック ロード バランサーを使用します。
- [レベル]: リージョン。
[次へ: フロントエンド IP 構成] を選びます。
[フロントエンド IP 構成の追加] を選択します。
次の値を使用してフロントエンド IP アドレスを設定します。
- [名前]: フロントエンド IP 構成を識別する名前。
- 仮想ネットワーク:仮想マシンと同じネットワーク。
- [サブネット]: 仮想マシンと同じサブネット。
- [割り当て]: 静的。
- [IP アドレス]: クラスター化されたネットワーク リソースに割り当てた IP アドレス。
- [可用性ゾーン]: IP をデプロイするオプションの可用性ゾーンを選びます。
[追加] を選択して、フロントエンド IP アドレスを作成します。
[確認と作成] を選び、ロード バランサーを作成します。
バックエンド プールを構成する
仮想マシンが含まれている Azure リソース グループに戻り、新しいロード バランサーを探します。 リソース グループの表示を更新することが必要な場合もあります。 ロード バランサーを選択します。
[バックエンド プール] を選んでから、[+ 追加] を選択します。
[名前] で、バックエンド プールの名前を指定します。
[バックエンド プールの構成] で [NIC] を選択します。
[追加] を選択して、VM を含む可用性セットにバックエンド プールを関連付けます。
[仮想マシン] で、クラスター ノードとして参加する仮想マシンを選びます。 必ず、FCI をホストするすべての仮想マシンを含めます。
各 VM のプライマリ IP アドレスのみを追加します。 セカンダリ IP アドレスは追加しないでください。
[追加] を選択して、仮想マシンをバックエンド プールに追加します。
[保存] を選択して、バックエンド プールを作成します。
正常性プローブを構成する
ロード バランサーのペインで、[正常性プローブ] を選択します。
[正常性プローブの追加] ペインで、 の次のパラメーターを設定します。
- Name:正常性プローブの名前。
- [プロトコル]: TCP。
- [ポート]: VM を準備したときに正常性プローブ用にファイアウォールで作成したポート。 この記事の例では、TCP ポート 59999 を使用します。
- [間隔]: 5 秒。
[追加] を選択します。
負荷分散規則を設定する
ロード バランサーのペインで、[負荷分散規則] を選択します。
[追加] を選択します。
これらのパラメーターを設定します。
- [名前]: 負荷分散規則の名前。
- [フロントエンド IP アドレス]: フロントエンドを構成したときに設定した IP アドレス。
- [バックエンド プール]: ロード バランサーを対象とする仮想マシンを含むバックエンド プール。
- HA ポート: TCP と UDP プロトコル用のすべてのポートで負荷分散を有効にします。
- [プロトコル]: TCP。
- ポート:SQL Server の TCP ポート。 既定値は 1433 です。
- [バックエンド ポート] : [フローティング IP (ダイレクト サーバー リターン)] を有効にしたときの [ポート] の値と同じポート。
- [正常性プローブ] : 先ほど構成した正常性プローブ。
- [セッション永続化]: なし。
- [アイドル タイムアウト (分)]: 4。
- [フローティング IP](ダイレクト サーバー リターン) : 有効。
[保存] を選択します。
クラスターのプローブを構成する
PowerShell でクラスター プローブのポート パラメーターを設定します。
使用環境の値を使用して、次のスクリプトの変数を更新します。 スクリプトから山かっこ (<
および >
) を削除します。
$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<SQL Server FCI IP Address Resource Name>"
$ILBIP = "<n.n.n.n>"
[int]$ProbePort = <nnnnn>
Import-Module FailoverClusters
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
次の表では、更新する必要がある値について説明します。
変数 | Value |
---|---|
ClusterNetworkName |
ネットワークの Windows Server フェールオーバー クラスターの名前。 [フェールオーバー クラスター マネージャー]>[ネットワーク] で、ネットワークを右クリックして [プロパティ] を選択します。 正しい値は [全般] タブの [名前] にあります。 |
IPResourceName |
SQL Server FCI の IP アドレスのリソース名。 [フェールオーバー クラスター マネージャー]>[Roles](ロール) で、SQL Server FCI ロールの [サーバー名] の下にある IP アドレス リソースを右クリックして [プロパティ] を選択します。 正しい値は [全般] タブの [名前] にあります。 |
ILBIP |
内部ロード バランサーの IP アドレス。 このアドレスは、Azure portal で内部ロード バランサーのフロントエンド アドレスとして構成されます。 これは、SQL Server FCI の IP アドレスでもあります。 [フェールオーバー クラスター マネージャー] で IPResourceName の値があるのと同じプロパティ ページで見つけることができます。 |
ProbePort |
ロード バランサーの正常性プローブで構成したプローブ ポート。 未使用の TCP ポートが有効です。 |
SubnetMask |
クラスター パラメーターのサブネット マスク。 TCP/IP のブロードキャスト アドレス 255.255.255.255 である必要があります。 |
クラスターのプローブを設定したら、PowerShell ですべてのクラスター パラメーターを確認できます。 このスクリプトを実行します。
Get-ClusterResource $IPResourceName | Get-ClusterParameter
接続文字列を変更する
それをサポートするクライアントの場合は、MultiSubnetFailover=True
を接続文字列に追加します。 MultiSubnetFailover
接続オプションは必須ではありませんが、サブネットのフェールオーバーが速くなるという利点があります。 これは、クライアント ドライバーが、各 IP アドレスの TCP ソケットを同時に開こうとするためです。 クライアント ドライバーは、最初の IP アドレスが正常に応答するまで待機します。 正常な応答があると、クライアント ドライバーはその IP アドレスを接続に使用します。
ご自身のクライアントで MultiSubnetFailover
パラメーターがサポートされていない場合は、RegisterAllProvidersIP
と HostRecordTTL
の設定を変更して、フェールオーバー時の接続の遅延を防ぐことができます。
PowerShell を使用して RegisterAllProvidersIp
と HostRecordTTL
の設定を変更します。
Get-ClusterResource yourFCIname | Set-ClusterParameter RegisterAllProvidersIP 0
Get-ClusterResource yourFCIname | Set-ClusterParameter HostRecordTTL 300
詳細については、SQL Server のリスナーの接続タイムアウトに関するドキュメントを参照してください。
ヒント
- 1 つのサブネットの HADR ソリューションでも、接続文字列内で
MultiSubnetFailover
パラメーターをtrue
に設定します。 この設定により、今後、接続文字列を更新することなく、複数のサブネットにまたがることができます。 - 既定では、クライアントは 20 分間、クラスター DNS レコードをキャッシュします。
HostRecordTTL
を小さくすることで、キャッシュされたレコードの有効期間 (TTL) を短縮できます。 そうするとレガシ クライアントはよりすばやく再接続できます。 このため、HostRecordTTL
の設定を小さくすると、DNS サーバーへのトラフィックが増加する可能性があります。
[テスト フェールオーバー]
クラスター化されたリソースのフェールオーバーをテストして、クラスターの機能を検証します。
- リモート デスクトップ プロトコル (RDP) を使用して、SQL Server クラスター ノードのいずれかに接続します。
- フェールオーバー クラスター マネージャーを開きます。 [役割] を選びます。 SQL Server FCI ロールを所有しているノードを確認します。
- SQL Server FCI ロールを右クリックします。
- [移動] を選択し、 [最適なノード] を選択します。
フェールオーバー クラスター マネージャーで、ロールとそのリソースがオフラインになったことが示されます。 リソースは移動し、もう一方のノードでオンラインに戻ります。
接続をテストする
接続をテストするには、同じ仮想ネットワーク内の別の仮想マシンにサインインします。 SQL Server Management Studio を開き、SQL Server FCI 名に接続します。
Note
必要に応じて、SQL Server Management Studio をダウンロードできます。
次のステップ
詳細については、以下をご覧ください。