次の方法で共有


Azure Container Apps でホストされている Durable Task SDK アプリの自動スケールを構成する (プレビュー)

Durable Task Scheduler を使用するコンテナー アプリに自動スケールを実装できます。 自動スケーリングでは、手動による介入なしに変化する要求に適応することで、実行時間の長いワークフローの信頼性とスケーラビリティが維持されます。

トリガーされるオーケストレーション、アクティビティ、またはエンティティに応答してデプロイされるアプリケーション レプリカの範囲を設定して、自動スケールを制御します。 スケーラーは、その範囲内のコンテナー アプリ レプリカの数を動的に調整します。これにより、ソリューションはワークロードの急増に対処し、リソースの枯渇を防ぐことができます。

自動スケールは、Durable Task SDK を使用して構築され、Azure Container Apps でホストされているアプリでサポートされています。

自動スケーラーを構成する

自動スケーラーの構成は、Azure portal、Bicep テンプレート、および Azure CLI を使用して設定できます。

Azure portal のスケーラーの最小レプリカ構成と最大レプリカ構成のスクリーンショット。

Azure portal のスケーラーの Durable Task Scheduler 関連の構成のスクリーンショット。

フィールド 説明
最小レプリカ数 任意の時点でコンテナー リビジョンに許可されるレプリカの最小数。 1
最大レプリカ数 特定の時点でコンテナー リビジョンに許可されるレプリカの最大数。 10
エンドポイント スケーラーが接続する Durable Task Scheduler エンドポイント。 https://dts-ID.centralus.durabletask.io
maxConcurrentWorkItemsCount(最大同時作業項目数) オーケストレーションを実行するようにコンピューティングに指示するなど、コンピューティングにイベントとしてディスパッチされる同時実行作業項目の最大数。 1
taskhubName スケジューラに接続されているタスク ハブの名前。 taskhub-ID
作業項目タイプ ディスパッチされる作業項目の種類。 オプションには、オーケストレーション、アクティビティ、またはエンティティが含まれます。 オーケストレーション
マネージド ID スケジューラおよびタスク ハブ リソースにリンクされているユーザー割り当てマネージド ID またはシステム割り当てマネージド ID。 [ マネージド ID で認証 する] チェック ボックスがオンになっていることを確認します。 someone@example.com

サンプルを試す

Azure Container Apps での自動スケールのサンプルでは、Azure Developer CLI を使用して、.NET Durable Task SDK で構築され、Azure Container Apps でホストされているコンテナー アプリの自動スケーリングを実装します。 このサンプルでは、関数チェーン パターンを使用してオーケストレーションを紹介します。

このサンプルでは Durable Task .NET SDK を使用していますが、自動スケールは言語に依存しません。

[前提条件]

環境を設定する

  1. Azure-Samples/Durable-Task-Scheduler ディレクトリを複製します。

    git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
    
  2. Azure Developer CLI を使用して Azure で認証します。

    azd auth login
    

