개요
지난 포스팅에서 하나의 로드밸런서로 여러 서브도메인, 서비스를 운영하는 것을 GCP를 통해 구축해보았다. (GCP를 사용하지 않더라도 앞의 글을 읽는 것을 추천한다.)
[DevOps] 하나의 LB로 여러 서비스 운영하기
개요로드 밸런서는 운영관리 입장에서 상당히 많은 편의성을 제공한다.그래서 그런지 규모가 작은 프로젝트 즉, "부하 분산"이 필요없는 프로젝트임에도 불구하고 정말 많은 사람들이 로드 밸
cobinding.tistory.com
이번에는 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 > AWS' 카테고리의 다른 글
[AWS] CloudWatch 비용 숨바꼭질 : per metric-month (0) | 2024.12.19 |
---|---|
[AWS] public & private subnet 분리로 서버 운영하기 (2) | 2024.04.07 |
[AWS] AWS CLI 설정 및 활용하기 (0) | 2024.03.24 |
[AWS] Serverless에 대해서 & AWS LAMBDA (2) | 2023.03.29 |