728x90
ALB 적용해서 ECS 생성 및 설정
이전 포스트에서 생성한 ALB를 ECS 로드 밸런서에 적용하면서 ECS 배포까지 진행해 보자!
1. ALB를 써서 ECS 클러스터를 생성해 보자
1-1. 클러스터 생성으로 들어간다.
- 클러스터 이름을 작성하면 기본 네임스페이스는 자동으로 작성된다.
1-2. 인프라 설정을 한다.
- 태스크 정의를 EC2로 생성했기 때문에 클러스터 인프라도 Amazon EC2 인스턴스를 선택한다.
- 운영 체제/아키텍처에서 Amazon Linux 2023과 Amazon Linux 2중 아무거나 선택해도 큰 차이는 없다. 그러나 안정성과 장기 지원이 필요하다면 Amazon Linux 2가 더 적합할 수 있다.
- EC2 인스턴스 유형은 각자 프로젝트에 맞는 유형을 선택하면 된다.
- 원하는 용량은 기본 최소 0, 최대 5로 설정되어 있었지만 나는 스케일 업/다운이 필요하지 않아서 최소 1, 최대 1로 설정해 줬다.
1-3. 인스턴스의 네트워크를 설정한다.
- VPC는 기본값으로 설정했다.
- 보안 그룹도 기본값으로 설정했다.
1-4. 전부 설정이 완료되면 하단의 [생성]을 클릭한다.
2. ECS의 서비스를 생성한다.
2-1. 생성된 클러스터 개요로 들어와서 하단의 '서비스' 탭에서 [생성] 버튼을 누른다.
2-2. '환경'을 설정한다.
- '컴퓨팅 옵션'을 '시작 유형'으로 선택하고 EC2를 선택한다.
2-3. '배포 구성'을 설정한다.
- 애플리케이션 유형은 '서비스'를 선택한다.
- 패밀리는 이전에 생성한 태스크 정의를 선택한다. 기존에 생성한 태스크 정의가 없다면 파란색 '태스크 정의' 버튼을 클릭한다.
- (태스크 정의하는 방법을 모르겠다면 아래 링크를 통해 확인할 수 있다.)
ECS 생성4 - ECS 생성 및 설정 (w/o ALB)
- 서비스 이름을 작성해 준다.
- 그 외의 입력값은 기본값으로 설정했다.
2-4. 로드 밸런싱을 설정한다.
- (로드 밸런스를 생성한 게 없다면 아래 링크를 통해 생성해 보자.)
- 로드 밸런서 유형은 'Application Load Balancer'를 선택한다.
- 로드 밸런서는 이전에 생성했던 로드 밸런서를 선택한다.
- 상태 검사 유예 기간은 300초로 설정했다.
- 로드 밸런싱할 컨테이너 선택에서 아마 80:80, 8081:8081 총 두개가 나올 텐데 여기서 8081:8081을 선택해 준다.
- 8081 포트를 선택한 이유는, 도커 컨테이너 내부에서 실행되는 톰캣 서버가 해당 포트를 사용하고 있기 때문이다.
- 이 설정을 통해 외부에서 8081 포트로 접속하면, 자동으로 도커 컨테이너 내의 톰캣 서버와 연결될 수 있도록 한 것이다.
- 리스너와 대상 그룹 모두 기존 선택지를 선택한다.
- (ALB를 생성할 때 [대상 그룹 생성 > 기본 구성 > 대상 유형 > IP 주소]를 선택했다면 아래 '대상 그룹 이름' 항목에서 선택이 안 되는 이슈가 있었다. 이 부분에 대해서는 조금 더 조사가 필요하다....)
2-5. 하단의 “생성” 버튼을 클릭하면 아래와 같이 창이 이동한다.
- 여기서는 배포가 완료되었다고 나오지만 처음에는 배포 중이라는 글귀가 나올 것이다.
2-6. 스크롤을 내려서 하단의 “서비스”와 “테스크” 목록을 확인한다.
2-7. 서비스 이름을 클릭해서 상세 보기를 한다.
- '태스크' 탭을 클릭하고 하단의 컨테이너를 확인할 수 있다.
2-8. 이제 EC2에서 로드 밸런스 메뉴로 이동한다. 그리고 'DNS 이름' 항목에 있는 주소를 복사한다.
2-9. "복사한 DNS 주소:포트" 하고 테스트할 API 주소에 접속하면 잘 접속되는 모습을 볼 수 있다.
2-10. 이제 ALB에 들어가서 잘 돌아갔는지 확인한다.
- 로드 밸런서 목록 화면에서 이름을 클릭해서 들어가고 스크롤을 내리면 '리스너 및 규칙' 탭이 보인다.
- 여기서 대상 그룹으로 전달 아래 대상 그룹을 클릭해 이동한다.
2-11. 대상 그룹의 상세 화면에서 '정상 1'이 뜬 모습을 확인할 수 있다.
- 하단의 내용을 보면 8081 포트에 Healthy라고 나왔는데 그러면 성공한 것이다.
- 80 포트는 도커로 띄운 게 없어서 Unhealthy가 나온 것 같다.
3. 마무리
이번 포스팅까진 CI/CD는 적용하지 않고 그냥 간단하게 ECR에서 도커 이미지를 이용해 서비스 배포까지만 진행한 단계이다. 이제 이후 포스팅에선 AWS CodePipeline을 이용해서 완전한 CI/CD를 적용하는 방법에 대해서 작성해야겠다.
'AWS' 카테고리의 다른 글
[AWS] CodePipeline을 이용한 CI/CD (2) - 빌드 오류 해결 (S3 접근 권한) (2) | 2023.10.31 |
---|---|
[AWS] CodePipeline을 이용한 CI/CD (1) - 파이프 라인 생성 (0) | 2023.10.31 |
[AWS] ECS 생성4 - ECS 생성 및 설정 (w/o ALB) (0) | 2023.10.30 |
[AWS] ECS 생성3 - ALB 세팅하기 (0) | 2023.10.30 |
[AWS] ECS 생성2 - ECR 생성하기 (M1 Mac 적용) - exec /usr/bin/java: exec format error 에러 해결 (1) | 2023.10.30 |