みなさん、こんにちは。サイオステクノロジー武井です。
数あるAzureサービス中でも、ワタクシの最も推しなApp Serviceがなんと可用性ゾーンに対応したとのことです。App Service Environment(Isolatedのプラン)はもともと可用性ゾーンに対応していましたが、普通(?)のApp Serviceもいよいよです。
https://azure.github.io/AppService/2021/08/25/App-service-support-for-availability-zones.html
特徴
先のURLから抜粋したものですが、App Serviceの可用性ゾーンには以下の特徴があります。
- WindowsとLinuxの両方に対応
- Premium v2もしくはPremium v3のどちらかのプランで利用可能
- 最低3インスタンス必要
- 可用性ゾーンは新しいAppServiceプランを作成したときだけ有効(既存のAppServiceプランを可用性ゾーン対応にはできない)
- 今のところARMテンプレートからのみしか有効にできない
早速試してみた
以下のURLではApp ServiceをさくっとARMテンプレートから作れるサンプルがあります。
https://docs.microsoft.com/ja-jp/azure/app-service/quickstart-arm-template?pivots=platform-linux
これをベースにちょっとやってみましょう。
可用性ゾーンを有効にするには、以下のようにcapacityのフィールドで3インスタンス以上にして、zoneRedundantのフィールドでtrueとして可用性ゾーンを有効にします。
"resources": [ { "type": "Microsoft.Web/serverfarms", "apiVersion": "2018-02-01", "name": "your-appserviceplan-name-here", "location": "West US 3", "sku": { "name": "P1v3", "tier": "PremiumV3", "size": "P1v3", "family": "Pv3", "capacity": 3 }, "kind": "app", "properties": { "zoneRedundant": true } } ]
ということで公式のARMテンプレートをもとに以下の変更を加えました。
$ diff -u appservice.yml.org appservice.yml --- appservice.yml.org 2021-08-26 21:09:50.000000000 +0900 +++ appservice.yml 2021-08-26 21:12:00.000000000 +0900 @@ -49,11 +49,13 @@ "name": "[variables('appServicePlanPortalName')]", "location": "[parameters('location')]", "sku": { - "name": "[parameters('sku')]" + "name": "[parameters('sku')]", + "capacity": 3 }, "kind": "linux", "properties": { - "reserved": true + "reserved": true, + "zoneRedundant": true } }, {
デプロイしてみます。
$ az group create --name myResourceGroup --location "japaneast" $ az deployment group create --resource-group myResourceGroup --parameters webAppName="" linuxFxVersion="PHP|8.0" --template-file appservice.yml
Azureポータルから確かめてみると、たしかにゾーン冗長が有効になっています。ええ感じ。
まとめ
というかんじで段々App ServiceがApp Service Environmentに近づいてきた感があります。可用性ゾーン対応、どんどん有効にしていきたいですね。