Azure Developer CLI を使用してソリューションをデプロイする

  1. AutoscalingInACAサンプル ディレクトリに移動します。

    cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
    
  2. リソースをプロビジョニングし、アプリケーションをデプロイします。

    azd up
    
  3. ターミナルでメッセージが表示されたら、次のパラメーターを指定します。

    パラメーター 説明
    環境名 すべての Azure リソースを保持するために作成されたリソース グループのプレフィックス。
    Azure の場所 リソースの Azure の場所。
    Azure サブスクリプション リソースの Azure サブスクリプション。

    この処理は、完了までに時間がかかる場合があります。 azd up コマンドが完了すると、CLI 出力に、デプロイの進行状況を監視するための 2 つの Azure portal リンクが表示されます。 出力には、azd up がどのように機能するかも示されています。

    • ./infra を使用して、azd provision ディレクトリ内の指定されている Bicep ファイルを使用して、必要なすべての Azure リソースを作成して構成します。 Azure Developer CLI によってプロビジョニングされると、Azure portal からこれらのリソースにアクセスできます。 Azure リソースをプロビジョニングするファイルは次のとおりです。
      • main.parameters.json
      • main.bicep
      • 機能別に整理された app リソース ディレクトリ
      • core テンプレートで使用される Bicep モジュールを含む azd リファレンス ライブラリ
    • azd deploy を使用したコードのデプロイ

    想定される出力

    Packaging services (azd package)
    
    (✓) Done: Packaging service client
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    (✓) Done: Packaging service worker
    - Image Hash: {IMAGE_HASH}
    - Target Image: {TARGET_IMAGE}
    
    
    Provisioning Azure resources (azd provision)
    Provisioning Azure resources can take some time.
    
    Subscription: SUBSCRIPTION_NAME (SUBSCRIPTION_ID)
    Location: West US 2
    
     You can view detailed progress in the Azure Portal:
     https://portal.azure.com/#view/HubsExtension/DeploymentDetailsBlade/~/overview/id/%2Fsubscriptions%SUBSCRIPTION_ID%2Fproviders%2FMicrosoft.Resources%2Fdeployments%2FCONTAINER_APP_ENVIRONMENT
    
     (✓) Done: Resource group: GENERATED_RESOURCE_GROUP (1.385s)
     (✓) Done: Virtual Network: VNET_ID (862ms)
     (✓) Done: Container Apps Environment: GENERATED_CONTAINER_APP_ENVIRONMENT (54.125s)
     (✓) Done: Container Registry: GENERATED_REGISTRY (1m27.747s)
     (✓) Done: Container App: SAMPLE_CLIENT_APP (21.39s)
     (✓) Done: Container App: SAMPLE_WORKER_APP (24.136s)   
    
    Deploying services (azd deploy)
    
     (✓) Done: Deploying service client
     - Endpoint: https://SAMPLE_CLIENT_APP.westus2.azurecontainerapps.io/
    
     (✓) Done: Deploying service worker
     - Endpoint: https://SAMPLE_WORKER_APP.westus2.azurecontainerapps.io/
    
    
    SUCCESS: Your up workflow to provision and deploy to Azure completed in 10 minutes 34 seconds.   
    

デプロイが成功したことを確認する

Azure portal で、オーケストレーションが正常に実行されていることを確認します。

  1. ターミナル出力からリソース グループ名をコピーします。

  2. Azure portal にサインインし、そのリソース グループ名を検索します。

  3. リソース グループの概要ページで、クライアント コンテナー アプリ リソースをクリックします。

  4. [ 監視>ログ ストリーム] を選択します。

  5. クライアント コンテナーが関数チェーン タスクをログに記録することを確認します。

    Azure portal でのクライアント コンテナーのログ ストリームのスクリーンショット。

  6. リソース グループ ページに戻り、 worker コンテナーを選択します。

  7. [ 監視>ログ ストリーム] を選択します。

  8. ワーカー コンテナーが関数チェーン タスクをログに記録することを確認します。

    Azure portal での worker コンテナーのログ ストリームのスクリーンショット。

カスタム スケーラーについて

このサンプルには、 azure.yaml 構成ファイルが含まれています。 azd upを実行すると、Durable Task Scheduler のワークロードに基づいて自動的にスケーリングされるコンテナー アプリ用のカスタム スケーラーなど、サンプル ソリューション全体を Azure にデプロイしました。

カスタム スケーラー:

  • タスク ハブ内の保留中のオーケストレーションの数を監視します。
  • ワークロードの増加に合わせてワーカー レプリカの数をスケールアップします。
  • 負荷が減少したときにスケールダウンします。
  • 容量を需要に合わせることにより、効率的なリソース使用率を提供します。

スケーラーが構成されていることを確認する

デプロイされたソリューションで自動スケールが正しく機能していることを確認します。

  1. Azure portal で、worker アプリに移動します。

  2. 左側のメニューで、[ アプリケーション>プロビジョニングとレプリカ] をクリックします。

  3. [ レプリカ ] タブをクリックして、アプリケーションがスケールアウトされていることを確認します。

  4. 左側のメニューで、[ アプリケーション>スケール] をクリックします。

  5. スケール名をクリックして、スケーラーの設定を表示します。

次のステップ

現在、Durable Functions for Durable Task Scheduler を使用したコンテナー アプリの自動スケールは使用できません。 それまでは、 Microsoft SQL (MSSQL) バックエンドを使用してコンテナー アプリを自動スケールしてみてください