ECS의 Consul 기술 사양
ECS의 Consul 기술 사양
ECS 워크로드에 Consul 서비스 메시를 사용하기 위한 지원 런타임 및 환경을 설명해 드릴게요. 지원되는 환경, 리소스 사용량을 살펴볼게요.
출처: 문서
본문
이 문서는 ECS 워크로드에 Consul 서비스 메시를 사용하기 위한 지원 런타임 및 환경을 설명해요.
Terraform mesh-task 모듈을 사용하여 Consul 서비스 메시를 배포하는 것과 관련된 요구 사항은 Terraform 모듈로 Consul 배포를 참고해 주세요. ECS 클러스터에 Consul 서비스 메시를 수동으로 배포하는 것과 관련된 요구 사항은 Consul 수동 배포를 참고해 주세요.
지원되는 환경, 런타임 및 기능
ECS의 Consul은 다음 환경, 런타임 및 기능을 지원해요:
- 런치 유형: Fargate 및 EC2
- 네트워크 모드:
awsvpc - 서브넷: 프라이빗 및 퍼블릭 서브넷. 작업은 이미지를 가져오려면 Amazon ECR 또는 다른 공개 컨테이너 레지스트리에 네트워크 접근이 가능해야 해요.
- Consul 서버: 가상 머신에서 실행되는 자체 Consul 서버를 사용할 수 있어요.
- ECS controller: ECS controller는 상태를 Consul로 다시 조정(reconcile)하는 데 도움을 주고 Consul 보안 기능을 지원해요.
- Admin 파티션: Enterprise ACL을 활성화하고 admin 파티션을 사용하도록 ECS controller를 구성해 주세요. 각 admin 파티션에 대해 하나의 controller를 배포해야 해요.
- 네임스페이스: Enterprise ACL을 활성화하고 네임스페이스를 사용하도록 ECS controller를 구성해 주세요.
- Dataplane 컨테이너: Consul dataplane으로 프록시를 관리하려면 Terraform
mesh-task모듈을 사용하여 Consul 서비스 메시를 설치해야 해요. - 투명 프록시: ECS 0.8.x의 Consul은 EC2 작업의 ECS에 대한 투명 프록시를 지원해요. ECS의 투명 프록시는 호스트가
NET_ADMIN기능을 가져야 하며, ECS Fargate는 현재 이를 지원하지 않아요.mesh-taskTerraform 모듈의enable_transparent_proxy매개변수 또는ecs_config_json을 통해 투명 프록시를 활성화할 수 있어요.enable_transparent_proxy매개변수가ecs_config_json보다 우선해요. - API 게이트웨이: ECS 0.8.x의 Consul은 API 게이트웨이를 지원해요.
예시는 terraform-aws-consul-ecs를 참고해 주세요.
리소스 사용량
리소스 사용량을 측정하기 위해 다음 절차를 사용했어요:
- 다양한 크기의 클러스터를 배포하면서 성능 테스트를 실행했어요. 배포 조건이 ECS의 Consul 구성 요소에 부하를 주도록 보장했어요.
- 각 성능 테스트 세션 후 각 구성 요소의 리소스 사용량을 기록하여 프로덕션 환경에서 최악의 시나리오 리소스 사용량을 결정했어요.
- 성능 테스트 중에 ECS의 Fargate 최소 허용 CPU(256 shares)와 메모리 설정(512 MB)을 사용하여 ECS의 Consul과 애플리케이션 컨테이너가 가장 작은 ECS 작업에서도 실행될 수 있음을 입증했어요.
다음 표는 이러한 테스트 조건에서 각 컨테이너에 대해 관찰한 최대 리소스 사용량을 설명해요:
| Container | CPU | Memory |
|---|---|---|
| ECS controller | 5% | 43 MB |
| Control plane | 6% | 35 MB |
| Dataplane | 10% | 87 MB |
ECS의 Consul이 추가하는 컨테이너는 ECS 작업의 최소 CPU 및 메모리 제한보다 훨씬 아래의 리소스를 소비해요. 애플리케이션 작업에 추가 리소스가 필요하면 작업 정의의 memory 및 cpu 설정을 사용해 주세요.
각 구성 요소에 대한 자세한 내용은 아키텍처를 참고해 주세요.