サイト内の現在位置を表示しています。

Azure ロードバランサーのDSRを利用したHAクラスターの構築を試してみました(Windows)

CLUSTERPRO オフィシャルブログ ~クラブロ~

はじめに

Microsoft Azureで、HAクラスターの接続先切り替えにAzure ロードバランサーのDSRを使用したHAクラスターの構築を試してみました。

Azure ロードバランサーでは、負荷分散規則にフローティングIP(Direct Server Return)が選択可能です。
CLUSTERPROのAzure向けHAクラスタ構築ガイドでは、DSRは無効の通常のロードバランサーを使用したHAクラスターの構築手順を紹介していますが、今回は、DSRを有効化した状態でHAクラスターを構築します。

構築手順は、WindowsとLinuxで異なります。今回は、Windows環境におけるAzure ロードバランサーのDSRを有効化した状態でHAクラスターを構築するための設定方法をご紹介します。

Linux環境における構築手順はpopupこちらより参照ください。
  • スクリプトリソースの起動スクリプト(フロントエンドIPアドレスの追加コマンド)を更新しました。 (2021/09/17)

この記事の内容

1. DSRとは

DSR(Direct Server Return)は、ロードバランサーの機能の一つです。
クライアントからロードバランサー経由でサーバーにアクセスする際に、サーバーからクライアントへの応答も通常はロードバランサーを経由します。
DSRを使用すると、ロードバランサーを経由することなく、サーバーからクライアントへ直接応答することが可能です。

Azure ロードバランサーでは、負荷分散規則の設定で、フローティングIP(Direct Server Return)の有効化/無効化が選択できます。 

2. HAクラスター構成

「ロードバランサーを使用したHAクラスター」を構築します。
構成は以下の通りです。

HAクラスター構成の図
  • Azure ロードバランサーを使用して現用系サーバーへ接続先を切り替え
  • HAクラスター対象のアプリケーションにIISを使用

3. HAクラスター構築手順

また、DSRを使用するため、HAクラスターを構築するサーバーのループバックアダプタにロードバランサーのフロントエンドIPアドレス(例.10.1.0.201)を付与します。
今回は、ロードバランサーの接続先切り替えに合わせて、CLUSTERPROのスクリプトリソースで、IPアドレスの付け替えを行います。

DSRを使用する構成は、以下のサイトを参考にしました。

「内部ロードバランサーを使用したHAクラスター」を構築します。
構築手順は、HAクラスタ構築ガイド(Windows)を参照ください。

【参考】
  • Windows > クラウド > Microsoft Azure > HAクラスタ構築ガイド

3.1 仮想マシンの設定

HAクラスターを構築するサーバーに、ループバックアダプタを追加します。

構築ガイドの「構築手順(内部ロードバランサーを使用したHAクラスタの場合)」に記載の「Microsoft Azure の設定」-「仮想マシンの設定」に、以下の手順を追加します。

デバイスマネージャーからネットワークアダプタにループバックアダプタ(Microsoft KM-TEST Loopback Adapter)を追加します。
また、DSR機能を使用するため、実際の通信に利用するインターフェース(例.ローカルエリア接続2)、ループバックアダプタのインターフェース(例.ローカルエリア接続3)に対して、以下のコマンドを実行します。

 > netsh interface ipv4 set interface "ローカル エリア接続 2" weakhostreceive=enabled
 > netsh interface ipv4 set interface "ローカル エリア接続 3" weakhostreceive=enabled
 > netsh interface ipv4 set interface "ローカル エリア接続 3" weakhostsend=enabled

3.2 ロードバランサーの作成

ロードバランサーのDSRを有効化します。

構築ガイドの「構築手順(内部ロードバランサーを使用したHAクラスタの場合)」に記載の「Microsoft Azure の設定」-「ロードバランサーの設定(負荷分散規則の設定)」に以下の手順を追加します。

ロードバランサーのフローティングIP(Direct Server Return)を有効化します。
また、ポートとバックエンドポートには、同一のポート番号を設定します。今回は、IISの接続に使用するため80番ポートを指定します。

3.3 HAクラスターの構築

ロードバランサーの切り替えに合わせて、ループバックアダプタにフロントエンドIPアドレスを追加/削除するスクリプトリソースを登録します。

構築ガイドの「構築手順(内部ロードバランサーを使用したHAクラスタの場合)」に記載の「CLUSTERPROの設定」に、以下の手順を追加します。

