Durable Task Scheduler を使用するコンテナー アプリに自動スケールを実装できます。 自動スケーリングでは、手動による介入なしに変化する要求に適応することで、実行時間の長いワークフローの信頼性とスケーラビリティが維持されます。
トリガーされるオーケストレーション、アクティビティ、またはエンティティに応答してデプロイされるアプリケーション レプリカの範囲を設定して、自動スケールを制御します。 スケーラーは、その範囲内のコンテナー アプリ レプリカの数を動的に調整します。これにより、ソリューションはワークロードの急増に対処し、リソースの枯渇を防ぐことができます。
注
自動スケールは、Durable Task SDK を使用して構築され、Azure Container Apps でホストされているアプリでサポートされています。
自動スケーラーを構成する
自動スケーラーの構成は、Azure portal、Bicep テンプレート、および Azure CLI を使用して設定できます。
フィールド | 説明 | 例 |
---|---|---|
最小レプリカ数 | 任意の時点でコンテナー リビジョンに許可されるレプリカの最小数。 | 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 を使用していますが、自動スケールは言語に依存しません。
[前提条件]
- .NET 8 SDK 以降
- Docker (イメージのビルド用)
- Azure Developer CLI
環境を設定する
Azure-Samples/Durable-Task-Scheduler
ディレクトリを複製します。git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git
Azure Developer CLI を使用して Azure で認証します。
azd auth login
Azure Developer CLI を使用してソリューションをデプロイする
AutoscalingInACA
サンプル ディレクトリに移動します。cd /path/to/Durable-Task-Scheduler/samples/scenarios/AutoscalingInACA
リソースをプロビジョニングし、アプリケーションをデプロイします。
azd up
ターミナルでメッセージが表示されたら、次のパラメーターを指定します。
パラメーター 説明 環境名 すべての 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 で、オーケストレーションが正常に実行されていることを確認します。
ターミナル出力からリソース グループ名をコピーします。
Azure portal にサインインし、そのリソース グループ名を検索します。
リソース グループの概要ページで、クライアント コンテナー アプリ リソースをクリックします。
[ 監視>ログ ストリーム] を選択します。
クライアント コンテナーが関数チェーン タスクをログに記録することを確認します。
リソース グループ ページに戻り、
worker
コンテナーを選択します。[ 監視>ログ ストリーム] を選択します。
ワーカー コンテナーが関数チェーン タスクをログに記録することを確認します。
カスタム スケーラーについて
このサンプルには、 azure.yaml
構成ファイルが含まれています。
azd up
を実行すると、Durable Task Scheduler のワークロードに基づいて自動的にスケーリングされるコンテナー アプリ用のカスタム スケーラーなど、サンプル ソリューション全体を Azure にデプロイしました。
カスタム スケーラー:
- タスク ハブ内の保留中のオーケストレーションの数を監視します。
- ワークロードの増加に合わせてワーカー レプリカの数をスケールアップします。
- 負荷が減少したときにスケールダウンします。
- 容量を需要に合わせることにより、効率的なリソース使用率を提供します。
スケーラーが構成されていることを確認する
デプロイされたソリューションで自動スケールが正しく機能していることを確認します。
Azure portal で、worker アプリに移動します。
左側のメニューで、[ アプリケーション>プロビジョニングとレプリカ] をクリックします。
[ レプリカ ] タブをクリックして、アプリケーションがスケールアウトされていることを確認します。
左側のメニューで、[ アプリケーション>スケール] をクリックします。
スケール名をクリックして、スケーラーの設定を表示します。
次のステップ
現在、Durable Functions for Durable Task Scheduler を使用したコンテナー アプリの自動スケールは使用できません。 それまでは、 Microsoft SQL (MSSQL) バックエンドを使用してコンテナー アプリを自動スケールしてみてください。