Azure Load Balancerを解説 【シリーズ Azureサービスいちから紹介】

LINEで送る
Pocket

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の11日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

11日目はAzure Load Balancerです。ロードバランサーはWebサイトなどへのアクセスを各サーバに分散して振り分けてくれるもので、ロードバランサー+仮想マシンはクラウドでよく使われる構築パターンです。

概要

Azure Load Balancerは、クラウドで提供されるロードバランサーです。
ネットワーク機器であるロードバランサーのハードウェアレベルやネットワーク接続といった煩雑な設定は不要で、簡単に負荷分散環境を構築することができます。Azure Load BalancerはBasicとStandardというふたつのレベルがありますが、今回はBasicを紹介します。
なお、Standardは2017年12月10日時点でプレビューでBasicと比較して、分散先の仮想マシンが千台規模と多数の機器に分散できたり、セキュリティグループが使えたりと、Basicより機能が強化されているようです。

機能

・負荷分散
レイヤー 4 (TCP、UDP) ロードバランサーです。「負荷分散セット」に登録された仮想マシンなどのサービスに対してアクセスを振り分けることができます。この負荷分散セットは、例えば仮想マシンを作成するときに、あらかじめ負荷分散セットを指定して登録しておく必要があります。
インターネットからの通信を振り分けるパブリック(Public)なロードバランサと、Azure内部の通信を振り分ける内部的(Internal)なロードバランサーを定義できます。

・負荷分散の方式

負荷分散はは、ハッシュベースの分散アルゴリズムを使用します。デフォルトでは、送信元IP、送信元ポート、接続先IP、接続先ポート、プロトコルの5つの値を組み合わせて求められるハッシュ値(5タプルハッシュ)から振り分け先が決められます。あるIPからの接続はいつも同じインスタンスに振り分けられない可能性があります。TCPまたはUDP セッションが続く限りは同じインスタンスに送信されますが、同じIPからの接続でも、新しいセッションを開始されるとと送信元ポートが変更、ハッシュ値も変わって別のインスタンスに送信されるケースがあります。

・ポートフォワーディング

入力側のポートと振り分け先のポートはルールを決めて変換することができます。例えば、インターネットからは80番ポートで受けて、81番ポートに転送することもできます。

サービスの監視

Load Balancerからインスタンスの正常性を監視することができます。あるインスタンスが異常状態と検知されると、Load Balancerは、そのインスタンスへの振り分けを停止します。正常性の確認は3種類のプローブが提供されます。

・ゲストエージェントプローブ
仮想マシンの状態を仮想マシン内のエージェントが応答します。HTTP 200 OK応答っを正常状態として、それ以外の状態の場合は振り分けを停止します。

・HTTPカスタムプローブ
例えば、インスタンスのCPU使用率が90%を超えた場合に200以外の状態を返すようなカスタムロジックが考えられます。

・TCPカスタムプローブ
情報が少ないのですが、TCPポートとのセッションが確立できるか(ポートが空いているか?)で正常、異常を判断するというものではないかと考えています。

他の負荷分散機能との違い

Azure Load Balancer以外にもネットワークトラフィックを分散するサービスがAzureにはあります。

Azure Load Balancerは、トランスポート層で動作します(OSIネットワーク参照モデルの第4層)。AWSだとNLB相当で柔軟にTCP/UDPの振り分けができます。
Application Gatewayは、アプリケーション層で動作します(OSIネットワーク参照モデルの第7層)。AWSだとCLBからALBに相当するかと思います。SSLの終端も可能です。
Traffic Managerは、DNSレベルの分散を行います。

https://docs.microsoft.com/ja-jp/azure/load-balancer/load-balancer-overview#load-balancer-differences から引用

その他

・プローブの監視はロードバランサーのフロントIPからではなく168.63.129.16から行われる。デフォルトのセキュリティグループルールでも許可するようになっているが、誤って禁止しないように注意したほうがいい。

・IPは静的、動的とも割り当て可能。

料金

・Basic Load Balancerは無料。

・Standard Load BalancerはLoad Balancerルール数、NATルール数、データ処理量(GB単位)に応じて課金される (プレビュー期間中は無料)

・Standardも内部負荷分散であれば無料。

まとめ

Azure Virtual MachineとAzure SQL Database、そしてAzure Load Balancerがあれば、クラウド上でマネージドベースでオートスケールするシステム環境を簡単に構築することができます。現状ではBasic Load Balancerは無料で使えるので、後日負荷分散する構成を作ってみたいです。

LINEで送る
Pocket