スクリプトリソースを追加し、ループバックアダプタにフロントエンドIPアドレスを追加/削除するスクリプトを登録します。
CLUSTERPRO Xでは、スクリプトを実行する場合に、環境変数によってスクリプト実行要因を指定します。
スクリプトの記述についての詳細はCLUSTERPRO Xのリファレンスガイドを参照ください。
なお、スクリプトリソースの依存関係は、依存するリソースなし(深度0)に設定します。
  • 以下のスクリプトはサンプルであり、動作を保証するものではありません。
  • ★部分の変数の値は環境に合わせて設定してください。
  • 本スクリプトでは、SERVER1_NIC、SERVER2_NICに指定したインターフェースのIPアドレスをフロントエンドIPアドレスで上書きします。そのため、仮想マシンの接続に利用するインターフェース名を設定すると、仮想マシンへ接続ができなくなりますのでご注意ください。

起動スクリプト

rem Server01
set SERVER1_NAME=Server01 ★Server01のホスト名
set SERVER1_NIC="イーサネット接続 3" ★Server01のループバックアダプタのインターフェース名

rem Server02
set SERVER2_NAME=Server02 ★Server02のホスト名
set SERVER2_NIC="イーサネット接続 3" ★Server02のループバックアダプタのインターフェース名

rem VIP Address
set VIP=10.1.0.201 ★ロードバランサーのフロントエンドIPアドレス
set NETMASK=255.255.255.255


for /f "usebackq tokens=*" %%i in (`hostname`) do @set CURRENT_HOSTNAME=%%i

if %CURRENT_HOSTNAME%==%SERVER1_NAME% (
    set NIC=%SERVER1_NIC%
) else if %CURRENT_HOSTNAME%==%SERVER2_NAME% (
    set NIC=%SERVER2_NIC%
) else (
    echo "SERVER is not found."
    exit 1
)

rem Add IP Address
netsh interface ip add address %NIC% addr=%VIP% mask=%NETMASK% store=active
if not %ERRORLEVEL%==0 (
    echo "Failure  to add IP Address"
    exit 1
)

停止スクリプト

rem Server01
set SERVER1_NAME=Server01 ★Server01のホスト名
set SERVER1_NIC="イーサネット接続 3" ★Server01のループバックアダプタのインターフェース名

rem Server02
set SERVER2_NAME=Server02 ★Server02のホスト名
set SERVER2_NIC="イーサネット接続 3" ★Server02のループバックアダプタのインターフェース名

rem VIP Address
set VIP=10.1.0.201 ★ロードバランサーのフロントエンドIPアドレス

for /f "usebackq tokens=*" %%i in (`hostname`) do @set CURRENT_HOSTNAME=%%i

if %CURRENT_HOSTNAME%==%SERVER1_NAME% (
    set NIC=%SERVER1_NIC%
) else if %CURRENT_HOSTNAME%==%SERVER2_NAME% (
    set NIC=%SERVER2_NIC%
) else (
    echo "SERVER is not found."
    exit 1
)

rem Delete IP Address
netsh interface ip delete address %NIC% addr=%VIP%
if not %ERRORLEVEL%==0 (
    echo "Failure  to delete ip address"
    exit 1
)

4. 動作確認

フェイルオーバーグループを起動し、現用系のIISにアクセスができることを確認します。
また、DSRが使用できているか確認するため、パケットキャプチャし、通信元、通信先のIPアドレスを確認します。

Server01でフェイルオーバーグループを起動し、IISにアクセスできることを確認します。
パケットキャプチャし、クライアントのIPアドレス(10.1.0.100)とサーバーに付与したIPアドレス(10.1.0.201)で通信が行われることを確認します。

フェイルオーバーを実行し、Server02でフェイルオーバーグループを起動し、IISにアクセスできることを確認します。
パケットキャプチャし、同様に、クライアントのIPアドレス(10.1.0.100)とサーバーに付与したIPアドレス(10.1.0.201)で通信が行われることを確認します。

フェイルオーバーの前後で、サーバーに付与したIPアドレスを使用してパケットの送受信ができていることが確認できました。

まとめ

今回はAzure ロードバランサーのDSRを利用したHAクラスターの構築手順を紹介させていただきました。
HAクラスター対象のアプリケーションの要件などで、DSRの利用が必要な場合は、本手順を参考にHAクラスターを構築ください。

最後まで読んでいただきありがとうございました。

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。
  • 本記事で紹介しているスクリプトの内容についてのお問い合わせ、および、お客様環境に合わせたカスタマイズにつきましてはCLUSTERPRO導入支援サービスにて承っておりますので、上記窓口の"ご購入前のお問い合わせ"フォームまでお問い合わせください。