トラブル発生時にAzure Web Appsを自動的に復旧させる:Tech TIPS
Webサーバでは何らかのトラブルによってサーバエラーが繰り返し発生して、サービス提供が続けられなくなることがある。Azure Web Appsの場合、自動的にワーカープロセスをリサイクル(再起動)することで、その復旧を図ることができる。
対象サービス:Microsoft Azure、Web Apps(Windows版)
Webサーバの管理者であれば、Webサイトに何らかのトラブルが発生したとき、取りあえずWebサーバまたはワーカープロセスを再起動したら解消した、という経験をしたことがあるだろう。この再起動を自動で行うことができれば、管理者の手間は大幅に軽減されるはずだ。
Azure Web Appsには一定の「条件」を満たしたときに自動でワーカープロセスをリサイクル(再起動)させる「自動復旧(Auto healing)」という機能がある。条件としては、リクエストが大量に受信されたり、サーバエラーが頻発したり、メモリ消費量が増えたり、といった設定ができる。
Web Appsの自動復旧の設定ページを開く
Web Appsの自動復旧機能は、Azureポータルとは別の「Azure App Service Support」というWeb管理画面で設定できる。ただし、このページ自体は執筆時点でまだプレビューであることに留意していただきたい。
Azure App Service Supportページを開く手順は以下の通りだ。
AzureポータルのWeb Apps設定ブレードから自動復旧の設定画面を呼び出す
(1)Azureポータルで、対象のWeb Appsの設定ブレードを開く。
(2)[問題の診断と解決]を選ぶ。
(3)右ペインを下にスクロールして、「Tools」のリンク一覧から[Mitigate]をクリックする。
ちなみにAzure App Service Supportページでは、自動復旧の他にもさまざまな設定や分析が可能だ。
Web Appsの自動復旧を設定する
本稿では例として、WebアプリがHTTPステータスコード500.0(内部サーバエラー)を30秒間で3回返したら自動でリサイクルするように設定してみる。
Web Appsの自動復旧を設定する(1/5)
(1)Azureポータルとは別のタブ/ウィンドウに自動復旧の設定画面が表示される。
(2)最初にこのAzure Active Directory(Azure AD)の選択メニューで、対象のWeb Appsとひも付いているAzure ADを選ぶ。
(3)次に[Select Web App]をクリックして、一覧から対象のWeb Appsを選ぶ。
(4)[Mitigate](=緩和、軽減の意)をクリックする。
(5)[Autoheal]スライダーをオンにする。
(6)短時間で大量のリクエスト受信を自動復旧の起点とするには、[Max Requests]で設定する。
(7)特定のHTTPステータスコードの発生を起点とするには、[Status Code]で設定する。以下ではこれを例に挙げる。
(8)リクエストに対する応答の遅延を起点とするには、[Slow Requests]で設定する。
(9)メモリ消費量の増大を起点とするには、[Memory Private Set]で設定する。
(10)(6)〜(9)から選択した機能(ここでは(7))に対して、新たな条件(Rule=規則)を設定するには[Add new rule]ボタンをクリックする。
Web Appsの自動復旧を設定する(2/5)
HTTPステータスコードによる自動回復の規則を設定しているところ。(12)と一致するHTTPステータスコードが(13)の時間内に(11)の回数以上発生したら、後述の[Action]の内容が実行される。(12)に指定すべき値は、対象のWeb Appsサイトのアクセスログで確認しよう。設定し終わったら(14)の[Add]ボタンをクリックする。
Web Appsの自動復旧を設定する(3/5)
規則を追加した直後の画面。
(15)さらに規則を追加するには[Add new rule]ボタンをクリックして設定を繰り返す。規則が複数の場合は、どれか1つでも規則に合致したら後述の[Action]が実行される。
(16)[Action]をクリックして、規則に合致したときに実行させる内容を指定する。
Web Appsの自動復旧を設定する(4/5)
これはActionタブの設定画面。赤いアスタリスクは変更済みで未保存の設定項目を表している。
(17)規則に一致してから何秒後に(18)を実行させるか、そのタイムラグを指定する。
(18)「Recycle」はワーカープロセスのリサイクル、「Log Event」はイベントの記録、そして「Custom Action」は何らかの実行ファイルの起動をそれぞれ表している(D:ドライブなどインスタンス上のドライブに保存された実行ファイルが対象)。ここでは「Recycle」を選ぶ。
(19)全ての設定が完了したら、最後に[Update]ボタンをクリックする。
以上で設定は完了だ。
自動復旧によるリサイクルが生じると、Web Appsのイベントログ(FTPサイトの/LogFiles/eventlog.xmlで参照可能)には、次のようなイベントが記録される。
<Event>
<System>
<Provider Name="W3SVC-WP"/>
<EventID>2299</EventID>
<Level>3</Level>
<Task>0</Task>
<Keywords>Keywords</Keywords>
<TimeCreated SystemTime="2017-06-14T04:20:13Z"/>
<EventRecordID>963930484</EventRecordID>
<Channel>Application</Channel>
<Computer>RD**********DD</Computer>
<Security/>
</System>
<EventData>
<Data>Worker Process requested recycle due to 'Status Code' limit.</Data>
</EventData>
</Event>
Web Appsの自動復旧を無効化する
いったん設定した自動復旧を無効化するには、前述のWeb管理画面で[Autoheal]スライダーをオフにするか、あるいは該当規則の枠の右上にある[×]アイコンをクリックして規則を削除する。
■関連リンク
- Windows Azure Web サイトの自動復旧(マイクロソフト Azure Japan Teamブログ)
- Azure App Service の Web アプリ用 Support Site Extension の追加更新(マイクロソフト Azure Japan Teamブログ)
Copyright© Digital Advantage Corp. All Rights Reserved.