App Service は Availability Zones(可用性ゾーン)をサポートします

パブリックマルチテナントアプリサービスのアベイラビリティーゾーン(AZ)サポートが利用可能になりました。App Service環境(ASE)のAZサポートも利用できます。AppService環境のアベイラビリティーゾーンのサポートを参照してください

Availability Zonesの概要

アベイラビリティゾーンは、データセンターの障害からアプリケーションとデータを保護し、高可用性の提供です。アベイラビリティーゾーンは、Azureリージョン内の一意の物理的な場所です。各ゾーンは、独立した電源、冷却、ネットワークを備えた1つ以上のデータセンターで構成されています。復元力を確保するために、有効なすべてのリージョンに少なくとも3つの個別のゾーンがあります。コンピューティング、ストレージ、ネットワーキング、およびデータリソースをゾーン内に配置し、他のゾーンで複製することにより、アプリケーションアーキテクチャに高可用性を構築します。アベイラビリティーゾーンの詳細については、こちらをお読みください

要件

ゾーン冗長性とも呼ばれるAZサポートは、App Service Plan(ASP)のプロパティです。ゾーンの冗長性を有効にするための現在の要件/制限は次のとおりです。

  • WindowsとLinuxの両方がサポートされています
  • Premiumv2またはPremiumv3アプリサービスプランのいずれかが必要です
  • 最小インスタンス数3
    • 3未満のインスタンス数を指定した場合、プラットフォームはこの最小数をバックグラウンドで適用します。これは、ゾーンの冗長性が有効になっている場合、プラットフォームがこれらのVMを3つのゾーンに自動的に分散するためです。
  • 次のいずれかの地域で有効にできます。
    • 米国西部2
    • 米国西部3
    • 米国中央部
    • 米国東部
    • 米国東部2
    • カナダ中央部
    • ブラジル南
    • 北ヨーロッパ
    • 西ヨーロッパ
    • ドイツ西中部
    • フランス中央
    • 英国南部
    • 日本東日本
    • 東南アジア
    • オーストラリア東部
  • ゾーンの冗長性は、新しいAppServiceプランを 作成するときにのみ指定できます
    • 現在、既存のアプリサービスプランを変換することはできません。ゾーンの冗長性をサポートする新しいAppService Planを作成する方法の詳細については、次の箇条書きを参照してください。
  • AZは、AppServiceフットプリントの新しい部分でのみサポートされます
    • 現在、Pv3で実行している場合は、すでにAZをサポートするフットプリントを使用しており、必要なのは新しいアプリサービスプランを作成することだけです。
    • Pv3またはAZをサポートするスケールユニットを使用していない場合、サポートされていない地域にいる場合、または不明な場合は、以下の手順に従ってください。
      • サポートされているリージョンに新しいリソースグループを作成します
      • 新しいリソースグループを使用して、選択したリージョンで新しいアプリサービスプラン(およびアプリ)を作成します
  • ARMテンプレートを使用して作成する必要があります

ゾーン冗長アプリサービスをデプロイする方法

現在、ゾーン冗長App Serviceを作成するには、ARMテンプレートを使用する必要がありますARMテンプレートを介して作成されると、App Service Planは、AzureポータルおよびCLIツールを介して表示および操作できます。ARMテンプレートは、App ServicePlanの最初の作成にのみ必要です。

ゾーン冗長AppServiceを指定するためにARMテンプレートで必要な唯一の変更は、Microsoft.Web / serverfarmsリソースの新しいzoneRedundantプロパティ(必須)とオプションでApp Service Planインスタンス数(つまり容量です。容量を指定しない場合、プラットフォームのデフォルトは3です。zoneRedundantプロパティをtrueに設定し容量を設定する必要があります。 ワークロード要件に基づいて設定する必要がありますが、3以上です。適切な容量の選択は、多くの要因と高可用性/フォールトトレランス戦略によって異なりますが、経験則として、アプリケーションに十分なインスタンスを確保することをお勧めします。インスタンスの1つのゾーンを失うと、予想される負荷を処理するのに十分な容量が残ります。

ヒント インスタンスの容量を決定するには、次の計算を使用できます。

プラットフォームはVMを3つのゾーンに分散し、少なくとも1つのゾーンの障害を考慮する必要があるため、ピークワークロードインスタンス数にゾーン/(ゾーン-1)または3/2の係数を掛けます。たとえば、通常のピークワークロードに4つのインスタンスが必要な場合は、6つのインスタンスをプロビジョニングする必要があります:(2/3 * 6インスタンス)= 4インスタンス。

ゾーンがダウンした場合、App Serviceプラットフォームは失われたインスタンスを検出し、失われたインスタンスを置き換える新しいインスタンスを自動的に見つけようとします。自動スケールも構成されていて、さらにインスタンスが必要であると判断した場合、自動スケールはApp Serviceにインスタンスを追加する要求も発行します(自動スケールの動作はApp Serviceプラットフォームの動作とは無関係です)。失われたインスタンスの埋め戻しはベストエフォートベースで行われるため、ゾーンダウンシナリオでの追加インスタンスの要求が成功するという保証はないことに注意することが重要です。推奨される解決策は、この記事で前述したように、ゾーンの損失を考慮してAppServiceプランをプロビジョニングすることです。

以下のARMテンプレートスニペットは、新しいzoneRedundantプロパティと容量の仕様を示しています。

"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テンプレートをデプロイする方法の詳細については、このドキュメントを参照してくださいApp Service ARMクイックスタートについては、このGitHubリポジトリにアクセスください