AWS의 ECS를 사용하면 Service(Container)를 ECS instance node(EC2)에 배치 할 때 어떤 기준으로 Service를 배치 할 것인지 정의 할 수 있다.
이것은 작업을 실행할 때(RunTask), 새 서비스를 생성할 때(CreateService), 또는 기존 서비스를 업데이트할 때(UpdateService) 전략을 지정할 수 있다. (이 내용은 task 정의 할 때 들어가는 내용이 아니다.)
아무 설정도 하지 않으면 기본적으로 아래와 같이 AZ기준으로 분산이다.
"placementStrategy": [
{
"field": "attribute:ecs.availability-zone",
"type": "spread"
}
]
사용할 수 있는 type과 유효한 필드 값은 아래와 같다.
type |
유효한 필드 값
|
binpack 태스크는 사용되지 않는 CPU 또는 메모리를 최소한으로 남겨둘 수 있도록 컨테이너 인스턴스에 배치됩니다. 이 전략은 사용 중인 컨테이너 인스턴스의 수를 최소화합니다. 이 전략을 사용하고 축소 작업을 수행하면 Amazon ECS가 태스크를 종료합니다. 이는 태스크가 종료된 후 컨테이너 인스턴스에 남아 있는 리소스의 양을 기준으로 합니다. 태스크 종료 후 사용 가능한 리소스가 가장 많이 남은 컨테이너 인스턴스가 해당 태스크를 종료합니다. |
|
random 태스크가 무작위로 배치됩니다. |
사용되지 않습니다 |
spread 태스크가 지정된 값에 따라 균등하게 배치됩니다. 서비스 태스크는 해당 서비스의 태스크를 기준으로 분산됩니다. 독립 실행형 태스크는 동일한 작업 그룹의 태스크를 기준으로 분산됩니다. 작업 그룹에 대한 자세한 정보는 그룹 관련 Amazon ECS 작업 섹션을 참조하세요.spread 전략이 사용되고 축소 작업이 수행되면 Amazon ECS가 가용 영역 간에 균형을 유지하도록 종료할 태스크를 선택합니다. 가용 영역 내에서 태스크가 무작위로 선택됩니다. |
|
그런데 CPU, MEM 기준으로는 binpack만 사용 할 수 있고, 노드 분산을 의미하는 spread는 인스턴스(instanceId)와, AZ(attribute:ecs.availability-zone)기준으로만 사용 할 수 있다. 이부분을 잘 기억 할 필요가 있다.
가용 영역에 균등하게 작업 분산
다음 전략은 가용 영역에 균등하게 태스크를 분산합니다.
"placementStrategy": [
{
"field": "attribute:ecs.availability-zone",
"type": "spread"
}
]
모든 인스턴스에 균등하게 작업 분산
다음 전략은 모든 인스턴스에 균등하게 태스크를 분산합니다.
"placementStrategy": [
{
"field": "instanceId",
"type": "spread"
}
]
메모리를 기반으로 작업 빈팩
다음 전략은 메모리를 기준으로 태스크를 bin-pack합니다.
"placementStrategy": [
{
"field": "memory",
"type": "binpack"
}
]
무작위로 작업 배치
다음 전략은 태스크를 무작위로 배치합니다.
"placementStrategy": [
{
"type": "random"
}
]
가용 영역에 균등하게 작업을 분산한 다음 각 가용 영역 내에서 인스턴스에 균등하게 작업 분산
다음 전략은 가용 영역에 균등하게 태스크를 분산한 다음 각 가용 영역 내에서 인스턴스에 균등하게 태스크를 분산합니다.
"placementStrategy": [
{
"field": "attribute:ecs.availability-zone",
"type": "spread"
},
{
"field": "instanceId",
"type": "spread"
}
]
가용 영역에 균등하게 작업을 분산한 다음 각 가용 영역 내의 메모리를 기준으로 작업 빈팩
다음 전략은 가용 영역에 균등하게 태스크를 분산한 다음 각 가용 영역 내에서 메모리를 기준으로 태스크를 bin-pack합니다.
"placementStrategy": [
{
"field": "attribute:ecs.availability-zone",
"type": "spread"
},
{
"field": "memory",
"type": "binpack"
}
]
인스턴스에 균등하게 작업을 분산한 다음 메모리를 기반으로 작업 빈팩
다음 전략에서는 모든 인스턴스에 균등하게 작업을 분산한 다음 각 인스턴스 내의 메모리를 기반으로 작업을 빈팩합니다.
"placementStrategy": [
{
"field": "instanceId",
"type": "spread"
},
{
"field": "memory",
"type": "binpack"
}
]
참고문서.
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/task-placement-strategies.html
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/strategy-examples.html
'Cloud > AWS' 카테고리의 다른 글
[AWS] NLB Access log 활성화 방법 (0) | 2025.01.16 |
---|---|
[AWS] ECR 사용 방법 (0) | 2025.01.14 |
[AWS] NLB 클라이언트 IP 보존 방법 (0) | 2024.10.31 |
[AWS] ALB Access log 활성화 방법 (0) | 2024.09.12 |
AWS ECS 서비스 배포시 ALB 두개 연결 방법 (0) | 2024.08.14 |
댓글