次の方法で共有


Container Apps での Azure Functions KEDA スケーリング マッピング

Azure Container Apps に Azure Functions をデプロイすると、プラットフォームによって Functions トリガー パラメーターが KEDA スケーリング構成に自動的に変換されます。 この変換により、さまざまなイベント ソースからの受信ワークロードに基づいて Functions が適切にスケーリングされます。

スケーリング マッピングのしくみ

Container Apps 上の Azure Functions では、KEDA を使用してイベント ソースを監視し、関数アプリをスケーリングします。 プラットフォームは自動的に次の手順を実行します。

  1. Functions パラメーターを変換します。( host.json 属性またはトリガー属性から) Functions トリガー構成を KEDA スケーラー メタデータに変換します。

  2. スケーリング ルールを適用する: 変換されたパラメーターを使用して、適切な KEDA スケーリング ルールを作成します。

  3. イベントの監視: KEDA は、これらのルールに基づいてイベント ソースを継続的に監視します。

  4. インスタンスのスケーリング: ワークロードに基づいてコンテナー インスタンスを自動的にスケールアップまたはスケールダウンします。

次のセクションでは、各トリガーの種類の特定のパラメーター マッピングについて詳しく説明します。

パラメーターのスケーリング

次のセクションでは、Azure Functions トリガー パラメーターが、サポートされているトリガーの種類ごとに対応する KEDA スケーラー構成にどのようにマップされるかについて詳しく説明します。

Azure Storage キュー

次の表は、 Azure Storage Queue トリガー パラメーターKEDA スケーラー構成値にどのようにマップされるかを示しています。

パラメーター Functions の構成 KEDA の構成
パラメーター名 batchSize queueLength
構成パス extensions.queues.batchSize (host.json) metadata.queueLength
既定値 16 5
関数トリガーの説明 KEDA スケーラーの説明
Functions ランタイムが取得して並列で処理するキュー メッセージの数。 処理中の数が newBatchThresholdに達すると、ランタイムは別のバッチをフェッチします。 関数あたりの同時実行メッセージの最大数は、 batchSizenewBatchThresholdです。 アプリが複数の VM にスケールアウトしない限り、コンカレンシーを排除するには、 batchSize を 1 に設定します。 最大の batchSize は 32 です。 スケーラーに渡されるキュー長のターゲット値。 たとえば、1 つのポッドで 10 個のメッセージを処理できる場合は、キューの長さのターゲットを 10 に設定します。 キュー内の実際のメッセージ数が 30 の場合、スケーラーは 3 つのポッドにスケーリングされます。

翻訳ロジック

metadata.queueLength = extensions.queues.batchSize

Azure Service Bus (単一ディスパッチ)

次の表は、 Azure Service Bus トリガー パラメーターKEDA スケーラー構成値にどのようにマップされるかを示しています。

パラメーター Functions の構成 KEDA の構成
パラメーター名 maxConcurrentCalls messageCount
構成パス extensions.serviceBus.maxConcurrentCalls (host.json) metadata.messageCount
既定値 16 5
関数トリガーの説明 KEDA スケーラーの説明
スケーリングされたインスタンスあたりの同時呼び出しの最大数を制限します。 マルチコア インスタンスの場合、最大値にコアの数が乗算されます。 この設定は、 isSessionsEnabled が false の場合にのみ使用します。 スケールオンする Azure Service Bus キューまたはトピック内のアクティブなメッセージの数。

翻訳ロジック

metadata.messageCount = extensions.serviceBus.maxConcurrentCalls

Azure Service Bus (単一ディスパッチ、セッションベース)

次の表は、isSessionsEnabledが true の場合に Azure Service Bus トリガー パラメーターKEDA スケーラー構成値にどのようにマップされるかを示しています。

パラメーター Functions の構成 KEDA の構成
パラメーター名 maxConcurrentSessions messageCount
構成パス extensions.serviceBus.maxConcurrentSessions (host.json) metadata.messageCount
既定値 8 5
関数トリガーの説明 KEDA スケーラーの説明
スケーリングされたインスタンスごとに同時に処理されるセッションの最大数。 この設定は、 isSessionsEnabled が true の場合にのみ使用します。 スケールオンする Azure Service Bus キューまたはトピック内のアクティブなメッセージの数。

翻訳ロジック

metadata.messageCount = extensions.serviceBus.maxConcurrentSessions

Azure Service Bus (バッチ処理)

次の表は、 Azure Service Bus トリガー パラメーター がバッチ処理の KEDA スケーラー構成値 にどのようにマップされるかを示しています。

パラメーター Functions の構成 KEDA の構成
パラメーター名 maxMessageBatchSize messageCount
構成パス extensions.serviceBus.maxMessageBatchSize (host.json) metadata.messageCount
既定値 1000 5
関数トリガーの説明 KEDA スケーラーの説明
バッチ処理のために各関数呼び出しに渡されるメッセージの最大数。 スケールオンする Azure Service Bus キューまたはトピック内のアクティブなメッセージの数。

翻訳ロジック

metadata.messageCount = extensions.serviceBus.maxMessageBatchSize

Azure Event Hubs

次の表は、 Azure Event Hubs トリガー パラメーターKEDA スケーラー構成値にどのようにマップされるかを示しています。

パラメーター Functions の構成 KEDA の構成
パラメーター名 targetUnprocessedEventThreshold unprocessedEventThreshold
構成パス extensions.eventHubs.targetUnprocessedEventThreshold (host.json) metadata.unprocessedEventThreshold
既定値 null 値 64
関数トリガーの説明 KEDA スケーラーの説明
関数インスタンスあたりの未処理イベントの必要な数。 ターゲット ベースのスケーリングに使用されます。 スケーリング アクションをトリガーする平均ターゲット値。

翻訳ロジック

metadata.unprocessedEventThreshold = extensions.eventHubs.targetUnprocessedEventThreshold

Apache Kafka

次の表は、 Apache Kafka トリガー パラメーターKEDA スケーラー構成値にどのようにマップされるかを示しています。

パラメーター Functions の構成 KEDA の構成
パラメーター名 LagThreshold lagThreshold
構成パス 関数トリガー属性 metadata.lagThreshold
既定値 1000 10
関数トリガーの説明 KEDA スケーラーの説明
この値は、Kafka トリガーのインスタンスごとのターゲット実行として使用します。 必要なインスタンスの数は、コンシューマーラグの合計を LagThresholdで割った値に基づいて計算されます。
スケーリング アクションをトリガーするには、この値を合計ラグ (すべてのパーティションラグの合計) のターゲットとして使用します。

Example

[KafkaTrigger(
  "BrokerList",
  "topic",
  ConsumerGroup = "$Default",
  LagThreshold = 100)]

翻訳ロジック

metadata.lagThreshold = LagThreshold

HTTP トリガー

HTTP トリガーは KEDA スケーラーにマップされません。 代わりに、Container Apps の組み込みの HTTP スケーリング機能または外部監視ソリューションを使用してください。