본문 바로가기

Programming/오류 일지

별개의 AWS 계정으로 서브도메인 설정하기

사이드 프로젝트에서 각각의 AWS 계정으로 프론트엔드, 백엔드 서버를 따로 구축했는데, 이때 Route53을 사용한 서브도메인 설정에서 큰 오류를 범했었다.

 

 

 

문제 상황

가비아와 AWS Route53을 통해 도메인을 등록, 연결한 후 서버가 불안정해 검색해보니 오류 원인은 DNS 설정 또는 프리티어 RAM 메모리 부족으로 좁혀졌다. EC2 서버 로그 확인 시 CPU 사용률에 문제가 없었지만 혹시 몰라 메모리 관련 설정도 했다. 하지만 서버 끊김은 해결되지 않았고 결국 DNS 설정을 다시 살펴보기로 했다.

 

 

 

 

오류 원인 파악

처음 서브도메인을 지정하는 방법을 찾아봤을 때, 하나의 AWS 계정으로 도메인, 서브도메인을 설정하는 블로그들을 참고한 것이 오류의 발단이 되었다.

 

해당 정보를 참고했던 초기에는 프론트, 백 모두가 domain.com을 호스팅 영역으로 지정했고, 서브도메인 a레코드를 생성했다.

그리고 각 호스팅 영역에서 생성된 네임 서버들을 가비아에 추가해 가비아에는 총 8개의 네임서버(프론트, 백)가 입력되었다.

 

당시 설정한 백엔드 호스팅 영역 : 도메인.com

 

하지만 우리 프로젝트에서는 각자의 계정에서 프론트가 domain.com을, 백이 api.domain.com을 따로 사용한다.

AWS Route53 호스팅 영역은 도메인 레코드들을 관리(트래픽 라우팅)하는 컨테이너이기 때문에, 프론트엔드와 백엔드가 호스팅 영역을 각각의 도메인(domain.com, api.domain.com)으로 구체적으로 지정해야 했다.

 

 

 

오류 해결

새로 설정한 백엔드 호스팅 영역 : api.도메인.com

문제 확인 후 백엔드 호스팅 영역을 api.domain.com으로 새로 생성했다.

이때 생성된 네개의 네임 서버는 프론트엔드의 서브도메인 레코드(NS타입) 값으로 입력한다. (기존 가비아에 입력했던 백엔드 네임서버 4개는 삭제한다.)

그리고 A 레코드를 추가해 EC2 로드밸런서와 연결한 후, 서버를 확인하니 원활히 동작했다!

 

 

 

 

하위 도메인 동작 방식

1. 브라우저에서 api.domain.com으로 접근 시 로컬네임서버는 네임서버 정보를 응답받음
2. 해당 정보를 기반으로 로컬네임서버는 domain.com의 네임서버에 api.domain.com에 대한 도메인 질의를 보냄
3. domain.com의 네임서버는 api.domain.com에 대한 네임서버 정보를 응답함 (NS 레코드에 추가한 값)
4. 로컬네임서버는 api.domain.com의 호스팅 영역에 접근, 해당 도메인의 A 레코드를 통해 EC2 서버 IP 정보를 응답받음
5. 로컬네임서버는 응답받은 IP 정보를 브라우저에 전달함
6. 브라우저는 해당 IP의 서버로 접속함

 

 

 

 

호스팅 영역을 설정한다는 것에 대한 의미나 하위 도메인 동작 방식에 대해 제대로 파악하지 못하고 나와 다른 조건의 레퍼런스를 따라하며 설정해 발생한 오류였다. 내가 어떤 것을 하고 있는지 정확히 이해하며 설정을 해나가는 것이 중요함을 다시 한번 깨달은 경험이었다.

 

 

 

 

참고 사이트: