🦁

[Azure] HTTP(S) トラフィックの負荷分散サービスについて

2023/01/08に公開

学習資材

https://learn.microsoft.com/ja-jp/training/modules/load-balancing-https-traffic-azure/

Application Gateway

  • 既定の正常性プローブについて
    てっきり、Application Gatewayからpingで監視をしていると思っていた。
    どうやらそうではなく、GET要求を行うことによって、監視が実行されるようである。
    プローブで使うURLは、protocol://127.0.0.1:port/になる。(http://127.0.0.1:8080とか)

監視は、バックエンド プール内の構成済みの IP アドレスまたは FQDN に対して HTTP GET 要求を行うことで実行されます

127.0.0.1ってlocalhostで、要は自分自身を指すので、ここでいうとApplication Gatewayインスタンス自身になってしまうのでは?と思う。ここはサポートに問い合わせをしてみよう・・調べても分からなかった。
→ 色々なサイトを見て腑に落ちてきたので残す。結論から言うと、単一サイトがホストされている場合において、バックエンド1台ずつGET要求を行うことを感覚的に127.0.0.1としていると理解した。

backend_pool に指定した個々のアドレスに対して共通の Health Check Endpoint を指定する場合は、127.0.0.1 にすると良いようです。たとえば、backend_address_pool に A,B,C,D の4つのアドレスが指定されていても、host = 127.0.0.1 にしておくと、A,B,C,D それぞれ同じ path を Health Check Endpoint として使用します。
https://qiita.com/moaikids/items/26ee0db670ae9d9fa158#probe

「<プロトコル>://127.0.0.1:<ポート>/を実施しろ」という要求を各バックエンドに対して実施する感じかな。

カスタム正常性プローブでホスト名を記載するのはAppServiceでカスタムドメインを利用するとか、外部サイトへのヘルチェ、1つのVMで複数サイトが構成されているとき(要は宛先URLが別で存在する時)とか、正確性を持たせることが考えられる。
それ以外にも、ホスト名とは関係ないが、パスの指定が必要になるときや一致条件をカスタマイズする必要があるときである。

  • 書き換えポリシーについて
    URLの変換・要求/応答ヘッダーの変更・クエリ文字列パラメータの変更が可能である。
    X-Forwarded-Forとは?

Front Door

  • 正常性プローブ
    正常性プローブの応答の1つである、待ち時間の測定とは具体的にどういったものか分からなかった。
    説明を読んだ感じだと、正常性プローブのリクエスト送信~応答までの時間を監視しているのだろうか?

共通

  • リダイレクトの種類
    リダイレクトコードが、以下の通り4種類存在する。

301は恒久的なリダイレクトを表す。例えば、HTTP→HTTPSへのリダイレクトである。基本的にGETメソッドで利用することが望ましい。Postメソッドで使うと、Getに変更される可能性もあるとのこと。
302は一時的なリダイレクトを表す。例えば、サイトのメンテナンス期間など、一時的にメンテナンスページに飛ばす・期間限定のトップページを表示する場合などである。
307も一時的なリダイレクトを表す。302との違いとしては、メソッドが変更されないことを保証するのが本コードである。Post or Getのメソッドをリダイレクト先でも引き継ぎたいとき。
308も恒久的なリダイレクトを表す。301との違いとしては、メソッドが変更されないことを保証するのが本コードである。Post or Getのメソッドをリダイレクト先でも引き継ぎたいとき。
https://small-livehack.com/redirect_308/

Discussion