개요
지난 포스팅에서 하나의 로드밸런서로 여러 서브도메인, 서비스를 운영하는 것을 GCP를 통해 구축해보았다. (GCP를 사용하지 않더라도 앞의 글을 읽는 것을 추천한다.)
이번에는 AWS의 로드밸런서와 라우팅 설정을 통해서 하나의 LB로 서브도메인을 구분하는 것을 세팅해보도록 한다.
AWS로 구축할 웹사이트는 user와 admin이 구별되어있다.
- user-main.example.com
- admin-main.example.com
이 두 가지 서브도메인을 하나의 LB에 설정해보도록 하자.
ALB 설정
먼저 Application 로드밸런서를 만들어준다.
기본적으로 전달하고자 하는 대상그룹으로 리스너를 설정해준다.
두 가지 서브도메인 user, admin 중 admin을 기본 서버로 설정하여, 처음 LB를 만들면 admin에 대한 작업과 규칙이 정의되어 있다.
리스너와 대상규칙
리스너(Listner)
클라이언트로부터 트래픽을 수신하기 위해 설정하는 프로토콜 및 포트다. Application LB을 통해 웹 서비스를 운영하기 때문에 HTTP와 80 포트를 기본적으로 설정한다. 추가적으로 HTTPS 요청을 받기 위해 HTTPS와 443 포트를 설정해준다.
기본적으로 AWS의 ALB에서는 다음과 같은 프토토콜, 포트를 지원한다.
- 프로토콜: HTTP, HTTPS
- 포트: 1-65535
대상규칙(Target Group)
대상규칙은 리스너를 통해 들어온 트래픽을 EC2 인스턴스와 같은 대상으로 라우팅하는 것이다.
➡️ 이 두 가지 개념을 활용해서 하나의 LB로 여러 서브 도메인을 운영할 수 있게 된다.
리스너 규칙에 서브 도메인 추가
위 이미지에서 보이는 HTTP:80 리스너에 규칙을 추가해준다.
리스너 규칙은 다양한 조건을 추가할 수 있는데, 서브 도메인을 활용하여 트래픽을 분산할 것이므로 호스트 헤더를 정의한다.
이때, 추가하는 규칙은 user에 대한 것이다! 앞서 admin을 default로 가져가기로 정의했기 때문이다. 만약 여러 서브도메인을 설정하고자 한다면 default 서브 도메인을 하나 정하고 이 과정을 각각의 서브 도메인에 반복 설정하면 된다.
마지막으로 위에서 추가한 규칙에 어떤 작업을 부여할 것인지 정의한다.
이렇게 리스너 규칙에 기본값으로는 admin, 추가된 조건으로는 HTTP 호스트 헤더가 user-main.example.com 인 대상을 user-tg가 있음을 확인할 수 있다.
➡️ 리스너에 HTTP:80 뿐만 아니라 HTTPS:443을 만들어주었기에 HTTPS도 이 과정을 똑같이 진행해준다!
Route 53 서브 도메인 설정 및 로드 밸런서 연결하기
이렇게 설정된 로드 밸런서를 각각의 도메인과 연결해준다. 이는 AWS의 Route53을 통해 진행한다.
이 과정은 가비아에서 도메인을 구매와 기본 설정이 되어있는 상태에서 진행할 수 있다.
참고로 로드밸런서와 서브도메인의 연결은 레코드 생성의 별칭 - 대상으로 할 수 있다.
결과 확인
이후 서브도메인으로 각각의 서비스에 접근해보면 하나의 LB를 통해 접근이 가능한 것을 확인할 수 있다!!
route53에 정의한 후 시간이 걸리니 잘 안되는 경우엔 좀 더 기다려보자..!
회사에서 세운 가설을 증명하고, 이를 프로젝트에 활용한 좋은 경험이었다. 또한 AWS, GCP를 모두 비교하면서 사용할 수 있어서 좋았다. 👍
'DevOps > DevOps' 카테고리의 다른 글
[DevOps] cloudtype으로 DB 호스팅 비용 줄이기 (0) | 2024.08.09 |
---|---|
[DevOps] 멀티모듈 프로젝트 CI/CD 적용 - 설계 구상 편 (3) | 2024.07.22 |
[DevOps] GCP 하나의 LB로 여러 서비스 운영하기 (1) | 2024.05.13 |
[AWS] public & private subnet 분리로 서버 운영하기 (2) | 2024.04.07 |
[AWS] AWS CLI 설정 및 활용하기 (0) | 2024.03.24 |