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

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

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

はじめに

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

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

この記事の内容

  • 1.DSRとは
  • 2.HAクラスター構成
  • 3.HAクラスター構築手順
  • 4.動作確認

1. DSRとは

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

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

2. HAクラスター構成

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

HAクラスター構成の図

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

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

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

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

「内部ロードバランサーを使用したHAクラスター」を構築します。
構築手順は、HAクラスタ構築ガイドを参照ください。
Windows/Linuxそれぞれで検証実績がありますが、今回はWindowsの手順を記載します。

3-1.仮想マシンの設定

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

構築ガイドの「5.2 Microsoft Azure の設定」-「6)仮想マシンの設定」に、以下の手順を追加します。

デバイスマネージャーからネットワークアダプタにループバックアダプタ(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を有効化します。

構築ガイドの「5.2 Microsoft Azure の設定」-「10)ロードバランサーの設定(負荷分散規則の設定)」に以下の手順を追加します。

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

3-3. HAクラスターの構築

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

構築ガイドの手順「5.3 CLUSTERPROの設定」に、以下の手順を追加します。

スクリプトリソースを追加し、以下のループバックアダプタにフロントエンドIPアドレスを追加/削除するスクリプトを登録します。
CLUSTERPRO Xでは、スクリプトを実行する場合に、環境変数によってスクリプト実行要因を指定します。
スクリプトの記述についての詳細はCLUSTERPRO Xのリファレンスガイドを参照ください。
なお、スクリプトリソースの依存関係は、依存するリソースなし(深度0)に設定します。
※以下のスクリプトはサンプルであり、動作を保証するものではありません。
※★部分の変数の値は環境に合わせて設定してください。

起動スクリプト

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 ★フロントエンド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 Add IP Address
netsh interface ip add address %NIC% addr=%VIP% mask=%NETMASK%
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クラスターを構築ください。

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

参考

クラウド向けクラスター構築支援サービス(クラウドHAコンサル)を実施しています。
お問い合わせ先はこちら(info@clusterpro.jp.nec.com new window)

お問い合わせ

当ブログに関するお問い合わせは、CLUSTERPRO プリセールスお問い合わせ窓口(info@clusterpro.jp.nec.com new window)までお問い合わせください。