Weitere ähnliche Inhalte Ähnlich wie 플레이오토 ECS 사용사례 (20) 플레이오토 ECS 사용사례22. ECS 구성요소
•Container Instance (EC2)
•Task ( 어플리케이션 컨테이너의 집합 )
•Task definition ( 컨테이너 집합의 사전 명세서 )
•Service ( task 갯수 유지 )
•Cluster ( Container Instance 집합 )
28. 1. ECS agent
•
•ecs.config 파일을 ECS agent 환경변수로 담아준다
•https://docs.aws.amazon.com/ko_kr/AmazonECS/
latest/developerguide/ecs-agent-config.html
•https://github.com/aws/amazon-ecs-agent
29. 1. ECS agent
•클러스터링의 핵심
•해당 설정을 미리 잘해두는게 중요함
•ECS의 지원기능을 파악하기 쉽다
•컨테이너 관리 및 옵션들을 제공해주는 기능으로 판단하면 됨
33. 2. 배치 제약과 전략
•제약 (task)
•노드에 대한 조건을 제시할 수 있다.
•Ex) t 타입에만 실행하라, m 타입에서는 실행하지 마라
•전략 (service)
•노드에 대한 조건보다 더 추상적(spread, random,
binpack)
•Ex) az에 골고루, node 하나씩 가득 채우면서 진행하라
37. 2. Fargate
•장점
•배치와 클러스터링의 관리 요소가 없어짐
•오토스케일링의 관리가 훨씬 쉽고 빠르다 (인스턴스 부팅 시간 필요
x)
•단점
•EC2의 비용 관리 옵션 사용x
•컨테이너 안에 들어가서 테스트 불가
•관리형이라서 log나 volume을 자유롭게 가져가지 못함
40. 3. 서비스 디스커버리
•ENI 는 AWS 에서 사용하는 가상 네트워크 인터페이스
•EC2 하나에 한개의 ENI가 할당되는게 일반적
•이것을 task(컨테이너집합)에 할당하는것
•EC2와 ENI의 limit 을 고려
47. 1. ECS agent 종료 이슈
•어느 순간 agent 연결상태가 fail 됨…
•해당 컨테이너 인스턴스 통제가 안됨
•알고보니 agent 가 죽었다.
•그 이유는 과도한 컨테이너 밀집
48. 1. ECS agent 종료 이슈
•ecs agent config를 통해 작업 메모리 할당이 안되게 미리 총
메모리 양을 줄일 수 있다.
•ECS_RESERVED_MEMORY
•시스템 메모리까지 고려해서 넉넉히 확보해 두자
49. 2. 컨테이너 오류 추적
•컨테이너가 갑자기 죽는 경우 그 사실을 인지하는 과정이 꽤
오래 걸림.
•로그나 event를 계속 내가 감시할 수가 없음.
•그리고 죽은 task의 로그를 elasticsearch에서 찾기가 어렵다.
51. 2. 컨테이너 오류 추적
•ECS agent가 api를 제공함
•/v1/metadata
•/v1/tasks
•https://docs.aws.amazon.com/ko_kr/AmazonECS/
latest/developerguide/ecs-agent-introspection.html
• task elasticsearch log
52. 3. thin pool 부족
•특정 호스트에서 task가 뜨질 않음
•사유를 보면 image pull에서 500 에러로 실패
•실제로 해보면 디스크 공간 부족처럼 에러가 뜨는데
•디스크 공간이 부족하지 않음(df -h)
54. 3. thin pool 부족
•Kernal parameter로 dm.min_free_space 값 조정
•전체 디스크 공간을 키움
•
55. 3. thin pool 부족
•ECS config 에 두가지 변수가 있다.
•ECS_IMAGE_CLEANUP_INTERVAL
•ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
•이미지와 컨테이너 정리를 해주자
62. 3. 마이그레이션의 용이성
•새 EC2 인스턴스를 클러스터에 추가해준다
•기존 EC2를 한대씩 내리면서 task를 내렸다 올렸다를 반복한
다.
•마지막에 고른 분포를 위해 재배포 한번 해준다.