Azure Container Apps에 Azure Functions를 배포하는 경우 플랫폼은 자동으로 Functions 트리거 매개 변수를 KEDA 크기 조정 구성으로 변환합니다. 이 변환을 통해 다양한 이벤트 원본에서 들어오는 워크로드에 따라 Functions의 크기를 적절하게 조정할 수 있습니다.
크기 조정 매핑의 작동 방식
Container Apps의 Azure Functions는 KEDA를 사용하여 이벤트 원본을 모니터링하고 함수 앱의 크기를 조정합니다. 플랫폼은 자동으로 다음을 수행합니다.
함수 매개 변수 변환: Functions 트리거 구성(특성에서
host.json또는 트리거)을 KEDA 스케일러 메타데이터로 변환합니다.크기 조정 규칙 적용: 번역된 매개 변수를 사용하여 적절한 KEDA 크기 조정 규칙을 만듭니다.
이벤트 모니터링: KEDA는 이러한 규칙에 따라 이벤트 원본을 지속적으로 모니터링합니다.
인스턴스 크기 조정: 워크로드에 따라 컨테이너 인스턴스를 자동으로 확장 또는 축소합니다.
다음 섹션에서는 각 트리거 형식에 대한 특정 매개 변수 매핑을 자세히 설명합니다.
매개 변수 크기 조정
다음 섹션에서는 Azure Functions 트리거 매개 변수가 지원되는 각 트리거 유형에 대한 해당 KEDA 스케일러 구성에 매핑되는 방법을 자세히 설명합니다.
Azure Storage 큐
다음 표에서는 Azure Storage 큐 트리거 매개 변수 가 KEDA 스케일러 구성 값에 매핑되는 방법을 보여 줍니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | batchSize |
queueLength |
| 구성 경로 |
extensions.queues.batchSize (host.json) |
metadata.queueLength |
| 기본값 | 16 | 5 |
| 함수 트리거 설명 | KEDA 스케일러 설명 |
|---|---|
Functions 런타임에서 검색하고 병렬로 처리하는 큐 메시지 수입니다. 처리 중인 번호가 도달 newBatchThreshold하면 런타임은 다른 일괄 처리를 가져옵니다. 함수당 최대 동시 메시지 수는 더하기newBatchThreshold입니다batchSize. 앱이 여러 VM으로 확장되지 않는 한 동시성을 제거하려면 1로 설정합니다 batchSize . 최대 batchSize은 32입니다. |
배율 조정기로 전달된 큐 길이의 대상 값입니다. 예를 들어 한 Pod가 10개의 메시지를 처리할 수 있는 경우 큐 길이 대상을 10으로 설정합니다. 큐의 실제 메시지 수가 30인 경우 크기 조정기는 3개의 Pod로 확장됩니다. |
번역 논리
metadata.queueLength = extensions.queues.batchSize
Azure Service Bus(단일 디스패치)
다음 표에서는 Azure Service Bus 트리거 매개 변수 가 KEDA 스케일러 구성 값에 매핑되는 방법을 보여줍니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | maxConcurrentCalls |
messageCount |
| 구성 경로 |
extensions.serviceBus.maxConcurrentCalls (host.json) |
metadata.messageCount |
| 기본값 | 16 | 5 |
| 함수 트리거 설명 | KEDA 스케일러 설명 |
|---|---|
크기 조정된 인스턴스당 최대 동시 호출 수를 제한합니다. 다중 코어 인스턴스의 경우 최대값에 코어 수를 곱합니다. false인 경우에만 isSessionsEnabled 이 설정을 사용합니다. |
확장할 Azure Service Bus 큐 또는 토픽의 활성 메시지 수입니다. |
번역 논리
metadata.messageCount = extensions.serviceBus.maxConcurrentCalls
Azure Service Bus(세션 기반)
다음 표에서는 Azure Event Hubs 트리거 매개 변수가KEDA 스케일러 구성 값에 매핑되는 방법을 보여 줍니다.
| 매개 변수 | 함수 구성 | 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 스케일러 구성 값에 매핑되는 방법을 보여 줍니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | targetUnprocessedEventThreshold |
unprocessedEventThreshold |
| 구성 경로 |
extensions.eventHubs.targetUnprocessedEventThreshold (host.json) |
metadata.unprocessedEventThreshold |
| 기본값 | null | 64 |
| 함수 트리거 설명 | KEDA 스케일러 설명 |
|---|---|
| 함수 인스턴스당 처리되지 않은 이벤트의 원하는 수입니다. 대상 기반 크기 조정에 사용됩니다. | 크기 조정 작업을 트리거하는 평균 대상 값입니다. |
번역 논리
metadata.unprocessedEventThreshold = extensions.eventHubs.targetUnprocessedEventThreshold
Apache Kafka
다음 표에서는 Apache Kafka 트리거 매개 변수 가 KEDA 스케일러 구성 값에 매핑되는 방법을 보여줍니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | LagThreshold |
lagThreshold |
| 구성 경로 | 함수 트리거 특성 | metadata.lagThreshold |
| 기본값 | 1000 | 10 |
| 함수 트리거 설명 | KEDA 스케일러 설명 |
|---|---|
Kafka 트리거에 대한 인스턴스당 대상 실행으로 이 값을 사용합니다. 원하는 인스턴스 수는 총 소비자 지연을 LagThreshold기준으로 계산됩니다. |
|
| 이 값을 총 지연 시간(모든 파티션 지연의 합계)의 대상으로 사용하여 크기 조정 작업을 트리거합니다. |
예시
[KafkaTrigger(
"BrokerList",
"topic",
ConsumerGroup = "$Default",
LagThreshold = 100)]
번역 논리
metadata.lagThreshold = LagThreshold
Azure Cosmos DB (애저 코스모스 DB)
Azure Cosmos DB 트리거는 KEDA 스케일러에 매핑되지 않습니다. 대신 사용자 지정 크기 조정을 사용합니다.
Functions 트리거는 함수 호출당 수신되는 최대 항목 수를 설정합니다. 트랜잭션 범위는 저장 프로시저에 대해 유지됩니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | MaxItemsPerInvocation |
N/A |
| 구성 경로 | 함수 트리거 특성 | N/A |
| 기본값 | 100 | N/A |
예시
[CosmosDBTrigger(
databaseName: "ToDoItems",
containerName: "Items",
Connection = "CosmosDBConnection",
MaxItemsPerInvocation = 100)]
HTTP 트리거
HTTP 트리거는 KEDA 스케일러에 매핑되지 않습니다. 대신 Container Apps 기본 제공 HTTP 크기 조정 기능 또는 외부 모니터링 솔루션을 사용합니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | maxConcurrentRequests |
N/A |
| 구성 경로 |
extensions.http.maxConcurrentRequests (host.json) |
N/A |
| 기본값 | 100(소비), -1(프리미엄/전용) | N/A |
Blob Storage 트리거
다음 표에서는 Azure Blob Storage 트리거 매개 변수 가 KEDA 스케일러 구성 값에 매핑되는 방법을 보여 줍니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | maxDegreeOfParallelism |
blobCount |
| 구성 경로 |
extensions.blobs.maxDegreeOfParallelism (host.json) |
metadata.blobCount |
| 기본값 | 8개 × 사용 가능한 코어 수 | 5 |
| 함수 트리거 설명 | KEDA 스케일러 설명 |
|---|---|
| 함수 앱의 모든 Blob 트리거 함수에 허용되는 동시 호출 수를 설정합니다. 최소값: 1. | 크기 조정 작업을 트리거하는 평균 대상 값입니다. (기본값: 5, 선택 사항) |
번역 논리
metadata.blobCount = extensions.blobs.maxDegreeOfParallelism
Event Grid
Azure Event Grid 트리거 매개 변수는 KEDA 스케일러에 매핑되지 않습니다.
Event Grid 트리거는 웹후크 HTTP 요청을 사용합니다. HTTP 트리거와 동일한 host.json 설정을 사용하여 이 요청을 구성합니다. 이러한 설정은 리소스 관리에 대한 병렬 실행을 제어합니다.
RabbitMQ 트리거
다음 표에서는 RabbitMQ 트리거 매개 변수 가 KEDA 스케일러 구성 값에 매핑되는 방법을 보여줍니다.
| 매개 변수 | 함수 구성 | KEDA 구성 |
|---|---|---|
| 매개 변수 이름 | prefetchCount |
value |
| 구성 경로 |
extensions.rabbitMQ.prefetchCount (host.json) |
metadata.value |
| 기본값 | 30 | 100.50 |
| 함수 트리거 설명 | KEDA 스케일러 설명 |
|---|---|
| 수신자가 동시에 요청하고 캐시할 수 있는 메시지 수입니다. | 크기 조정을 트리거하는 메시지 백로그 또는 게시/초 속도입니다. QueueLength 모드에서 값은 크기 조정을 위한 대상 큐 길이를 나타냅니다. |
번역 논리
metadata.value = extensions.rabbitMQ.prefetchCount