ECS Fargate를 이용한 서버리스 아키텍쳐 구축
- ECS의 Fargate는 서버(EC2 Instance)를 관리할 필요없이 컨테이너를 실행할 수 있도록 돕는 컴퓨팅 엔진이다
이를 이용해 서버리스 아키텍쳐를 구축한다
1. Fargate Cluster 생성
1) ECS 서비스 좌측의 클러스터 탭을클릭한 뒤 클러스터 생성을 누른다
2) AWS Fargate을 제공하는 네트워킹 전용을 선택
3) 원하는 클러스터 이름 입력후 생성을 클릭(DemoCluster)
2. Repository 생성
- docker hub의 repository를 그대로 사용할 수 있지만
사내의 사적인 repository 구성시 사용할 수 있으며 네트워크 지연시간을 줄일 수 있다.
리포지토리 이름 입력 후 생성 버튼 클릭
3. aws cli 를 이용해 repository에 이미지 업로드
1. awscli 구성
- https://galid1.tistory.com/444
2. 명령어를 이용해 repository에 업로드
1) docker repository 생성
2) repository 생성 후 설정
- docker repository 를 생성한뒤 나타나는 메시지의 우측 상단의 "푸시 명령 보기"를 클릭한다
- aws에 생성한 repository에 접근할 수 있는 로그인 방법을 출력하기 위해 아래의 명령어를 입력한다
- 입력 후 나타나는 전체 메시지를 복사하여 입력하면 aws repository에 로그인이 된다
- 생성한 repository로 업로드하기 위해 설명에 나타나는 대로 tag를 변경 (태그에 꼭 생성한 repository를 가리키도록 해야함)
또한 아래 그림의 앞쪽의 빨간 네모칸에는 자신이 다운로드한 이미지를 지정하도록 한다
4. 작업 정의
- 컨테이너의 개수, 컨테이너가 사용할 리소스 , 컨테이너간 연결방식, 컨테이너가 사용할 호스트 포트 등의 정보를 기입
- 사용될 컨테이너를 추가 및 정의
1) 작업정의 클릭 후 새 작업 정의 생성 클릭
2) 관리형 인프라 Fargate 선택
3) 적업의 정의
작업 역할 : 컨테이너가 aws 기능 이용시 이용될 역할(IAM ROLE)
4) 작업 실행 IAM 역할
- 컨테이너 이미지를 가져오거나 CloudWatch에 로그게시시 사용될 역할
5) 작업 크기
- 컨테이너가 사용할 고정된 자원의 크기
6) 작업에 사용될 컨테이너를 추가하기 위해 컨테이너 추가를 클릭
*컨테이너에 사용될 이미지는 Repository 생성 후 업로드한 이미지를 사용한다
- ECS repository 의 업로드했던 이미지의 URI를 복사한다
다시 컨테이너 설정으로 돌아와 이미지 에는 복사한 이미지의 URI를 기입한다
포트 매핑에는 컨테이너가 오픈할 포트를 입력한다(nginx 가 80포트에서 동작중이므로)
5. 서비스 생성
- 위에서 생성한 작업을 서비스로써 가동한다
1) 서비스를 생성하기 위해 좌측의 클러스터 탭을 클릭한뒤
앞서 생성했던 클러스터를 클릭한다
2) 서비스, 작업 등등 여러 형태로 컨테이너를 실행할 수 있다
서비스를 클릭하여 서비스를 생성한다.
3) 서비스 구성
시작 유형 : FARGATE (관리형)
작업 정의 : 앞서 생성한 적업 선택
작업 개수 : 로드밸런서를 통해 유지될 작업의 개수를 의미
4) 네트워크 구성
- 컨테이너들이 배치될 네트워크를 적절하게 구성한다
5) ELB
- 컨테이너로 부하분산하여 트래픽을 전달할 ELB를 구성
ELB 유형 : Application Load Balancer 선택
ELB 이름 : 위의 네트워크 구성에 트래픽을 전달할 수 있는 ELB 선택
미리 생성되어있던 것이 없다면 따로 생성 후 새로고침 버튼을 눌러 선택할 수 있다.
ELB가 로드밸런싱할 대상 컨테이너를 생성하기 위해 ELB에 추가를 클릭한다
아래 작업의 결과로 Target Group과 , ELB에 리스너로 위 컨테이너가 등록이 된다
리스너 포트 : 대상 그룹이 트래픽을 받기 위한 포트
사용자가 8080으로 요청시 niginx container로 트래픽 전달
6) AutoScaling (선택사항)
- 그냥 지나간다
6. 확인
1. 서비스가 정상적인지 확인
- 좌측 클러스터 탭을 클릭한 뒤 서비스를 생성한 클러스터를 클릭한다
아래와 같이 생성한 서비스의 상태가 ACTIVE이면 서비스가 가능한 상태이다
2. 로드밸런서 DNS로 요청
- 로드밸런서의 :8080 포트로 요청
'AWS > Computing' 카테고리의 다른 글
AWS - ECS 란? - 수정중 (0) | 2019.02.02 |
---|---|
AWS - EC2 인스턴스의 Storage(Root Device, InstanceStore, EBS) (0) | 2019.01.17 |
AWS - API Gateway, Lambda 를 이용한 API 요청에 따른 서로다른 문자 보내기 (0) | 2019.01.13 |
AWS - ElasticBeanStalk 이용하여 WordPress 배포 -수정중 (0) | 2019.01.09 |
AWS - ElasticBeanstalk 란? (0) | 2019.01.09 |