しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

IIS に Application Request Routing (ARR) をインストールしてロードバランサーを構築してみた

IIS と ARR を使って簡単なリバースプロキシを作るのはとても簡単だったので、今回は Server Farm を作成してロードバランサーを構築してみたいと思います。

実際に作ってみる前は複雑そうな気がしていたんですが、実際には IIS Manager からあっさりと出来ました。

f:id:shiba-yan:20150203215514p:plain

ARR をインストール済みの場合は IIS Manager に Server Farm というツリーが表示されているはずなので、右クリックして Create Server Farm を選択します。

まずは Server Farm の名前を入力します。適当にわかりやすい名前で大丈夫です。

f:id:shiba-yan:20150203213236p:plain

Online にチェックを入れておくと、Server Farm を作成完了後すぐに使えるようになります。

次に進むと負荷分散を行う先のサーバーを追加する画面になるので、既に用意済みであろうサーバーのアドレスを入れます。今回は仮想ネットワークに入れてあるのでプライベート IP アドレスです。

f:id:shiba-yan:20150203213335p:plain

Online にチェックを入れておかないと、そのサーバーは負荷分散先として選択されなくなります。最後に URL Rewrite を追加するかと聞かれるので、追加するを選べば Server Farm の作成は完了です。

Server Farm を作成すると、ロードバランサーとしての設定を行えるようになります。

f:id:shiba-yan:20150203213510p:plain

ロードバランサーとしての機能は一通りそろっているように感じます。URL Rewrite を使って Server Farm へのルーティングを定義しているだけなので、静的ファイルだけ ARR から配信ということも可能です。

Load Balance では負荷分散に利用するアルゴリズムを選択できます。

f:id:shiba-yan:20150203213544p:plain

デフォルトだと Least current request になっていますが、今回は分かりやすくするために Weighted round robin に変更しました。Even Distribution を選択しておけば均等に振り分けてくれます。

他にも今回は使いませんが、Server Affinity では Azure Websites でもお馴染みのクライアントアフィニティに関する設定を行えます。クッキー名の変更も簡単です。

f:id:shiba-yan:20150203220440p:plain

Host Name Affinity は共有サーバー向けの設定のようなので、あまり使う機会は無さそうな感じです。

実際に動作しているかを loader.io と Monitoring and Management を使って確認してみました。

f:id:shiba-yan:20150203214728p:plain

ラウンドロビンなので均等に負荷分散されていることが確認できますね。

loader.io で秒間 5000 リクエストを実行している時でも、リアルタイムにモニタリングが可能でした。