Azure LBを利用する際に知っておきたい『Azure 正常性プローブ』とは?

    サーバーに負荷が掛かりすぎる場面が生じても、システムの可用性を維持するために欠かせない存在がロードバランサー(負荷分散)です。Microsoft Azure(以下、Azure)では複数の負荷分散サービスが提供されています。今回の記事では、その中でもL4(Layer4)ロードバランサーである「Azure Load Balancer」の「正常性プローブ」について解説します。

    Azureの正常性プローブとは何か?

    Azureとは?

    Azure(アジュール)とは、Microsoftが開発・提供しているクラウドコンピューティングサービスです。物理的なPC端末やサーバーなどを手元に用意しなくても、オンラインで契約するだけで、すぐにAzureが提供するクラウド上の仮想サーバーを導入することができるので、利便性が高いです。Azureは、OfficeシリーズやMicrosoft 365など、Microsoftが提供しており、世界的に普及している独自ソフトウェアとの親和性が高く、簡単に連携できるメリットもあります。よって、オンプレミス環境との連携もしやすく、大企業や官公庁などでも多く利用されています。同様のクラウドサービスであるAmazon Web Service(AWS)や、Google Cloud Platform(GCP)に並び、世界中で多くのシェアを誇っています。

     

    Azure Load Balancerとは?

    Azure Load Balancerは、Azureで提供されている負荷分散サービスのひとつで、L4で動作する負荷分散機能が含まれたロードバランサーのサービスです。Azureのクラウドシステムに過重な負荷が掛からないよう、適切に負荷分散する機能です。複数のサーバーを用意し、負荷分散させることによって、1つのサーバーあたりに掛かるアクセス負担を軽減でき、システムダウンの発生を防げます。そうしてシステムの高い可用性(HA:High Availability)を維持することが可能になるのです。

    Azure Load Balancer には、「パブリックロードバランサー」 と「プライベート(内部)ロードバランサー」があります。パブリックロードバランサーは、インターネットのトラフィックを仮想マシンに負荷分散する目的で使用されます。プライベートロードバランサーは、Azure 内部のネットワークでプライベート IP アドレスだけで構成された仮想マシンへの負荷分散を行う目的で使用します。

     

    Azure 正常性プローブとは?

    「プローブ(probe)」とは、「探査」を意味する用語であり、Azure 正常性プローブとは、負荷分散リソースの正常性を監視するための手法です。

    Azureのようなクラウド環境では、仮想マシン(インスタンス)を構築することができます。しかし、サーバーに負荷が掛かることで、一部の仮想マシンに異常が生じることがあります。そこで、異常が生じた仮想マシンを適切に検出し、新しい接続の送信を停止することで、Azure Load Balancerの負荷分散を機能させるために必要な仕組みとなります。

     

    Azure 正常性プローブの役割と種類

    Azure 正常性プローブの役割

    Azure 正常性プローブを設定することで、異常が生じた仮想マシンへの新しい接続の送信を停止します。正常な仮想マシンにのみ接続の送信を行うことで、システムの高い可用性(HA:High Availability)を維持することが可能になります。

    Azure 正常性プローブの種類

    Azure 正常性プローブには、TCP、HTTP、HTTPSの3つのプロトコルがあります。

    TCPプローブは、通信相手の応答があってはじめて通信を開始するコネクション型プロトコル(TCP)での正常性プローブです。つまり、データ転送を行う前にコネクションの確立を実施するのが特徴です。定義済みのポートに3ウェイオープンTCPハンドシェイクを実行することで、接続を開始します。3ウェイハンドシェイクとは、3回(1往復半)のやりとりを経て接続することです。たとえば、ホストAからホストBに「コネクション確立の要求」を行い、ホストBがホストAへ「コネクション要求への応答・コネクション確立の要求」を行います。そして、AからBへの「コネクション要求への応答」を改めて行うことで通信が開始されます。そして、4ウェイクローズTCPハンドシェイクによって接続が終了します。つまり、接続終了時には4回(2往復)の同様のやりとりがなされるのです。

    Azure Load BalancerにおいてTCPプローブの最小間隔は5秒間で、最大は120秒間となっています。この120秒間にインスタンス(仮想マシン)でコネクション要求に対する応答が全くない場合、TCPプローブは失敗となります。また、TCPプローブがインスタンスから「TCPリセット」を受信した場合もTCPプローブ失敗となります。正常性プローブが失敗した場合、Azure Load Balancer は、それぞれの異常なインスタンスへの新しい接続の送信を停止します。

    Azure Load BalancerにおいてHTTP/HTTPSプローブの最小間隔は5秒間、最大は120秒間であり、正常性プローブによって15秒ごとに接続試行されます。プローブのエンドポイントが、200 以外の HTTP 応答コード (403など) を返す場合は正常性プローブは失敗します。他にも、プローブのエンドポイントが TCP リセットによって接続を閉じた場合も、正常性プローブは失敗します。

     

    さらにシステムの可用性を高める、HAクラスター構成

    ICT用語のクラスター(cluster)とは、複数のコンピュータを束ねて、あたかも1台のコンピュータのように扱うシステムの総称です。そして、Azure Load Balancerのような負荷分散のみによる可用性維持の方法に加え、さらにシステムの可用性を高める方法としてHAクラスター(High Availability cluster)構成があります。「アクティブサーバー」と「スタンバイサーバー」で構成され、障害が発生した場合、スタンバイサーバーに処理を引き継ぐことができます。そのため、障害が発生したとしても、システムを継続して稼働できるのです。

    >>HAクラスターについて詳しく知る

     

    まとめ

    この記事では負荷分散システムに欠かせない正常性プローブについての解説に加え、システムダウンのリスクを最小限に抑え、システムの可用性を維持する仕組みをお伝えしてきました。突然のシステムダウンによるビジネス損失を防ぐために、システムに求められる可用性レベルに合った適切な障害対策を行いましょう。

    関連記事

    知っておきたい!Azure 共有ディスクとは?

    LifeKeeper for LinuxでAzure 共有ディスクによるHAクラスター構成を組んでみた

    AzureのSLAと、可用性を高める方法とは?