AWS Fargate와 Docker를 활용한 Auto Scale Serverless 개발하기: AWS Fargate 클러스터 생성 및 작업 생성하기

Jake Yang
6 min readMar 2, 2019

--

안녕하세요, 트남 Jake 입니다.

이번 강좌에서는 전에 업로드 해 두었던 Docker Image를 AWS Fargate를 사용하여 실제 동작하는 서버 Instance로 만들어 보겠습니다.

AWS ECS 클러스터 생성하기

  1. https://ap-northeast-2.console.aws.amazon.com/ecs/home?region=ap-northeast-2#/clusters 로 이동합니다.
  2. “클러스터 생성" 클릭
  3. “네트워킹 전용…AWS Fargate 제공”을 선택 후 “다음 단계"
  4. 클러스터 이름을 입력 후 “생성"

이 때, VPC를 생성하지 않는 이유는, 이전 강좌에서 생성한 VPC를 사용할 것이기 때문입니다. 클러스터를 내가 원하는 VPC에 위치하게 하기 위해서 미리 VPC를 생성해두고 나중에 선택하는 방식을 사용합니다.

자, 그럼 이렇게 클러스터가 생성되었습니다.

서비스 생성하기

위 화면에 있는 서비스 “생성" 버튼을 클릭합니다.

서비스 구성

아래와 같이 입력합니다.

  • FARGATE를 사용하는 서비스이므로 FARGATE를 선택합니다.

EC2에 비해 FARGATE가 갖는 장점은 유연성입니다. EC2는 몇개의 물리적 (또는 가상) 서버를 사용할 것인지 사용자가 정해놓고 그 안에서 서비스를 구성합니다. 근데 이때, 1개의 EC2에 1개의 서비스만 동작할 수 있습니다. 즉, 서비스의 개수를 증가시키려면 EC2를 많이 증설해야 한다는 거죠.

  • 작업 개수는 시작 시 작업의 개수 입니다. HA(High Availability) 구성이 필요하다면 2개 이상이 필수겠죠. (우리도 HA 구성을 할 수 있습니다! 전에 만든 ALB로 말이죠!)

네트워크 구성

아래와 같이 입력합니다.

  • 이전 강좌에서 생성하였던 VPC, Subnet, 보안그룹을 선택합니다.
  • 자동 할당 퍼블릭 IP는 Enabled로 합니다. 이 설정은 Fargate 서비스 인스턴스에 퍼블릭 IP 부여 여부의 설정입니다. 우리 어플리케이션은 외부에서 접속이 가능해야 하기 때문에 Enabled로 합니다.
  • ELB는 Application Load Balancer를 선택 후 이전 강좌에서 만든 ALB를 선택합니다.
  • ct_hello_node:3000 선택 후 “로드 밸런서 추가” 합니다.
  • 로드 밸런싱할 컨테이너 설정합니다. 이 설정은 로드 밸런서가 실제 서비스에 패킷을 어떻게 전달하고 활성화 상태 체크를 어떻게 할지 방법을 세팅합니다. 우리는 이전 강좌에서 ALB 세팅 시 미리 세팅을 해 두었습니다. 미리 생성해둔 “대상 그룹"을 선택합니다.

나머지 설정은 그대로 두고 “다음 단계”로 갑니다.

Auto Scaling 설정

자동 확장 설정 입니다. 우리가 만든 Application이 수용량을 초과할 경우, 자동으로 인스턴스를 확장하도록 설정할 수 있습니다.

“서비스 Auto Scaling을 구성하여 원하는 서비스 개수를 조정합니다.” 를 선택합니다.

  • 최소 작업 개수 : 이 수가 미만으로는 인스턴스 수가 적어질 수 없습니다.
  • 원하는 작업 개수 : 서비스가 처음 시작할 때 동작하는 인스턴스 수 입니다.
  • 최대 작업 개수 : 확장될 최대 인스턴스 수 입니다.
  • 우리는 CPU 사용량을 가지고 Scaling 해볼 것이므로 CpuUsage로 그냥 이름을 써봅니다.
  • 대상 값 : CPU 사용량이 50% 이상일 경우 확장되도록, 50을 넣습니다.

이 설정은 서비스 생성 후에도 수정이 가능하므로, Auto Scaling을 좀 더 정교하게 설정하고 싶다면 이 부분을 좀 더 수정해 보시길 바랍니다.

“다음 단계"를 클릭합니다.

서비스 검토

최종 확인 후 이상이 없다면 “서비스 생성"을 클릭합니다.

서비스 생성 확인하기

서비스가 정상적으로 생성이 되었다면 왼쪽과 같이 PENDING 상태로 작업이 시작됩니다.

잠시 후 작업이 정상적으로 시작 완료 되었다면, 아래와 같이 RUNNING 상태로 변경됩니다.

여러 작업들의 요약 정보는 “작업" 탭에서,

작업들의 추가,삭제,문제발생 등 이벤트 확인은 “이벤트" 탭에서,

정상 동작/업데이트 중인 작업의 개수 및 인스턴스ID 확인은 “배포" 탭에서 확인할 수 있습니다.

배포시 발생하는 문제는 주로 “이벤트" 탭의 로그를 보면 알 수 있습니다. (재시작할 때 마다 트랜젝션으로 묶어서 로깅을 하므로 너무 편리합니다.)

로드 밸런서 연결 확인하기

지금까지 세팅이 정상적으로 완료되었다면, ALB를 통해서 웹서버 Application에 접근할 수 있습니다.

  1. https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#LoadBalancers:sort=loadBalancerName 로 이동합니다.
  2. 이전 강좌에서 생성한 ALB를 선택합니다.
  3. 아래 기본 구성 정보에서 “DNS 이름"에 있는 URL을 복사합니다.

4. 복사한 URL을 웹브라우저에서 열어봅니다.

쨔쟌~ 이제 ALB를 통해서 Application에 접근하여 결과를 얻어올 수 있습니다.

자동 확장 서버를 구성하였습니다! 휴우~

그럼 다음 강좌에서 뵙겠습니다.

--

--