はじめに
今回はロードバランサーという機能がある Azure Load Balancer について解説をしていきます。
Webサイトなどへのアクセスを、各サーバに分散して振り分けてくれるもので、
ロードバランサー+仮想マシンはクラウドでよく使われる構築パターンです。
- 初心者向けに難易度は易しめです
- azure に詳しくない方でも、どんなサービスかある程度わかるようになると思います
- ロードバランサーで他サービスと比較したい、良いサービスを探している方はぜひ参考にしていただければと思います
Azure Load Balancer の概要
- クラウドで提供されるロードバランサー
- ネットワーク機器である、ロードバランサーのハードウェアレベルやネットワーク接続といった煩雑な設定は不要
- らくらく負荷分散環境を構築
- Azure Load Balancer は Basic と Standard という二種類のレベルがある
Standard と Basic の違い
Basic についてのご紹介ですが、両種違いについては以下となります
- Azure では Standard Load Balancer を推奨
- スタンドアロン VM、可用性セット、および仮想マシン スケール セットは、どちらか一方にのみ接続可能で、両方には接続できない
- 分散先の仮想マシンの数が大幅に増える
- セキュリティグループが使える
※
バックエンドプールとは…アプリに関する同様のトラフィックを受信する、バックシステムのセットのこと
正常性プローブとは…負荷分散リソースの正常性を監視する精査方法
対応範囲 | Standard Load Balancer | Basic Load Balancer |
---|---|---|
バックエンド プールのサイズ | 最大 1,000 インスタンスをサポート | 最大 300 インスタンスをサポート。 |
バックエンド プール エンドポイント | 単一の仮想ネットワーク内の任意の仮想マシン、または仮想マシン スケール セット | 単一の可用性セットまたは仮想マシン スケール セット内の仮想マシン |
正常性プローブ | TCP、HTTP、HTTPS | TCP、HTTP |
正常性プローブ ダウン動作 | インスタンス プローブがダウンし、かつ すべてのプローブがダウンしても TCP 接続は存続 | インスタンス プローブがダウンしても TCP 接続は存続。 すべてのプローブがダウンすると、すべての TCP 接続が終了 |
可用性ゾーン | 受信トラフィックと送信トラフィック用のゾーン冗長およびゾーン フロントエンド | 使用不可 |
診断 | Azure Monitor 多次元メトリック | Azure Monitor ログ |
HA ポート | 内部ロード バランサーで使用可能 | 使用不可 |
既定でのセキュリティ保護 | ネットワーク セキュリティ グループで許可されている場合を除き、受信フローは禁止。 仮想ネットワークから内部ロードバランサーへの内部トラフィックは許可 | 既定で開いている。 ネットワーク セキュリティ グループはオプション |
送信規則 | 宣言型の送信 NAT 構成 | 使用不可 |
アイドルの TCP リセット | 任意のルールで利用可能 | 使用不可 |
複数のフロントエンド | 送受信 | 受信のみ |
管理操作 | ほとんどの操作は 30 秒未満 | 一般に 60 ~ 90 秒以上 |
SLA | 99.99% | 使用不可 |
主な機能
負荷分散
- レイヤー 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レベルの分散を行います。
その他
- プローブの監視は、ロードバランサーのフロント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 があれば
クラウド上でありマネージドベースで、オートスケールするシステム環境を簡単に構築することができます。
一つのクラウドサービスで猥雑な管理をせずに、スムーズに環境構築できるのは、他の開発環境に集中する上でとても重要なことですね。
どんどん使っていきたいサービスです。