AppServiceでの構築時に不明なリクエストで悩まされた話

ここ最近、案件でCloudServices(Classic)からAppServiceへの移行を行っています。
その時に出くわした失敗談(?)を1つ。
思い返せば恥ずかしい内容ではありますが、いつかこの記事を見直したときにこういうこともあったなという思い出として書いておこうと思います。

さて、最初に書いた通り、CloudServices(Classic)の2024年の廃止に向けてAppServiceへの移行を行っているのですが、プログラムの移行というか、AppServiceへの載せ替え自体は少なくてもこの案件については特に問題無く終わりました。
テストはまだこれからですので、まだ絶対大丈夫だったとは言えませんが、すくなくても軽く触ったところでは特に問題無さそうです。

あー、めでたしめでたし、ではテストへ。。と思ったのですが、Application Insightsを見ると何故か5分おきにエラーが発生していることに気付きました。
詳しく内容を見ると、原因としてはそれほど難しいものではなく、GET Login/Indexが叩かれているのですが、それがHTTPSではなくHTTPで叩かれているがためにエラーで返しているというものでした。

原因はわかったのですが、そのリクエストがどこから発生したのか、それが全くわからなかったのです。
まずは既存のバッチ等を疑ってみたのですが、新しく作られたAppServiceのURLに対して叩かれているのでそれを既存のバッチ等が知っているはずがありません。

次に可能性があるのはこのプロジェクトで既に構築済みのAzure FrontDoorでした。
FrontDoorを触ったことがある方であれば正常性プローブをご存じかと思います。このプロジェクトでも正常性プローブを使用してまして、定期的に特定のパスに対してリクエストを行っています。
しかしながら、FrontDoorを見ても、確かに正常性プローブの設定は行っているものの、今回のGET Login/Indexは見当たりませんでした。
念のため、FrontDoorの設定からこのAppServiceを外してみたのですが、それでもエラーは発生し続けます。。

そして、やっとのことでその原因がわかりました。AppServiceの「構成」を開き、上のタブの「全般設定」を開くと以下のような画面になります。
そしてこの赤い枠で囲った部分、「常時接続」が原因でした。

上の画面の注意書きとして書かれている内容そのままなのですが、AppServiceは常時接続でPINGを叩かれることでアイドル状態になるのを防ぐことができます。
これによって5分おきにエラーが発生していたわけです。
私の携わるこのWebアプリではLogin/Indexは存在しているのであとはHTTPSで送られさえすれば解決するのですが、この常時接続はHTTPプロトコルしかありません。
しかしながら、これはこれで便利な機能でありますし、AppServiceがアイドル状態になるのは防ぎたい。
そんなあなたに朗報です。
先に書いたFrontDoorの正常性プローブ、これによってアイドル状態になるのを防ぐことができますので、常時接続は遠慮なくオフにすることができ、そしてめでたく5分おきに発生していたエラーも無くなりました。

いやー。。自らの知識の浅さをさらけ出している感満載ですが、まあ、これも勉強です。
とりあえず書き残しておきたいと思います。

いいなと思ったら応援しよう!