
우리는 저번 포스팅에서 네트워크 구성까지 진행해 보았다. 이제는 ALB
와 Route53을 이용한 인증서 설정을 구현해보자.
로드 밸런서를 사용하는 이유는 뭘까?
앞 포스팅에서 ECS 클러스터 및 서비스를 생성하며 느낄 수 있었겠지만,
AWS ECS Fargate
사용시 아주 쉽게 무중단 배포가 가능해지며 원하는 태스크, 컨테이너, 서비스를 생성할 수 있다.
즉, Scale-Out
이 굉장히 간단하게 구현이 된다는 것을 알 수 있다.
하지만, Scale Out
만 잘돼선 의미가 없다.
결국 다양한 서비스 및 컨테이너가 효율적으로 사용이 되며, 트래픽 분산이 되고, 무중단 배포를 구현하려면
ALB
와 같은 로드 밸런서가 필요하다.
만약, Spring 서버를 Scale-Out
을 했다고 가정하자.
이때, 8080 포트로 2개의 컨테이너가 생성이 될 것이다.
각각의 Public IP를 지정할 수도 있겠지만, 그런 경우 별다른 설정이 없을 경우
클라이언트는 도메인 2개로 접근해야 한다.
만약, 서브 도메인을 설정하거나 NGINX와 같은 리버스 프록시 서버를 두어 처리를 해도
관련된 처리를 진행줘야 한다.
따라서, 위와 같은 문제를 깔끔하게 해결하고 원 포인트 접근이라는 이점이 존재하는 ALB
를 사용하는 것이다.
1. ALB(Application Load Balancer) 생성


- 새 로드 밸런서 생성
- 새 리스너 생성
- 이때, 인증서를 만들어 두었다면
443 포트
및HTTPS
프로토콜을 사용한다.
- 이때, 인증서를 만들어 두었다면
- 새 대상 그룹 생성
- 라우팅할 대상 그룹을 생성하는 것
- ECS에서 자동적으로 생성된 컨테이너를 지정해주기에
위 처럼 생성하면 됨 - 만약, 상태 확인 경로 API를 만들어두었다면 설정해주자
그 뒤, 좀 기다리게 되면 다음과 같은 경로로 접근하면 서비스가 생성이 될 것이다.
- ECS -> 클러스터 -> {생성 클러스터} -> 서비스

이때, 몇 가지 추가작업을 해주면 좋은데 서비스 업데이트 -> 로드 밸런싱 으로 가보자.
그 후, 아래 사진처럼 로드 밸런싱 상태 검사 유예 기간을 150초 정도로 해주자

너무 길면 좋지 않기 때문에 좀 줄여줬다.
마찬가지로, EC2 -> 대상 그룹 -> {생성된 대상 그룹} -> 상태 검사 설정 편집으로 들어가자

기본값과 달리 위처럼 수정해주었는데, 이것도 마찬가지로 상태 검사 시간을 적절히 조정하기 위해서이다.
만약, 이 블로그를 따라 만드신다면 적절히 자신의 생각에 맞게 설정하면 될 것 같다.
자, 여기까지 잘 따라왔다면 이제 ECS가 잘 생성이 되었을 것이다.
하지만, 인증서를 사용한다면 좀 더 설정을 추가로 해주어야 한다.
(물론, 이미 구입한 도메인이 존재해야 한다.)
2. Route53 생성 및 인증서 적용(Route53, ALB)
우선, Route53으로 접속한 뒤 호스팅 영역 -> 호스팅 영역 생성을 클릭한다.
(다시 한번 구입한 도메인이 존재해야 한다.)

퍼블릭 호스팅 영역을 사용하자.

잘 생성했다면 이런식으로, NS와 SOA가 잘 생성되었을 것이다.
여기에 우리가 만든 로드 밸런서를 연동해줘야 하므로, 레코드를 생성을 클릭하자.

그 후, 단순 라우팅을 선택하고 아래와 같이 단순 레코드를 정의하자.

레코드는 A로 지정하고 값/트래픽 라우팅 대상은 ALB
를 선택해준 뒤 서울을 선택하고 아까 생성한 로드 밸런서를 지정해주자.

그럼 위처럼 생성되면 성공이다.
자, 그 다음 인증서를 생성해주어야 한다.
AWS Certificate Manager로 가자.

인증서 요청을 하면 위처럼 퍼블릭 인증서 요청이 선택된다.

본인이 구입한 도메인(호스팅 영역과 같은)을 위에 입력해주도록 하자.
여기서, 서브 도메인 설정을 통해 서브 도메인을 등록할 수도 있는데
관련된 내용은 아래 블로그 주소에 잘 설명되어 있으니 참고하면 될 것 같다.
AWS Route53 서브 도메인 설정
AWS Route53 서브 도메인 연결
velog.io
생성

잘 생성이 되었다면 이제 Route53에서 인증서 관련 레코드를 생성해주어야 한다.
이때, 아주 편리하게도 AWS는 인증서에서 바로 생성할 수 있게 도와준다.
위의 발급된 인증서 ID
를 클릭한 뒤

위 처럼 Route53에서 레코드 생성을 클릭한다.
그 후, 레코드 생성을 누르면 자동으로 생성이 된다.
이제는 마지막으로 ALB에 해당 인증서를 등록해주면 된다.
EC2 -> 로드 밸런서 -> {생성한 로드 밸런서} -> HTTPS: 443 리스너 -> 리스너 편집

여기까지 하면 모든 AWS에서 하는 모든 설정은 종료되었다.
3. 주의할 점
만약, AWS에서 구입한 도메인이 아닌 경우
Route53 설정 단계에서 생성한 호스팅 영역의 네임서버를 구입 도메인 사이트에 등록해주어야 한다.
(이는 적용되는데 시간이 좀 걸린다. 필자의 경우 저녁에 진행했는데 30분이 넘도록 적용이 안돼서 잤고
다음날 아침에 정상 동작 확인되었다.)
마무리
지금까지 ECR + ECS + ALB + Route53 + Spring 구축을 완료했고 다음 포스팅에서는
Github Actions
을 활용하여 ECS 서비스 강제 업데이트를 통한 CI/CD
를 구축할 것이다.
'DevOps > AWS' 카테고리의 다른 글
[AWS] ECR + ECS + ALB + Route53 + Spring + Github Actions - 3 (0) | 2024.08.25 |
---|---|
[AWS] ECR + ECS + ALB + Route53 + Spring + Github Actions - 1 (0) | 2024.08.22 |