Japan
サイト内の現在位置を表示しています。
Azure ロードバランサーのDSRを利用したHAクラスターの構築を試してみました(Linux)
CLUSTERPRO オフィシャルブログ ~クラブロ~
はじめに
Microsoft Azureで、HAクラスターの接続先切り替えにAzureロードバランサーのDSRを使用したHAクラスターの構築を試してみました。
Azureロードバランサーでは、負荷分散規則にフローティングIP(Direct Server Return)が選択可能です。
CLUSTERPROのAzure向けHAクラスタ構築ガイドでは、DSRは無効の通常のロードバランサーを使用したHAクラスターの構築手順を紹介していますが、今回は、DSRを有効化した状態でHAクラスターを構築します。
構築手順は、WindowsとLinuxで異なります。今回は、Linux環境におけるAzureロードバランサーのDSRを有効化した状態でHAクラスターを構築するための設定方法をご紹介します。
Windows環境における構築手順はこちらより参照ください。
この記事の内容
1. DSRとは
DSR(Direct Server Return)は、ロードバランサーの機能の一つです。
クライアントからロードバランサー経由でサーバーにアクセスする際に、サーバーからクライアントへの応答も通常はロードバランサーを経由します。
DSRを使用すると、ロードバランサーを経由することなく、サーバーからクライアントへ直接応答することが可能です。
Azureロードバランサーでは、負荷分散規則の設定で、フローティングIP(Direct Server Return)の有効化/無効化が選択できます。
2. HAクラスター構成
「ロードバランサーを使用したHAクラスター」を構築します。構成は以下の通りです。

- Azureロードバランサーを使用して現用系サーバーへ接続先を切り替え
- HAクラスター対象のアプリケーションに
MinIOを使用
また、DSRを使用するため、HAクラスターを構築するサーバーのローカルループバックにロードバランサーのフロントエンドIPアドレス(例.10.5.0.200)を付与します。
今回は、ロードバランサーの接続先切り替えに合わせて、CLUSTERPROのEXECリソースで、IPアドレスの付け替えを行います。
DSRを使用する構成は、以下のサイトを参考にしました。
3. HAクラスター構築手順
「内部ロードバランサーを使用したHAクラスター」を構築します。構築手順は、HAクラスタ構築ガイド(Linux)を参照ください。
3.1 ロードバランサーの作成
ロードバランサーのDSRを有効化します。
構築ガイドの「構築手順(内部ロードバランサーを使用したHAクラスタの場合)」に記載の 「Microsoft Azure の設定」-「ロードバランサーの設定(負荷分散規則の設定)」に以下の手順を追加します。
ロードバランサーのフローティングIP(Direct Server Return)を有効化します。
また、ポートとバックエンドポートには、同一のポート番号を設定します。
今回は、MinIOの接続に使用するためのポート番号に9000を指定します。
3.2 HAクラスターの構築
ロードバランサーの切り替えに合わせて、ローカルループバックにフロントエンドIPアドレスを追加/削除するEXECリソースを登録します。
構築ガイドの「構築手順(内部ロードバランサーを使用したHAクラスタの場合)」に記載の「CLUSTERPROの設定」に以下の手順を追加します。
EXECリソースを追加し、ローカルループバックにフロントエンドIPアドレスを追加/削除するスクリプトを登録します。
CLUSTERPRO Xでは、スクリプトを実行する場合に、環境変数によってスクリプト実行要因を指定します。
スクリプトの記述についての詳細はCLUSTERPRO Xのリファレンスガイドを参照ください。
なお、EXECリソースの依存関係は、依存するリソースなし(深度0)に設定します。
- ※以下のスクリプトはipコマンドによるフロントエンドIPアドレスの追加/削除を記述したものです。
Red Hat Enterprise Linux 7.6 にて動作確認を行っています。 - ※スクリプトはサンプルであり、動作を保証するものではありません。
- ※★部分の変数の値は環境に合わせて設定してください。
SERVER1_NAME="server1" ★Server1のホスト名
SERVER1_NIC="lo" ★Server1のローカルループバックのインターフェース名
# Server2
SERVER2_NAME="server2" ★Server2のホスト名
SERVER2_NIC="lo" ★Server2のローカルループバックのインターフェース名
# VIP Address
VIP=10.5.0.200 ★ロードバランサーのフロントエンドIPアドレス
NETMASK=255.255.255.255 ★フロントエンドIPアドレスのネットマスク
# HostName
CURRENT_HOSTNAME=`hostname`
if [ $CURRENT_HOSTNAME = $SERVER1_NAME ]; then
NIC=$SERVER1_NIC
elif [ $CURRENT_HOSTNAME = $SERVER2_NAME ]; then
NIC=$SERVER2_NIC
else
echo "SERVER is not found."
exit 1
fi
# Add IP Address
ip addr add $VIP/$NETMASK brd + dev $NIC
RET=$?
if [ $RET = 0 ]; then
exit 0
else
echo "Failure to add IP Address"
exit 1
fi
停止スクリプト
SERVER1_NAME="server1" ★Server1のホスト名
SERVER1_NIC="lo" ★Server1のローカルループバックのインターフェース名
# Server2
SERVER2_NAME="server2" ★Server2のホスト名
SERVER2_NIC="lo" ★Server2のローカルループバックのインターフェース名
# VIP Address
VIP=10.5.0.200 ★ロードバランサーのフロントエンドIPアドレス
NETMASK=255.255.255.255 ★フロントエンドIPアドレスのネットマスク
# HostName
CURRENT_HOSTNAME=`hostname`
if [ $CURRENT_HOSTNAME = $SERVER1_NAME ]; then
NIC=$SERVER1_NIC
elif [ $CURRENT_HOSTNAME = $SERVER2_NAME ]; then
NIC=$SERVER2_NIC
else
echo "SERVER is not found."
exit 1
fi
# Del IP Address
ip addr del $VIP/$NETMASK brd + dev $NIC
RET=$?
if [ $RET = 0 ]; then
exit 0
else
echo "Failure to del IP Address"
exit 1
fi
4. 動作確認
フェールオーバーグループを起動し、現用系のMinIOにアクセスができることを確認します。
また、DSRが使用できているか確認するため、パケットキャプチャし、通信元、通信先のIPアドレスを確認します。
Server1でフェールオーバーグループを起動し、MinIOにアクセスできることを確認します。 パケットキャプチャし、クライアントのIPアドレス(10.5.0.4)とサーバーに付与したIPアドレス(10.5.0.200)で通信が行われることを確認します。
フェールオーバーを実行し、Server2でフェールオーバーグループを起動し、MinIOにアクセスできることを確認します。
パケットキャプチャし、同様に、クライアントのIPアドレス(10.5.0.4)とサーバーに付与したIPアドレス(10.5.0.200)で通信が行われることを確認します。
フェールオーバーの前後で、サーバーに付与したIPアドレスを使用してパケットの送受信ができていることが確認できました。
まとめ
今回はAzureロードバランサーのDSRを利用したHAクラスターの構築手順を紹介させていただきました。
HAクラスター対象のアプリケーションの要件などで、DSRの利用が必要な場合は、本手順を参考にHAクラスターを構築ください。
本記事の構成をご検討の際は、CLUSTERPROの試用版を用いて検証した後、ご提案・構築ください。
お問い合わせ

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