DX化やIT化という言葉が定着し、AmazonやMicrosoftのクラウドサービスを利用する企業も大幅に増加しています。
Azureロードバランサーは、複数サーバーの負荷分散を行い、高い可用性とパフォーマンスを実現するためのサービスで企業のクラウド化に欠かせない存在です。
そこで本記事では、Azureロードバランサーの概要や役割、種類、料金、作成手順、設定方法、負荷分散規則、正常性プローブ、内部ロードバランサーの活用方法について詳しく解説していきます。
Azureの概要やメリットについては、下記の記事で解説しています。ぜひ本記事と併せてご覧ください。
Microsoft Azureとは|何ができる?入門内容からわかりやすく解説
Azureロードバランサーの概要
まずは、Azureロードバランサーの概要や用途を明確にしていただくために、Azureロードバランサーの役割や種類、負荷分散の概念について解説します。
ロードバランサーの役割と利点
Azureロードバランサーは、負荷分散を行うための装置の一種です。負荷分散とは、リクエストを複数のサーバーに分散して処理を行うことを指します。
Webサイトに多数のユーザーが同時にアクセスする場合、サーバーが処理しきれずにアクセスが遅くなったり、サーバーがダウンしてしまったりすることがあります。
これを防ぐために負荷分散が必要となり、負荷分散を行うMicrosoft Azureの機器がAzureロードバランサーです。
Azureロードバランサーの最大の利点は、フェイルオーバー機能です。フェイルオーバー機能とは障害時に自動的に代替処理を行う機能のことです。サーバーに障害が起きた場合でも、自動的にリクエストを別のサーバーに転送することで、可用性を向上します。そのほか、スケーラビリティやセキュリティ脅威に備える機能、高速処理を行う機能が備わっています。
Azureロードバランサーの種類
Azureロードバランサーには、パブリックロードバランサーとプライベートロードバランサーの2種類があります。
外部(パブリック)ロードバランサーは、インターネットに接続されたリソースに対して負荷分散を行うために使用されます。
そして、内部(プライベート)ロードバランサーは、同一のAzure仮想ネットワーク内にあるリソースに対して負荷分散を行います。
Azureロードバランサーを活用してサーバーダウンに対処しよう
Azureロードバランサーを使うことで、サーバーのダウンや負荷増大に対しても安心してシステムを運用可能です。
先ほど紹介したフェイルオーバー機能や負荷分散によって可用性を高めることで、サーバーダウン対策となります。
またAzureロードバランサーは、負荷が増加した場合には自動的にサーバーを増やし、負荷が減少した時はサーバーも減らすオートスケーリング機能も備えています。
これにより、サーバーの負荷が増えてもシステムがダウンすることなく、高速かつスムーズな処理が行われます。
さらに、DDoS攻撃などネットワークセキュリティ攻撃を保護するための機能やバックエンドサーバーの暗号化などの機能を備え、サーバーダウン対策を行うことができます。
Azureロードバランサーの料金
AzureロードバランサーにはBasicと高度な機能をサポートするStandardの2つのプラン(SKUとも呼ばれる)があり、用途に合わせて使い分けがされています。
2つのSKUの料金や機能の違いについて解説していきます。
料金プランの比較
項目 | Basic SKU | Standard SKU |
---|---|---|
料金 | 基本的に無料 ※インバウンドは無料 ※アウトバウンドは転送料がかかる |
使用量ごとの従量課金 ※オフラインの場合は無料 ※外部向け負荷分散は有料 |
Basicは基本的には無料でインバウンドのデータ転送も無料で利用でき、基本的なロードバランサーとしての機能をサポートしています。アウトバウンドのデータ転送料がかかります。
一方で、Standardは有料となり、使用量に応じた料金が発生する従量課金制です。
インターネットに接続しない内部の負荷分散範囲であれば無料で使用できますが、インターネット接続を行う外部向けのパブリック負荷分散が有料となります。
負荷分散ルールをユーザーが設定でき、価格は下記の通りです。
- 最初の5ルールまでは$0.025/時間
- 6個目からは1ルールにつき$0.01/時間
- データ使用料の課金は$0.005/GB
Basic と Standard の機能の違い
項目 | Basic SKU | Standard SKU |
---|---|---|
サポートされる機能 | 基本的な機能 | 高度な機能 |
負荷分散機能 | 基本的な機能のみ | 多様な機能 |
サービスレベルアグリーメント | サポートなし | 99.99%(1週間に約1分) |
バックエンドプールの最大サイズ | 最大300サーバー | 最大1000サーバー ローバル VNet ピアリング、NAT Gateway、Private Link |
Azureロードバランサーの2つのSKUについて料金の違いを紹介しましたが、続いて機能面での違いを解説していきます。
少し専門的な用語が増えますが押さえたいポイントは、Basicは基本的な機能をサポートする点、Standardは高度な機能をサポートする点です。
BasicとStandardはどちらもトランスポート層(4層)のTCP、UDPプロトコルに対応しており、同一仮想ネットワーク内の仮想マシン、仮想マシンスケールセットを負荷分散します。
また、Basicはネットワークインターフェースの負荷分散のみですが、StandardはIPアドレスごとにルール設定が可能です。
そして、Standardは1週間に約1分未満のダウンタイムである99.99%のSLA(サービスレベルアグリメント)を保証しています。
その他、Standardではグローバル VNet ピアリング、NAT Gateway、Private Linkをサポートしています。詳しくはAzureの公式サイトをご確認ください。
どのSKUがあなたに適しているか
AzureロードバランサーのSKUを選ぶ際は、料金と負荷分散するサーバーの数、必要な機能に着目しましょう。
料金を抑えたいという用途であれば、Basicでしょう。
負荷分散するサーバーの数はバックエンドのプールサイズと呼ばれますが、Basicが最大300インスタンスで、Standardが最大1000インスタンスといわれています。
このインスタンスの数も1つのポイントです。
また障害対策を行う場合も、可用性ゾーンをサポートするStandardを使用します。
先ほどStandardのみがサポートしている機能の名称を紹介しましたが、この機能が必要な場合はStandardの利用が必要です。
高機能を求めない場合は、Basicでもよいでしょう。
Azureロードバランサーと混同しやすいサービス
Azureロードバランサーの特徴を紹介してきましたが、Microsoft Azureは、さまざまなサービスがあるため名称や機能など、混同してしまうことがあるかもしれません。
そういった方のために、Azureロードバランサーと混同しやすいサービスを、違いとともに紹介していきます。
AzureロードバランサーとAzure Application Gatewayの違い
AzureロードバランサーとAzure Application Gatewayは、どちらも負荷分散サービスのため混同しやすいです。
■Azureロードバランサー
- レイヤー4のトラフィック(TCP/UDP)を負荷分散するために使用される
- 複数の仮想マシンまたは仮想マシンスケールセットといったサーバーに入るトラフィックを分散している
■Azure Application Gateway
- Azure Application Gatewayは、レイヤー7トラフィック(HTTP/HTTPS)を負荷分散するために使用される
- ソフトウエアやアプリごとに負荷分散を行う
つまり、Azureロードバランサーはハードウエア、Azure Application Gatewayはソフトウエアの負荷分散をサポートするということです。
AzureロードバランサーとAzureトラフィックマネージャーの違い
AzureロードバランサーとAzureトラフィックマネージャーは、どちらもAzureでユーザーからのリクエストを制御するという共通点があり、混同しやすいサービスです。
Azureトラフィックマネージャーは、ドメインネームシステム(DNS)を使用したサービスで、地理的に離れた(別のリージョンと呼ばれる)場所への振り分けを行う有料サービスです。
■Azureロードバランサー
- OSIモデルのレイヤー4での負荷分散をサポート
- Azure仮想マシン、仮想マシンスケールセット、Azure Kubernetes Serviceなどの仮想マシンリソースに対して負荷分散を行います。(グローバルな負荷分散はできない)
- 高可用性を提供するために複数の仮想マシンにトラフィックを分散
- 自動的に故障した仮想マシンを検出し、トラフィックを正常な仮想マシンにルーティングする
- TCP、UDP、HTTP、HTTPSなどのプロトコルに対応しています。
■Azureトラフィックマネージャー
- イヤー7での負荷分散をサポートします。
- インターネットトラフィックをグローバルに負荷分散する
- 複数のリージョンで実行されている仮想マシンにトラフィックを分散
- 自動的に故障したリージョンを検出し、トラフィックを正常なリージョンにルーティングする
- HTTP、HTTPS、TCP、UDP、DNS、FTP、SMTPなどのプロトコルに対応
- セキュリティ、SSLオフロード、セッションアフィニティなどの高度な機能を提供する
東日本リージョンや西日本リージョンといったリージョン規模の大規模な災害に備える場合や、Azureの仮想マシン以外のリソースに負荷分散をさせたい場合に、Azureトラフィックマネージャーが利用されます。
Azureロードバランサーの作成手順
Azureロードバランサーについての理解も深まってきたのではないでしょうか。ここからは実際に利用する方のために、ロードバランサーの利用方法、作成方法を解説していきます。
名称や設定値などは、利用する環境や企業ごとに異なるので注意が必要です。あくまでも設定の参考程度にしてください。
Azureロードバランサー作成の前提条件
Azureロードバランサーを作成する前にはいくつかの前提条件があります。
最初に、Azureポータルにログインできる環境が必要です。
アカウントを持っていない場合は、公式サイトでアカウントを作成し電話番号認証とカード認証を行いましょう。
AzureポータルまたはAzure PowerShellを使用して、ロードバランサーを作成するためのアクセス許可を持っているユーザーの登録も必要です。
Azureポータルにログインしたら、ユーザー情報や支払い用のクレジットカードの登録を行い、Azureサブスクリプションを作成します。
Azureポータルを使用したロードバランサーの設定方法
この設定を行う前に、仮想マシン(サーバー)の作成をしておく必要があります。
この仮想マシンの作成には料金が発生するので、ご注意ください。
Azureポータルを使用したロードバランサーの設定手順は、以下の通りです。
Azureポータルにサインインして、「ロード バランサー」を選択します。
「+作成」ボタンを選択して、新しいロードバランサーを作成します。
ロードバランサーの基本情報を入力します。
入力後、一番下の「次:フロントエンドIP構成」を押します。
フロントエンドIP構成の追加で、任意の情報を入力し設定を行います。
入力後、一番下の「次:バックエンドプール」をクリックし、負荷分散に使うサーバーの選択を行います。
ここで、仮想マシンのIPアドレスが必要になります。
入力後は、左下の青いボタン「確認および作成」をクリックし、エラーが表示されなければ、そのまま作成を押します。
この操作で、Azureポータルを使用した ロードバランサーの作成が完了です。
Azure CLIを使用したロードバランサーの設定方法
- Azure CLIをインストールする
こちらのページからインストール可能です。 - Azure CLIにログインする。
az login - リソースグループを作成する
az group create --name myResourceGroup --location japaneast - パブリックIPアドレスを作成する。
az network public-ip create --resource-group myResourceGroup --name myPublicIP --allocation-method Static --sku Standard - ロードバランサーを作成する。
az network lb create --resource-group myResourceGroup --name myLoadBalancer --public-ip-address myPublicIP --frontend-ip-name myFrontEnd --backend-pool-name myBackEndPool --sku Standard - ロードバランサールールを作成する。
az network lb rule create --resource-group myResourceGroup --lb-name myLoadBalancer --name myLoadBalancerRule --protocol tcp --frontend-port 80 --backend-port 80 --frontend-ip-name myFrontEnd --backend-pool-name myBackEndPool --probe-name myHealthProbe
これで、Azure CLIを使用してロードバランサーを作成しました。必要に応じて、バックエンドプールと仮想マシンの作成と構成が行えます。
Azureロードバランサーの負荷分散規則
ここからは、負荷分散ルールについて説明していきます。
負荷分散とは
ここで再度解説しますが、負荷分散とは、複数の仮想マシンやサービスなどの処理を均等に分散することで、高速処理や高可用性を実現する技術です。
Webサイトにアクセスが集中した場合でも、複数のサーバーにトラフィックを分散することで、応答時間の遅延やサーバーのクラッシュを回避できます。
負荷分散規則の設定方法
Azureロードバランサーの負荷分散規則を設定するには、次の手順を実行します。
作成したロードバランサーのページで、左のバーにある負荷分散規則をクリック。
負荷分散規則のページで、「+追加」を選択します。
負荷分散規則の追加ページで、必要な情報を入力していきます。
正常性プローブについては、後ほど詳しく解説します。
セッション永続化は、同じユーザーからの要求が同じバックエンド サービスに届くようにするための仕組みです。例えば、ショッピングサイトでの買い物かごのように、複数のリクエストが同じセッションにひもづくようにできます。
アイドルタイムアウトは、設定した時間アイドル状態が続くと、ロードバランサーがその接続を切断できる機能です。
フローティングIPを有効にすると、ロードバランサーのフロントエンドIPアドレスを静的IPから動的IPに変更できます。
これにより、IPアドレスが変更となる場合の影響を最小限に抑えることができます。
最適な負荷分散戦略
今回は、Azureロードバランサーを使用してWebサイトを運用する場合を想定し、最適な負荷分散戦略を考えてみましょう。
ポートは、WebサーバーでHTTPを使用する場合、80を設定しますが、セキュリティを高めたHTTPSを使用する場合は、443を使用します。
バックエンドサービスの正常性を定期的にチェックするために、正常性プローブの設定を有効にします。
セッション永続化の有効化では、ユーザーが同じバックエンドサービスに接続し続けるように、セッション永続化を有効にします。
トラフィックの分散方法には、ラウンドロビン、IPハッシュ、および最小接続数がありますが、Webサイトの場合は、ラウンドロビン方式がおすすめです。
アイドルタイムアウト(推奨が5分から15分)の設定をして、バックエンドサービスが無駄なリソースを消費しないようにしましょう。
最後に、フローティングIPを有効にします。
Azureロードバランサーの正常性プローブ
正常性プローブの詳細について解説していきます。バックエンドで動いているサーバーをチェックする機能、ということを念頭に読み進めていってください。
正常性プローブとは
Azureロードバランサーの正常性プローブとは、バックエンドの仮想マシンや仮想マシン スケールセットが正常に応答しているかどうかを定期的に監視するための機能です。
プローブはサーバーに対して通信を行い、応答が成功した場合はバックエンドを正常と判断し、応答がない場合は異常と判断する機能を持っています。
正常性プローブを設定することで、ロードバランサーは異常なバックエンドを自動的に検出して負荷分散の対象から外すことができるため、サービスの可用性とパフォーマンスを向上させるために重要な機能です。
正常性プローブの役割と設定方法
Azureロードバランサーは、正常性プローブを使用して、バックエンドプール内のサーバーが応答できるかどうかを確認します。
正常性プローブでは、特定のポートに対するトラフィックの到達可能性を確認できます。
Azureポータルのロードバランサーのページで、先ほどの負荷分散規則の上に、正常性プローブの項目があります。
そこから、正常性プローブの追加をクリックすると、設定ページが開きます。
プロトコル入力欄で、TCP、HTTPもしくは、UDPかHTTPSを選択してください。
何秒おきにサーバーに、チェックのための通信をするかを間隔で設定できます。
正常性プローブによるダウンタイム対策
ダウンタイム対策についても、Webサイトを運用することを想定し設定をしていきましょう。
運用するWebサーバーの状況やアプリによって最適な設定値は異なるため、あくまでも参考値としてご確認ください。
Webサイトを運用する際のプロトコルは、より限定的な制御を行うためにHTTPまたはHTTPSを使用します。
ポートは、正常性プローブを割り当てるロードバランサーのバックエンドポートと同じポート番号を指定します。
間隔は、通常、5〜15秒間隔で正常性プローブを送信することが推奨されています。
間隔を短くすると、バックエンドサービスに対する負荷が増加し、間隔を長くすると不正確な結果が得られる場合があります。
Azure 内部ロードバランサーの活用方法
これまでに、外部ロードバランサーと内部ロードバランサーがあるという説明をしました。
ここまでの設定方法や説明は、基本的にインターネットに接続する外部ロードバランサーに対してのものです。
ここからは、Azureの内部ロードバランサーについて解説していきます。
内部ロードバランサーの特徴
Azureでは、内部ロードバランサーを使用することで、同一仮想ネットワーク内のバックエンド仮想マシンへの負荷分散を実現できます。
内部ロードバランサーは、基本的に外部ロードバランサーと同じ機能を持っていますが、プライベートIPアドレスを使用します。そのため、インターネットからアクセスできず、仮想ネットワーク内で高可用性を実現するために使用されます。
どのようなシーンで内部ロードバランサーが役立つか解説
Azureの内部ロードバランサーは基本的には外部ロードバランサーと同じで、Webサイトを運用する場合、複数のWebサーバーを使用してトラフィックを分散し、サイトのパフォーマンスを向上させることができます。
これにより、Webサーバーやアプリケーションサーバーなど、同じサービスを提供する複数の仮想マシンをグループ化し、高可用性と負荷分散を実現できます。
外部ロードバランサーとの違いはセキュリティ面で、内部ロードバランサーを使用すると、セキュリティの強化が可能です。
Webサーバーへのアクセスを、内部ロードバランサー経由でのみ許可することで、外部ユーザーがサーバーに直接アクセスすることを防止し、セキュリティを向上させることができます。
まとめ
Azureのロードバランサーについて、SKUや負荷分散について解説してきました。IT特有の専門用語が多くなりましたが、設定方法や負荷分散規則の設定、正常性プローブの役割、内部ロードバランサーの特徴についても紹介したので理解が深まったのではないでしょうか。
これから実際に利用する方は、用途によって設定が変わってくるということを念頭において最適な設定を探ってみてください。