自然災害やサーバーの故障時、あるいはECサイトでアクセスが集中した場合、ネットワークとサーバーの処理速度が低下して、Webサイトが表示されなくなったり接続できなくなったりすることがあります。このような障害を防ぐために、負荷(load)を分散して平衡を保つ(Balancer)仕組みが「ロードバランサー」です。
Azureにはネットワークや仮想マシンへの負荷を分散して安定したサービスを提供する機能として「Azure Traffic Manager」「Azure Load Balancer」「Azure Application Gateway」があります。
ここでは、Azure Application Gatewayのメリットと機能、他の機能との違いや関連性について解説します。
Azure Load Balancerとの違い
一般的なロードバランサーとして、Azureでネットワークのトラフィックに対して負荷分散を行う機能は、Azure Load Balancerです。Azure Load BalancerとAzure Application Gatewayは、クライアントからの通信をどのように処理するかという役割で異なります。
Azure Load Balancerからサーバーへの通信は、クライアントIPを送信元として、Azure Load BalancerのフロントエンドのIPから組み込みによるネットワークにアドレス変換 (NAT) した後、仮想マシンに送信します。通信の戻りは、クライアントのIPをAzure Load BalancerのフロントエンドのIPからクライアントと通信して、プライベートネットワークを保護します。
一方、配信コントローラーとして「Azure Application Gateway」では、Webアプリケーションのトラフィックを管理して負荷分散を担います。Azure Load Balancerとの違いは、Application Gatewayが内部IPつまり通信するインスタンスのIPを使って、仮想マシンと送受信を行う点です。したがって、Azure Load Balancerからパスの振り分けによって柔軟な負荷分散が可能です。
なお、「Azure Traffic Manager」は、DNSによって負荷分散を行う機能です。
Azure Application Gatewayを作成すると、Azure Load Balancerによるエンドポイントが作成されます。したがって、Azure Traffic Manager、Azure Load Balancer、Azure Application Gatewayの3つによるクライアントから仮想マシンへの負荷分散の流れは、次のようになります。
(1)クライアントからのトラフィックをまずAzure Traffic ManagerがDNSロードバランサーの機能として負荷を分散させます。
(2)次に、DNSに対応したAzure Load Balancerから、Azure Application GatewayによってWebアプリケーションを格納した仮想マシンに振り分けて負荷を分散します。
詳細は以下をご覧ください。
Azure Application Gatewayのメリットと機能
Azure Application Gatewayでは、HTTPで要求したURIのパスやホストヘッダーなどの属性からルーティングできます。
たとえば、URLが/imagesの場合は画像専用の特定の仮想マシンのトラフィックのセットに、/videoの場合はビデオ専用に最適化されたトラフィックのセットに振り分けられます。このように特定の仮想マシンに振り分けるトラフィックのセットをプールと呼びます。また、このようなルーティングを、アプリケーションレイヤー (OSIレイヤー7) の負荷分散といいます。
上記を前提として、Azure Application Gatewayのメリットと機能をまとめます。
Webアプリケーションの高可用性かつスケーラブルな配信
仮想マシンやネットワークで安定したパフォーマンスを提供するAzure Load Balancerに加えて、Azure Application Gatewayでは運用している複数のアプリケーションごとにURLパスベースの負荷分散とルーティングをおこないます。複数サイトのホスティングでは、ひとつのAzure Application Gatewayで最大100 の Web サイト、40のWAF(Webアプリケーションファイアーウォール)によってスケーラブルなネットワークを構成できます。
音声や映像のようなデータは、専用のプールを作成することで、ルーティングが可能になります。高可用性かつスケーラブルなWebアプリケーションのフロントエンドをAzureで構築できることがメリットです。
Standard_v2またはWebファイアーウォールのWAF_v2 SKUでは、実現できる機能が増えました。以下に特長をまとめます。
Standard_v2、WAF_v2 SKUで実現できること
自動スケール (現在はプレビュー版) の機能を搭載しました。Webアプリケーションのトラフィックの負荷から、自動的なスケールアップ、スケールダウンが可能になります。この自動化により、プロビジョニングの際にインスタンスの数やデプロイのサイズを考慮する必要がなくなり効率的です。
さらにデプロイでは、複数の可用性ゾーンを対象にできるゾーン冗長性を備えています。障害時の迅速な復旧を実現し、ゾーンごとのプロビジョニングが不要になります。VIP (Virtual IP:仮想IP) のサポートは、静的な VIPのみです。したがって関連付けられたVIP は、Azure Application Gateway の有効期間を過ぎても変化することがありません。
Kubernetesアプリケーションとして、Azure Application Gatewayイングレスコントローラーもサポートしています。このアプリケーションを利用して、L7ロードバランサーによってソフトウェアをインターネットに公開可能です。Kubernetesクラスターを監視し、Azure Application Gatewayを継続的に更新しながらサービスをインターネットに公開します。トラフィックの増減による自動スケールにも対応します。
他のAzureの機能と統合によるパフォーマンスの発揮
Azure Application Gatewayでは以下のような他のAzureの機能と統合されています。総合的にパフォーマンスの改善を実現します。
Azure Traffic Manager
DNSロードバランサーとして、たとえば東日本リージョンと西日本リージョンなど複数のリージョンへのリダイレクト、自動フェイルオーバー、メンテナンス時にはダウンタイムなしの継続的な運用を実現します。
Azure Virtual Machines
仮想マシン(VM)においても、スケールセット、Azure App ServiceのWeb Appsを使うことによってWebアプリケーションの負荷を軽減できます。
Azure Monitor、Azure Security Center
Azureのネットワークトラフィックや稼働状況の監視とアラートを一元管理できます。ダッシュボードで視覚化することによって、アプリケーションが正常かどうかを確認することが可能です。
Azure Key Vault
Webアプリケーションの暗号化キーや秘密情報をセキュリティ保護する機能が「Azure Key Vault」です。SSL/TLS 証明書に関する処理を一元管理するとともに自動更新することができます。
Webアプリケーション ファイアーウォールによるセキュリティ保護
Webサイトの改ざんやデータの漏えいでは、不正なSQL文を入力してデータベースに攻撃を与える「SQLインジェクション」、リンクのURLに悪意のあるスクリプトを組み込む「クロスサイトスクリプティング」が代表的であり、このような攻撃はアプリケーションのコードで防御することは困難です。パッチの適用や多数のレイヤーによる監視など、厳しい保守が必要になります。
Azure Application Gatewayは、WAFを一元化することで、セキュリティの脆弱性から保護と監視を行います。複数のWebアプリケーションそれぞれにパッチを適用しているような場合と比較して、既知の脆弱性に対するプログラムを1か所に適用して侵入の脅威から保護できるため、管理者の負荷を大幅に軽減できます。
エンドツーエンドSSLなど強力なセキュリティ
また、Azureのフロントエンドからバックエンドに至るまでSSLの強力な暗号化によって、データを保護します。SSL処理専門のノードを設置(SSLオフロード)によってパフォーマンスを向上させます。
SSL/TLSのパフォーマンス向上では、通常はゲートウェイでSSLを終了し、その後トラフィックは暗号化されないままバックエンドのサーバーと通信を行います。このことによって、サーバーの暗号化と暗号化解除の間接処理で生じる時間を削減します。ただし、コンプライアンスなどの要件から、このような処理ができないWebアプリケーションもあります。そこで、Azure Application Gatewayでは、エンドツーエンドのSSL/TLS 暗号化をサポートしています。
多くのWebアプリケーションでは、HTTPをHTTPS に自動的にリダイレクトして、通信が暗号化されたパスで行われる方法がよく使われます。Azure Application Gatewayでは、リダイレクトをサポートしています。リダイレクトにより、構成の簡易化、リソースの最適化ができます。HTTPSへのリダイレクトだけでなく、ポート間、任意の外部サイトにもリダイレクトが可能です。
詳細は以下でご覧ください。
まとめ
Azure Application Gatewayは、中規模から大規模のインスタンス、自動スケールもしくはゾーンの冗長性などにおいて99.95% の稼働時間サービスのSLA(Service Level Agreement:サービス水準の合意)を保証しています。
BCP(Business Continuity Plan:事業継続計画)などの観点からも、ネットワークや仮想マシンの負荷が増大することによるビジネスの中断は大きなダメージになります。事業の信頼性を確保する上でも、負荷分散による安定したWebアプリケーションの提供は考えておかなければならない重要な課題です。