みなさん、こんにちは。サイオステクノロジー武井です。
数ある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に近づいてきた感があります。可用性ゾーン対応、どんどん有効にしていきたいですね。


