Azure App ServiceのプランをPremium V2に上げる

2020年4月14日

はじめに

このKTKR雑記は2019年7月にオープンしたのですが、その当時はそれほど(というか全く)アクセス数がなかったので、App Service PlanはB1で運営していました。

最近はAzureの記事もそうですが、ニンテンドースイッチの記事も比較的Page Viewが伸びてきて、このままではB1(ACU 100、1.7GB Memory)では足りなくなりそうだと思っていました。

いつかはPremium V2に上げないと?と思っていたのですが、なんとAzureポータルでスケールアップを見ると、Premium V2がグレーアウトしているではありませんか!

本記事では、実際に本サイトをPremium V2にスケールアップするためにApp Service Planの変更(コンテンツ移動)を行った時の操作手順を記載しています。

どうしてこういう事が起こるのか

Azure App Serviceは初回デプロイ時に指定した価格レベルのインスタンスが利用できるグループに配置されます。

最初から素直に「あまり使われないと思うし、でもカスタムドメインは使いたいからB1でいいや」というお気持ちでデプロイすると、稀に運悪く古めのインスタンスがあるグループにApp Service Planが配置されてしまいます。

この場合には、新しいリソースグループ上に新しくApp Service PlanをPremium V2で作成して、コンテンツデータを移行してあげる必要があります。

サポートされてないリソース グループとリージョンの組み合わせからスケール アップする

移行の方式

移行の方式には以下の3点があるかなと思います。

  • 新たなApp Service(V2)にコンテンツやアプリケーション設定、カスタムドメイン、SSL証明書など手動で移行する
  • App Serviceのバックアップを取って、新たなApp Service(V2)上でリストアする
  • App Serviceの「複製」機能を使ってコンテンツとアプリケーション設定を複製する

App Service上のストレージに何もデータが入っていなければ、アプリケーションを再デプロイすればいいのだと思いますが、このサイトはWordPressで動作しており、おもいっきり画像データなどがApp Service上のストレージに保存されています。

今回は3番目の複製機能を使って移行を行ってみます。

手順

App Serviceの複製機能は複製元のApp Serviceから、複製先のApp Service Planを選択して、新しいApp Serviceを作成してアプリケーション(及びデータ)と、アプリケーション設定を複製してくれます。

App Service Planの作成

従来と同じリソースグループには仕様上作成できないので、新しくリソースグループを作り、その中にPremium V2のApp Service Planを作成します(Web Appsの作成ではなく、App Service Planだけを作成します)

さくっと出来ました。

既存のApp Service Planの確認

App Serviceの複製機能はStandard以上の価格レベルで対応です。私も最初はB1で動かしていたので、これはまずはS1に変更しました。

複製の実行

既存のApp Serviceのメニューから「アプリの複製」を選び、入力項目としていは先に作成したApp Service Plan(V2)を選択しつつも、新しいアプリ名(xxxx.azurewebsites.netのxxxx部分)を入力し、最後に実行します。

コンテンツのサイズにもよりますが、5分ほどで新しくApp ServiceがPremium V2のApp Service Plan上で立ち上がりました。

複製後の確認

アプリケーション設定と、接続文字列は今までWordPressの動作に必要なものが、ちゃんと複製されていました。

wwwroot配下についても、一応なんとなく全部コピーされているっぽい。

カスタムDNS,SSL証明書

SSL(TLS)証明書は複製してくれないので、再度自分のpfxファイルをアップロードします。

カスタムドメインも複製してくれないので、私の場合はwww.nya-n.netとzakki.nya-n.netを追加します。
ドメインの所有者確認については、既に確認済みとなっていたため事前にDNSレコードの追加変更を行わなくても追加ができました。

最後にSSLバインディングの追加をしたら完了です。

ばっちりです。最後に新しいApp ServiceのIPアドレスを控えておきます。

DNSレコードの更新

うっかりTTLが3600秒(1時間)のまま移行作業を開始してしまいましたが、とりあえずwww, zakkiのAレコードを新しいApp ServiceのIPアドレスに変更します。

つまり、1時間くらいは利用者からは新・旧両方のサイトにアクセスが来るということなので、その間はWordPressの記事投稿とか余計なことはせずに、しばらく待機します。

本来は、こういった移行作業の前にはDNSレコードのTTLをもっと短い値にした上で作業を行います。

移行後確認

古いApp Serviceを停止します。

通常のブラウザでカスタムドメイン名でアクセスして、表示されることを確認します。
つまり、App Service Plan(Premium)上のApp Service(WordPress)にアクセスできているということですね。

App Serviceの概要にあるメトリックのグラフでも、ちゃんとリクエストが処理されているっぽい事がわかりました。

古いApp Service, App Service Planの削除

しばらく(数日?)新環境で運用して、特に不具合が無さそうでしたら、古いApp ServiceとApp Service Planは削除します。

App Serviceを停止しても課金は続くのでご注意を。

おわりに

今回はWordPressの移行ではなく、App Service PlanのPremium V2移行に関するお話であったため、WordPressが利用しているAzure Database for MySQLのネットワーク設定の変更等には触れていません。
もし、MySQLのFirewall設定で送信元IPアドレスを制限している場合は、App Serviceが変更になっているので、新しいIPアドレスを接続許可に追加するなども実施してくださいね。