AWS 로드밸런서로 서브도메인 설정하기

NCOOKIE·2024년 2월 4일
0

AWS 공짜로 사용하기

목록 보기
10/11
post-custom-banner

비용 청구

들어가며

이전 글에서 스프링 서버를 배포하던 EC2 인스턴스에 리액트 서버도 함께 돌리기 위한 작업을 했었다. 그리고 한달이 지난 후, 약 25,000원($19)이 청구되었다.

원인

웹 페이지 도메인 주소를 리액트 서버에 연결하기 위해서 로드밸런서 하나를 추가한 것이 원인이었다. AWS 프리티어에서 로드밸런서는 월 750시간을 무료로 제공하기 때문에 하나를 풀로 돌려도 비용이 발생하지 않는다. 그러나 나는 두 개를 사용했기 때문에 약 1500시간으로 기본 제공 시간을 초과해 약 19달러의 요금이 부과된 것이다. (이 부분을 제대로 생각해야 했는데 안일하게 이를 그대로 적용하고, 예상 청구 비용도 제대로 확인하지 못했다.)

해결

어쨌든 간에 비용은 청구되었고, 월마다 2만 5천원을 지불할 생각이 아니라면 사용하는 로드밸런서를 하나로 줄여야했다.

구조

기존에는 도메인 하나당 로드밸런서를 하나씩 연결하고, 그 로드밸런서에서 각각 API 서버와 리액트 서버의 포트를 할당한 대상 그룹(target group)을 연결해서 사용 중이었다. 방법을 찾아보니 하나의 로드밸런서에서 조건을 설정해 상황에 따라 대상 그룹을 연결할 수 있었다.

api.iimad.com은 스프링으로 구현한 API 서버에, iimad.com으로 접속하면 리액트 서버로 연결해 웹 페이지를 제공할 수 있도록 하려고 한다.

AWS 설정

대상 그룹

먼저 각각의 서버와 연결할 대상 그룹을 설정해준다. 나는 API 서버와 리액트 서버의 포트인 8080과 3000 포트로 만들었다.

로드밸런서

HTTPS와 HTTP 통신 모두 받을 것이므로 443, 80번 포트를 리스너로 추가한다.

리스너에 각각 규칙을 추가한다. 특정 도메인으로 접속했을 때 사용할 대상 그룹을 설정해줄 수 있다. 의도에 따라 원하는 URL로 리디렉션 시키거나 고정 응답을 반환하도록 할 수 있다. 이 부분은 프로그램 상에서 어느 정도 구현할 수 있긴하지만 다음에 사용할 수도 있을 것 같다.

도메인에 따라 API 서버 또는 리액트 서버에 연결되길 원하므로 규칙은 총 4개를 만든다. (HTTP에 2개, HTTPS에 2개)

Route 53 호스팅 영역

먼저 기존에 생성했던 로드밸런서 중 하나는 삭제한다. 로드밸런서 2개 이상부터는 프리티어에서 요금이 부과된다. 보통 삭제가 정상적으로 이루어졌다면 Route 53의 호스팅 영역에서는 값/트래픽 라우팅 대상으로 하나밖에 남지 않은 로드밸런서로 설정되었을 것이다.

이렇게 하면 기존 동작과 마찬가지로 도메인에 따라 다른 서버에 연결되는 것을 확인할 수 있다!

참고

profile
일단 해보자
post-custom-banner

3개의 댓글

comment-user-thumbnail
2024년 6월 2일

안녕하세요 보다가 궁금한 점이 생겨 질문 남깁니다!
대상 그룹 설정에서 8080포트와 3000포트에 대한 설정을 하셨다고 하셨는데
로드 밸런서에 보이는 http-target-group이라는 대상 그룹이 서버 인스턴스로 향하는 게 맞을까요?

1개의 답글