この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
いわさです。
以前から、App Service Environmentでは可用性ゾーン冗長がサポートされていましたが、今回非ASE環境でもサポートされるようになりました。
Azureの可用性ゾーンについては以下を参照してください。
App Serviceで利用するにあたっての仕様や制限は以下に記載されています。
気になるところをざっと挙げると
- 設定は新規App Serivceプラン作成時のみ有効化が可能。
- 対応リージョンが限られていて、東日本は対応されているが西日本は対応されていない。
- プレミアムのV2, V3が対応
- 自動でインスタンスサイズが3からになる
- ARMでのみ有効化できる
あたりでしょうか。
本日はその中でも以下について実際に試してみました。
- ポータル上はやはり設定項目がない?
- ARMデプロイ時の既定値の確認
- 西日本でのデプロイ
- App Service新規作成時に併せて作成できるApp Serviceプランはどうなっているか
ポータル上はやはり設定項目がない?
まぁ、無かったです(終わり)
ARMデプロイ時の既定値の確認
ARMテンプレートでApp ServiceプランのプロパティにてzoneRedundant
をtrue
に指定することで、ゾーン冗長化が有効となります。
今回は有効化指定、無効化指定、未設定時のデフォルトを確認しました。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"name": "iwasa-appplan-20210904-east-1",
"location": "Japan East",
"sku": {
"name": "P1v3",
"tier": "PremiumV3",
"size": "P1v3",
"family": "Pv3",
"capacity": 3
},
"kind": "app",
"properties": {
"zoneRedundant": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"name": "iwasa-appplan-20210904-east-2",
"location": "Japan East",
"sku": {
"name": "P1v3",
"tier": "PremiumV3",
"size": "P1v3",
"family": "Pv3",
"capacity": 3
},
"kind": "app",
"properties": {
"zoneRedundant": false
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2018-02-01",
"name": "iwasa-appplan-20210904-east-3",
"location": "Japan East",
"sku": {
"name": "P1v3",
"tier": "PremiumV3",
"size": "P1v3",
"family": "Pv3",
"capacity": 3
},
"kind": "app",
"properties": {}
}
],
"outputs": {}
}
iwasa.takahito@hoge azure-appservice-zoneredundant % az deployment group create --resource-group 20210904 --template-file app-service-plan-east.json
3つとも、東日本でデプロイしました。
ではそれぞれの設定結果を見ていきましょう。
有効化(指定のとおり)
無効化(指定のとおり)
未設定時は無効となる
西日本でのデプロイ
失敗するのか、成功した上で強制的に無効化になるのか気になっていたのですが、デプロイ時にエラーとなりました。
iwasa.takahito@hoge azure-appservice-zoneredundant % az deployment group create --resource-group 20210904 --template-file app-service-plan-west.json
{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"{\r\n \"Code\": \"BadRequest\",\r\n \"Message\": \"Requested features are not supported in region. Please try another region.\",\r\n \"Target\": null,\r\n \"Details\": [\r\n {\r\n \"Message\": \"Requested features are not supported in region. Please try another region.\"\r\n },\r\n {\r\n \"Code\": \"BadRequest\"\r\n },\r\n {\r\n \"ErrorEntity\": {\r\n \"ExtendedCode\": \"59911\",\r\n \"MessageTemplate\": \"Requested features are not supported in region. Please try another region.\",\r\n \"Parameters\": [],\r\n \"Code\": \"BadRequest\",\r\n \"Message\": \"Requested features are not supported in region. Please try another region.\"\r\n }\r\n }\r\n ],\r\n \"Innererror\": null\r\n}"}]}}
App Service新規作成時に併せて作成できるApp Serviceプランはどうなっているか
私はよく使うのですが、App Service作成時にSKUとサイズだけ指定してApp Serivceプランを作成するケースがあると思います。
これ、リソースグループやリージョンなどは自動で設定されるんですよね。
では、今回のゾーン冗長設定についてはどうなるでしょうか。
デプロイ前にARMテンプレート確認できるので見てみましょう。
"resources": [
{
"apiVersion": "2018-11-01",
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"location": "[parameters('location')]",
"tags": {},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
],
"properties": {
"name": "[parameters('name')]",
"siteConfig": {
"appSettings": [],
"metadata": [
{
"name": "CURRENT_STACK",
"value": "[parameters('currentStack')]"
}
],
"phpVersion": "[parameters('phpVersion')]",
"netFrameworkVersion": "[parameters('netFrameworkVersion')]",
"alwaysOn": "[parameters('alwaysOn')]"
},
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"clientAffinityEnabled": true
}
},
{
"apiVersion": "2018-11-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"kind": "",
"tags": {},
"dependsOn": [],
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSize": "[parameters('workerSize')]",
"workerSizeId": "[parameters('workerSizeId')]",
"numberOfWorkers": "[parameters('numberOfWorkers')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
}
]
指定がされていないですね。
となると先程検証したように、無効になりそうな予感がします。
ゾーン冗長は「無効」で作成されましたね。
まとめ
- 基本無効化されているので、明示的な指定が必要だと思っておけば良さそう
- 新規作成時のみ対応
- 対応リージョンの確認が必要