Azure Front Door について纏めてみる

仕事で Azure Front Door を扱う事があったので、その扱い方や機能についてまとめておきたいと思います。
(今回の記事は忘備録的な位置づけです。)

#Azure Front Door とは
Microsoft の Document によると、Azure Front Door について以下の様に纏まっていました。
>Azure Front Door Service では、高可用性のために最大限のパフォーマンスと即時グローバル フェイルオーバーを最適化することで、Web トラフィックのグローバル ルーティングを定義、管理、および監視することができます。 Front Door を使用すると、グローバル (複数リージョン) のコンシューマーや企業のアプリケーションを、Azure を使用して世界中のユーザーに発信する、堅牢で高性能なパーソナライズされた最新のアプリケーション、API、およびコンテンツに変換することができます

つまり、Azure Front Door は、
・高可用性のために最大限のパフォーマンスと即時グローバル フェイルオーバーを最適化する
・Web トラフィックのグローバル ルーティングを定義、管理、および監視することができる

この二つが主な特徴。また、機能については、以下11の機能があるみたいです。簡単に...。
・アプリケーションのパフォーマンスの高速化
スプリット TCP ベースのエニーキャスト プロトコルを使用して、エンド ユーザーが最も近い Front Door POP (point of presence) にすぐに接続されるようにします

・スマート正常性プローブによるアプリケーションの可用性の向上
スマート正常性プローブを使用し、バックエンドの待機時間と可用性の両方を監視し、バックエンドがダウンしたときに即時自動フェールオーバーを実現して、重要なアプリケーションの高可用性を実現します

・URL ベースのルーティング
URL パス ベースのルーティングを使用すると、要求の URL パスに基づいてバックエンド プールにトラフィックをルーティングできます。 1 つのシナリオとして、異なる種類のコンテンツの要求を、異なるバックエンド プールにルーティングします。

・複数サイトのホスティング
Front Door 構成に複数の Web サイトを構成することができます

・セッション アフィニティ
同じアプリケーション バックエンド上にユーザー セッションを保持する

・Secure Sockets Layer (SSL) ターミネーション
アプリケーション バックエンドとの長距離接続を介して確立するのではなく、Front Door 環境との SSL 接続を設定することができます

・カスタム ドメインと証明書の管理
カスタム ドメイン名でも HTTPS をサポート

・アプリケーション層のセキュリティ
アクセス制御のためのカスタムの Web アプリケーション ファイアウォール (WAF) 規則を作成して、クライアント IP アドレス、国番号、および http パラメーターに基づいて HTTP/HTTPS ワークロードを不正使用から保護することができます。 さらに、Front Door では、悪意のあるボット トラフィックと戦うためにレート制限ルールを作成することもできます。

・URL リダイレクト
セキュリティで保護された通信のみをサポートすることが業界で強力に推進されているため、Web アプリケーションは HTTP トラフィックを自動的に HTTPS にリダイレクトすることが求められています。

・URL 書き換え
バックエンドに転送する要求の作成時に使用する、省略可能なカスタム転送パスの構成を許可することで、URL 書き換えがサポートされています。

・プロトコルのサポート - IPv6 および HTTP/2 トラフィック
エンド ツー エンドの IPv6 接続と、HTTP/2 プロトコルも、ネイティブでサポートします

#Front Door を作成する
WebApp で Web Site をつくっみて、そのあとでリソースの作成から、Front Door を作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/40f4a76d-f196-86b1-f00b-f284026f800e.png)

名前を入力、リソースグループの選択をすると、「構成」で Front Door のルールを決める必要がある。
ここでは前回作成したおさかな判定アプリをBackend pool に登録し、Frontend hosts で定めたアドレスにアクセスすることで、FishRecognizer へルーティングされるよな構成にした。※App Services のリソースグループは同じにしておかないとBackend pool にて選択することができないので注意。(そもそも違うリソースグループで作成することはないかと思いますが。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/8274998f-c045-e378-0d1e-2b146128d0f0.png)

#Front Door でカスタムドメインを設定する
次にカスタムドメインを Front Door で使用する方法を整理してみる。
まずは　Azure App Domain で、任意のカスタムドメイン名を購入する。
そのあとで、Azure Front door から カスタムドメイン名を登録！で良いと思ったのだけど、その前に DNS Provider の方で Front Door でカスタムドメイン名を使うための Record Set を登録する必要がある。
設定方法は 以下の Microsoft の Document がよくまとまっていた！


Front Door にカスタム ドメインを追加する
https://docs.microsoft.com/ja-jp/azure/frontdoor/front-door-custom-domain

この Documents 通りで難なくカスタムドメインを設定することができた。
実際に 設定できたかどうかは以下の手順で試すと良いらしい。

>カスタム ドメインを確認する
カスタム ドメインの登録を完了した後は、カスタム ドメインが既定の Front Door フロントエンド ホストを参照することを確認してください。
ブラウザーで、カスタム ドメインを使用してファイルのアドレスに移動します。 たとえば、カスタム ドメインが robotics.contoso.com の場合、キャッシュされたファイルの URL は http://robotics.contoso.com/my-public-container/my-file.jpg のようになります。 <Front Door host>.azurefd.net で Front Door に直接アクセスするときと同じ結果になることを確認します。

#URL 書き換え
(メモのため Documents から参照)
Azure Front Door Service では、バックエンドに転送する要求の作成時に使用する、省略可能なカスタム転送パスの構成を許可することで、URL 書き換えがサポートされています。 既定では、カスタム転送パスが指定されていない場合、Front Door により、転送された要求で使用される URL に受信 URL パスがコピーされます。 転送された要求で使用されるホスト ヘッダーは、選択されたバックエンド用に構成されています。 その機能と構成方法については、「バックエンド ホスト ヘッダー」をご覧ください。
カスタム転送パスを使用した URL 書き換えの強力な部分では、転送されたパスに、ワイルドカード パスと一致する受信パスの任意の部分をコピーします (これらのパス セグメントは、次の例の緑色のセグメントです)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/c4fd5598-c39b-5566-9037-23a2ddcbe3f2.png)

URL 書き換え (カスタム転送パス)
https://docs.microsoft.com/ja-jp/azure/frontdoor/front-door-url-rewrite

#Azure Front Door の監視
Azure Front Door で監視できるのは2つ！！
・メトリック
現在、Azure Front Door にはパフォーマンス カウンターを表示するメトリックが 7 つあります。
・ログ
アクティビティ ログや診断ログでは、リソースのパフォーマンス、アクセス、その他のデータを監視目的で保存または使用することができます。

Azure Front Door Service でのメトリックとログの監視
https://docs.microsoft.com/ja-jp/azure/frontdoor/front-door-diagnostics