Azure Container Apps에서 크기 조정 규칙 설정
Azure Container Apps는 일련의 선언적 크기 조정 규칙을 통해 자동 수평 크기 조정을 관리합니다. 컨테이너 앱 수정 버전이 크기 조정되면 수정 버전의 새 인스턴스가 필요에 따라 만들어집니다. 이러한 인스턴스를 복제본이라고 합니다.
크기 조정 규칙을 추가하거나 편집하면 컨테이너 앱의 새 수정 버전이 만들어집니다. 수정 버전은 컨테이너 앱의 변경이 불가능한 스냅샷입니다. 새 수정 버전을 트리거하는 변경 유형을 알아보려면 수정 버전 변경 유형을 참조하세요.
이벤트 기반 Container Apps 작업은 크기 조정 규칙을 사용하여 이벤트를 기반으로 실행을 트리거합니다.
크기 조정 정의
크기 조정은 제한, 규칙 및 동작의 조합으로 정의됩니다.
제한은 컨테이너 앱 스케일링에 따라 수정 버전당 가능한 최소 및 최대 복제본 수를 정의합니다.
규모 제한 기본값 최소값 최댓값 수정 버전당 최소 복제본 수 0 0 최대 구성 가능한 복제본은 1,000개입니다. 수정 버전당 최대 복제본 수 10 1 최대 구성 가능한 복제본은 1,000개입니다. 규칙은 Container Apps에서 복제본을 추가하거나 제거할 시기를 결정하는 데 사용하는 조건입니다.
크기 조정 규칙은 HTTP, TCP(전송 제어 프로토콜) 또는 사용자 지정으로 구현됩니다.
동작은 시간 경과에 따른 크기 조정 사항을 결정하기 위한 규칙과 제한의 조합입니다.
크기 조정 동작은 크기 조정을 결정하는 방법을 설명합니다.
크기 조정 규칙을 정의할 때는 다음 항목에 유의하는 것이 중요합니다.
- 컨테이너 앱이 0으로 조정되면 사용 요금이 청구되지 않습니다.
- 처리되지 않지만 메모리에 남아 있는 복제본에는 더 낮은 "유휴" 요금이 청구될 수 있습니다. 자세한 내용은 Billing을 참조하세요.
- 수정 버전 인스턴스가 항상 실행되도록 하려면 최소 복제본 수를 1 이상으로 설정합니다.
스케일링 규칙
조정은 세 가지 트리거 범주로 이루어집니다.
- HTTP: 수정 버전에 대한 동시 HTTP 요청 수에 기반합니다.
- TCP: 수정 버전에 대한 동시 TCP 연결 수에 기반합니다.
- 사용자 지정: CPU, 메모리 또는 지원되는 이벤트 기반 데이터 원본에 기반합니다. 예시는 다음과 같습니다.
- Azure Service Bus
- Azure Event Hubs
- Apache Kafka
- Redis
둘 이상의 크기 조정 규칙을 정의하는 경우 규칙의 첫 번째 조건이 충족되면 컨테이너 앱이 크기 조정을 시작합니다.
HTTP
HTTP 크기 조정 규칙을 사용하면 컨테이너 앱 수정 버전의 크기 조정 방법을 결정하는 동시 HTTP 요청의 임계값을 제어할 수 있습니다. 15초마다 동시 요청 수는 지난 15초 동안의 요청 수를 15로 나눈 값으로 계산됩니다. Container Apps 작업은 HTTP 크기 조정 규칙을 지원하지 않습니다.
다음 예에서 수정 버전은 최대 5개의 복제본으로 스케일 아웃되고 0으로 스케일 인될 수 있습니다. 크기 조정 속성은 초당 100개의 동시 요청으로 설정됩니다.
예시
http
섹션에서는 HTTP 스케일링 규칙을 정의합니다.
크기 조정 속성 | 설명 | 기본값 | 최소값 | 최댓값 |
---|---|---|---|---|
concurrentRequests |
HTTP 요청 수가 이 값을 초과하면 다른 복제본이 추가됩니다. 복제본은 maxReplicas 양에 도달할 때까지 풀에 계속 추가됩니다. |
10 | 1 | 해당 없음 |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "http-rule",
"http": {
"metadata": {
"concurrentRequests": "100"
}
}
}]
}
}
}
}
}
참고 항목
HTTP가 아닌 이벤트 스케일링 규칙을 사용하는 경우 컨테이너 앱의 properties.configuration.activeRevisionsMode
속성을 single
로 설정합니다.
create
또는 update
명령에서 --scale-rule-http-concurrency
매개 변수를 사용하여 HTTP 스케일링 규칙을 정의합니다.
CLI 매개 변수 | 설명 | 기본값 | 최소값 | 최댓값 |
---|---|---|---|---|
--scale-rule-http-concurrency |
동시 HTTP 요청 수가 이 값을 초과하면 다른 복제본이 추가됩니다. 복제본은 max-replicas 양에 도달할 때까지 풀에 계속 추가됩니다. |
10 | 1 | 해당 없음 |
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT_NAME> \
--image <CONTAINER_IMAGE_LOCATION>
--min-replicas 0 \
--max-replicas 5 \
--scale-rule-name azure-http-rule \
--scale-rule-type http \
--scale-rule-http-concurrency 100
Azure Portal에서 컨테이너 앱으로 이동합니다.
비율 크기 조정을 선택합니다.
편집 및 배포를 선택합니다.
규모 탭을 선택합니다.
최소 및 최대 복제본 범위를 선택합니다.
추가를 선택합니다.
규칙 이름 상자에 규칙 이름을 입력합니다.
유형 드롭다운에서 HTTP 스케일링을 선택합니다.
동시 요청 상자에 컨테이너 앱에 원하는 동시 요청 수를 입력합니다.
TCP
TCP 크기 조정 규칙을 사용하면 앱 크기 조정 방법을 결정하는 동시 TCP 연결의 임계값을 제어할 수 있습니다. 15초마다 동시 연결 수는 지난 15초 동안의 연결 수를 15로 나눈 값으로 계산됩니다. Container Apps 작업은 TCP 크기 조정 규칙을 지원하지 않습니다.
다음 예에서 컨테이너 앱 수정 버전은 최대 5개의 복제본으로 스케일 아웃되고 0으로 스케일 인될 수 있습니다. 크기 조정 임계값은 초당 100개의 동시 연결로 설정됩니다.
예시
tcp
섹션에서는 TCP 스케일링 규칙을 정의합니다.
크기 조정 속성 | 설명 | 기본값 | 최소값 | 최댓값 |
---|---|---|---|---|
concurrentConnections |
동시 TCP 연결 수가 이 값을 초과하면 다른 복제본이 추가됩니다. 복제본은 동시 연결 수가 증가함에 따라 최대 maxReplicas 개까지 계속 추가됩니다. |
10 | 1 | 해당 없음 |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "tcp-rule",
"tcp": {
"metadata": {
"concurrentConnections": "100"
}
}
}]
}
}
}
}
}
create
또는 update
명령에서 --scale-rule-tcp-concurrency
매개 변수를 사용하여 TCP 크기 조정 규칙을 정의합니다.
CLI 매개 변수 | 설명 | 기본값 | 최소값 | 최댓값 |
---|---|---|---|---|
--scale-rule-tcp-concurrency |
동시 TCP 연결 수가 이 값을 초과하면 다른 복제본이 추가됩니다. 복제본은 동시 연결 수가 증가함에 따라 최대 max-replicas 개까지 계속 추가됩니다. |
10 | 1 | 해당 없음 |
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT_NAME> \
--image <CONTAINER_IMAGE_LOCATION>
--min-replicas 0 \
--max-replicas 5 \
--transport tcp \
--ingress <external/internal> \
--target-port <CONTAINER_TARGET_PORT> \
--scale-rule-name azure-tcp-rule \
--scale-rule-type tcp \
--scale-rule-tcp-concurrency 100
Azure Portal에서는 지원되지 않습니다. Azure CLI 또는 Azure Resource Manager를 사용하여 TCP 스케일링 규칙을 구성합니다.
사용자 지정
다음 기본값을 사용하여 ScaledObject 기반 KEDA 스케일러를 바탕으로 사용자 지정 Container Apps 스케일링 규칙을 만들 수 있습니다.
Defaults | 초 |
---|---|
폴링 간격 | 30 |
휴지 기간 | 300 |
이벤트 기반 Container Apps 작업의 경우 ScaledJob 기반 KEDA 스칼라를 기반으로 사용자 지정 크기 조정 규칙을 만들 수 있습니다.
다음 예제에서는 사용자 지정 스케일링 규칙을 만드는 방법을 보여줍니다.
예시
이 예제에서는 Azure Service Bus 스케일러를 Container Apps 스케일링 규칙으로 변환하는 방법을 보여 주지만, 다른 ScaledObject 기반 KEDA 스케일러 사양에 대해서도 동일한 프로세스를 사용하게 됩니다.
인증을 위해 KEDA 배율 조정기 인증 매개 변수는 Container Apps 비밀 또는 관리 ID를 사용합니다.
다음 절차에서는 KEDA 스케일러를 컨테이너 앱 스케일링 규칙으로 변환하는 방법을 보여 줍니다. 이 코드 조각은 전체 템플릿의 컨텍스트에서 각 섹션이 해당하는 위치를 보여 주기 위해 ARM 템플릿에서 발췌한 것입니다.
{
...
"resources": {
...
"properties": {
...
"configuration": {
...
"secrets": [
{
"name": "<NAME>",
"value": "<VALUE>"
}
]
},
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [
{
"name": "<RULE_NAME>",
"custom": {
"metadata": {
...
},
"auth": [
{
"secretRef": "<NAME>",
"triggerParameter": "<PARAMETER>"
}
]
}
}
]
}
}
}
}
}
아래 예제가 ARM 템플릿에 어떻게 맞는지에 대한 컨텍스트는 이 발췌를 참조하세요.
먼저 크기 조정 규칙의 유형과 메타데이터를 정의합니다.
KEDA 스케일러 사양에서
type
값을 찾습니다.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
ARM 템플릿에서 스케일링 규칙의
custom.type
속성에 스케일러type
값을 입력합니다.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...
KEDA 스케일러 사양에서
metadata
값을 찾습니다.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
ARM 템플릿에서 스케일링 규칙의
custom.metadata
섹션에 모든 메타데이터 값을 추가합니다.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...
인증
Container Apps 크기 조정 규칙은 비밀 기반 인증을 지원합니다. Azure Queue Storage, Azure Service Bus, Azure Event Hubs를 비롯한 Azure 리소스에 대한 크기 조정 규칙도 관리 ID를 지원합니다. 가능하다면 관리 ID 인증을 사용하여 앱 내에 비밀이 저장되지 않도록 합니다.
비밀 사용
인증에 비밀을 사용하려면 컨테이너 앱의 secrets
배열에 비밀을 만들어야 합니다. 비밀 값은 크기 조정 규칙의 auth
배열에서 사용됩니다.
KEDA 배율 조정기는 authenticationRef
속성에서 참조하는 TriggerAuthentication에서 비밀을 사용할 수 있습니다. TriggerAuthentication 개체를 Container Apps 스케일링 규칙에 매핑할 수 있습니다.
KEDA
ScaledObject
사양에서TriggerAuthentication
을 참조하는 개체를 찾습니다.TriggerAuthentication
개체에서 각secretTargetRef
와 연관된 비밀을 찾습니다.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection name: my-secrets key: connection-string-secret --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-auth
ARM 템플릿에서 각 비밀에 대해 다음을 수행합니다.
비밀 이름과 값을 포함하는 컨테이너 앱의
secrets
배열에 비밀을 추가합니다.크기 조정 규칙의
auth
배열에 항목을 추가합니다.triggerParameter
속성의 값을secretTargetRef
의parameter
속성 값으로 설정합니다.secretRef
속성의 값을secretTargetRef
의key
속성 이름으로 설정합니다.
{ ... "resources": { ... "properties": { ... "configuration": { ... "secrets": [ { "name": "connection-string-secret", "value": "<SERVICE_BUS_CONNECTION_STRING>" } ] }, "template": { ... "scale": { "minReplicas": 0, "maxReplicas": 5, "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" }, "auth": [ { "secretRef": "connection-string-secret", "triggerParameter": "connection" } ] } } ] } } } } }
일부 스케일러는 환경 변수의 값을 참조하기 위해
FromEnv
접미사가 있는 메타데이터를 지원합니다. Container Apps는 해당 환경 변수의 ARM 템플릿에 나와 있는 첫 번째 컨테이너를 확인합니다.보안 관련 자세한 내용은 고려 사항 섹션을 참조하세요.
관리 ID 사용
Container Apps 크기 조정 규칙은 관리 ID를 사용하여 Azure 서비스를 인증할 수 있습니다. 다음 ARM 템플릿은 Azure Queue Scaler를 인증하기 위해 시스템 기반 관리 ID를 전달합니다.
"scale": {
"minReplicas": 0,
"maxReplicas": 4,
"rules": [
{
"name": "azure-queue",
"custom": {
"type": "azure-queue",
"metadata": {
"accountName": "apptest123",
"queueName": "queue1",
"queueLength": "1"
},
"identity": "system"
}
}
]
}
크기 조정 규칙과 함께 관리 ID를 사용하는 방법에 대해 자세히 알아보려면 관리 ID를 참조하세요.
KEDA 스케일러 사양에서
type
값을 찾습니다.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
CLI 명령에서
--scale-rule-type
매개 변수를 사양type
값으로 설정합니다.az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"
KEDA 스케일러 사양에서
metadata
값을 찾습니다.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
CLI 명령에서
--scale-rule-metadata
매개 변수를 메타데이터 값으로 설정합니다.YAML 형식의 값을 명령줄에서 사용하려면 키/값 쌍으로 변환해야 합니다. 각 키/값 쌍을 공백으로 구분합니다.
az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"
인증
Container Apps 크기 조정 규칙은 비밀 기반 인증을 지원합니다. Azure Queue Storage, Azure Service Bus, Azure Event Hubs를 비롯한 Azure 리소스에 대한 크기 조정 규칙도 관리 ID를 지원합니다. 가능하다면 관리 ID 인증을 사용하여 앱 내에 비밀이 저장되지 않도록 합니다.
비밀 사용
Container Apps 크기 조정 규칙에 대한 비밀 기반 인증을 구성하려면 컨테이너 앱에서 비밀을 구성하고 크기 조정 규칙에서 이를 참조합니다.
KEDA 배율 조정기는 authenticationRef
속성이 참조로 사용하는 TriggerAuthentication에서 비밀을 지원합니다. TriggerAuthentication
개체를 Container Apps 크기 조정 규칙에 매핑할 수 있습니다.
KEDA
ScaledObject
사양에서TriggerAuthentication
을 참조하는 개체를 찾습니다. 각TriggerAuthentication
개체의secretTargetRef
를 식별합니다.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection name: my-secrets key: connection-string-secret --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-auth
컨테이너 앱에서
secretTargetRef
속성과 일치하는 비밀을 만듭니다.CLI 명령에서 각
secretTargetRef
항목의 매개 변수를 설정합니다.--secrets
매개 변수를 사용하여 비밀 항목을 만듭니다. 비밀이 여러 개인 경우 공백으로 구분합니다.--scale-rule-auth
매개 변수를 사용하여 인증 항목을 만듭니다. 항목이 여러 개인 경우 공백으로 구분합니다.
az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"
관리 ID 사용
Container Apps 크기 조정 규칙은 관리 ID를 사용하여 Azure 서비스를 인증할 수 있습니다. 다음 명령은 사용자가 할당한 관리 ID로 컨테이너 앱을 만들고 이를 사용하여 Azure Queue Scaler를 인증합니다.
az containerapp create \
--resource-group <RESOURCE_GROUP> \
--name <APP_NAME> \
--environment <ENVIRONMENT_ID> \
--user-assigned <USER_ASSIGNED_IDENTITY_ID> \
--scale-rule-name azure-queue \
--scale-rule-type azure-queue \
--scale-rule-metadata "accountName=<AZURE_STORAGE_ACCOUNT_NAME>" "queueName=queue1" "queueLength=1" \
--scale-rule-identity <USER_ASSIGNED_IDENTITY_ID>
자리 표시자를 해당 값으로 바꿉니다.
Azure Portal에서 컨테이너 앱으로 이동합니다.
비율 크기 조정을 선택합니다.
편집 및 배포를 선택합니다.
크기 조정 및 복제본 탭을 선택합니다.
최소 및 최대 복제본 범위를 선택합니다.
추가를 선택합니다.
규칙 이름 상자에 규칙 이름을 입력합니다.
유형 드롭다운에서 사용자 지정을 선택합니다.
KEDA 스케일러 사양에서
type
값을 찾습니다.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
사용자 지정 규칙 유형 상자에 스케일러
type
값을 입력합니다.KEDA 스케일러 사양에서
metadata
값을 찾습니다.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
포털에서 메타데이터 섹션을 찾아 추가를 선택합니다. KEDA
ScaledObject
사양 메타데이터 섹션에서 각 항목의 이름과 값을 입력합니다.
인증
Container Apps 크기 조정 규칙은 비밀 기반 인증을 지원합니다. Azure Queue Storage, Azure Service Bus, Azure Event Hubs를 비롯한 Azure 리소스에 대한 크기 조정 규칙도 관리 ID를 지원합니다. 가능하다면 관리 ID 인증을 사용하여 앱 내에 비밀이 저장되지 않도록 합니다.
비밀 사용
컨테이너 앱에서, 참조할 비밀을 만듭니다.
KEDA
ScaledObject
사양에서TriggerAuthentication
을 참조하는 개체를 찾습니다. 각TriggerAuthentication
개체의secretTargetRef
를 식별합니다.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection name: my-secrets key: connection-string-secret --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-auth
인증 섹션에서 추가를 선택하여 각 KEDA
secretTargetRef
매개 변수의 항목을 만듭니다.
관리 ID 사용
Azure Portal에서는 관리 ID 인증이 지원되지 않습니다. Azure CLI 또는 Azure Resource Manager를 사용하여 관리 ID를 사용하여 인증합니다.
기본 크기 조정 규칙
크기 조정 규칙을 만들지 않으면 기본 크기 조정 규칙이 컨테이너 앱에 적용됩니다.
트리거 | 최소 복제본 | 최대 복제본 수 |
---|---|---|
HTTP | 0 | 10 |
Important
수신을 사용하도록 설정하지 않는 경우 스케일링 규칙을 만들거나 minReplicas
를 1 이상으로 설정해야 합니다. 수신을 사용하지 않도록 설정했으며 minReplicas
또는 사용자 지정 스케일링 규칙을 정의하지 않는 경우 컨테이너 앱이 0으로 스케일링되며 백업을 시작할 수 없습니다.
크기 조정 동작
크기 조정 동작의 기본값은 다음과 같습니다.
매개 변수 | 값 |
---|---|
폴링 간격 | 30초 |
휴지 기간 | 300초 |
안정화 기간 스케일 업 | 0초 |
안정화 기간 스케일 다운 | 300초 |
스케일 업 단계 | 1, 4, 현재 100% |
스케일 다운 단계 | 현재 100% |
크기 조정 알고리즘 | desiredReplicas = ceil(currentMetricValue / targetMetricValue) |
- 폴링 간격은 KEDA에서 이벤트 원본을 쿼리하는 빈도입니다. 이 값은 HTTP 및 TCP 크기 조정 규칙에 적용되지 않습니다.
- 쿨 다운 기간은 애플리케이션이 최소 복제본 수로 축소되기 전에 마지막 이벤트가 관찰된 후의 기간입니다.
- 스케일 업 안정화 기간은 스케일 업 조건이 충족되면 스케일 업 결정을 수행하기 전에 대기하는 시간입니다.
- 스케일 다운 안정화 기간은 스케일 다운 조건이 충족되면 스케일 다운 결정을 수행하기 전에 대기하는 시간입니다.
- 스케일 업 단계는 새 인스턴스가 추가되는 비율입니다. 1, 4, 8, 16, 32, ...부터 시작하여 구성된 최대 복제본 수까지입니다.
- 스케일 다운 단계 복제본이 제거되는 속도입니다. 기본적으로 종료해야 하는 복제본은 100% 제거됩니다.
- 크기 조정 알고리즘은 현재 원하는 복제본 수를 계산하는 데 사용되는 수식입니다.
예시
다음 크기 조정 규칙의 경우:
"minReplicas": 0,
"maxReplicas": 20,
"rules": [
{
"name": "azure-servicebus-queue-rule",
"custom": {
"type": "azure-servicebus",
"metadata": {
"queueName": "my-queue",
"namespace": "service-bus-namespace",
"messageCount": "5"
}
}
}
]
앱이 스케일 아웃되면 KEDA는 빈 큐로 시작하고 다음 단계를 수행합니다.
- 30초마다
my-queue
를 확인합니다. - 큐 길이가 0이면 (1)로 돌아갑니다.
- 큐 길이가 > 0이면 앱 크기를 1로 조정합니다.
- 큐 길이가 50이면
desiredReplicas = ceil(50/5) = 10
을 계산합니다. min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount))
에 맞게 앱 크기 조정- (1)로 돌아갑니다.
앱의 크기를 최대 복제본 수 20으로 조정한 경우 크기 조정은 이전과 동일한 단계를 수행합니다. 스케일 다운은 조건이 300초 동안 충족된 경우에만 발생합니다(스케일 다운 안정화 기간). 큐 길이가 0이면 KEDA는 300초(휴지 기간)를 기다린 후 앱 크기를 0으로 조정합니다.
고려 사항
"다중 수정 버전" 모드에서 새 크기 조정 트리거를 추가하면 애플리케이션의 새 수정 버전이 만들어지지만 이전 수정 버전은 이전 크기 조정 규칙과 함께 계속 사용할 수 있습니다. 수정 버전 관리 페이지를 사용하여 트래픽 할당을 관리합니다.
애플리케이션이 0으로 크기 조정되면 비용이 발생하지 않습니다. 자세한 가격 책정 정보는 Azure Container Apps의 청구를 참조하세요.
Azure Container Apps의 모든 .NET 앱에 대해 데이터 보호를 사용하도록 설정해야 합니다. 자세한 내용은 Azure Container Apps에서 ASP.NET Core 앱 배포 및 크기 조정을 참조하세요.
알려진 제한 사항
수직 크기 조정은 지원되지 않습니다.
복제본 수량은 대상 금액이며 보증이 아닙니다.
Dapr 작업자를 사용하여 상태를 관리하는 경우 0으로 크기 조정하는 것은 지원되지 않는다는 점에 유의해야 합니다. Dapr은 가상 작업자를 사용하여 비동기식 호출을 관리합니다. 즉, 메모리 내 표현이 ID나 수명에 연결되지 않음을 의미합니다.