하고자 하는 것은
1. nginx없이 load balancer로 port forwarding 하기
2. 도메인은 가비아 사용하며
3. 서브도메인 사용할거임
4. acm 으로 ssl 인증서 적용할거임
ALB(Application Load Balancer)를 사용하여 포트 80 및 443에서 트래픽을 전달할 수 있습니다. ALB는 고급 요청 라우팅 기능을 기반으로 여러 대상에 트래픽을 분산할 수 있는 레이어 7 로드 밸런서입니다. 또한 HTTPS 트래픽에 대한 SSL 종료를 처리할 수도 있습니다.
포트 포워딩에 ALB를 사용하는 방법에 대한 개요는 다음과 같습니다.
VPC에서 ALB를 생성하고 포트 80 및 443에 대한 리스너 규칙으로 구성합니다. 요청이 전달될 대상 그룹을 지정할 수 있습니다.Docker 컨테이너의 IP 주소로 대상 그룹을 생성합니다.대상 그룹에 대상(IP 주소)을 등록합니다.ALB의 DNS 이름을 가리키도록 DNS 레코드를 업데이트합니다.
이 설정을 통해 ALB는 포트 80 및 443에서 들어오는 요청을 대상 그룹에 있는 Docker 컨테이너의 IP 주소로 전달합니다.
라고 한다.
아무것도 모르겠는데 일단 시작한다.
가보자고~!
SSL 인증서 발급 >>> Route53 레코드 생성 >>> 로드밸런서 등록 및 설정 >>> Route53 레코드 설정 >>> 로드밸런서 HTTP 리디렉션 설정
우선 나는 서브도메인으로 할거기때문에, 도메인 설정부터 하는 사람은 내 글과 맞지 않음을 말해드린다.
0-1. 가비아에서 서브도메인 설정하기
- 뒤에 점을 붙여야한다!!
- CNAME으로 서브도메인을 입력한다.(ex. www 같은거)
Cname 선택하고, 서브도메인명 입력하고, EB도메인넣고, .붙이기 이거만 가비아에서 해주면 된다.
서브도메인은 EB에서 확인할 수 있다. 아래 저거 복붙해서 위처럼 가비아에 넣으면 된다.
0-2. acm 생성하기
*.test.com 처럼 가비아에 입력한 도메인에 대한 ssl 인증서를 신청한다.
서브도메인명을 일일히 다 넣고 싶으면 이 인증서에 대한 다른 이름 추가를 누른다.
1. ec2로 들어가서 로드밸런싱을 입력한다
리스너를 클릭하고 편집을 누른다.
https를 클릭하고 ssl 설정을 변경한다.
3.
route53에 들어간다.
레코드 생성을 누르고 가비아에 넣었던 서브도메인과 EB의 도메인값을 똑같이 넣는다.
다만 .은 안넣어도 된다! 그냥 EB 도메인값 복붙~
제대로 되었는지 테스트 해보자.
문제 1)
서브 도메인 설정은 되었는데, https ssl 인증서 설정이 안되었다.
우선 allowed host에 subdomain 설정을 넣어주자.
코드 수정이 다 끝났으면,
git add .
git commit -m "fix : allowed host"
eb deploy
코드 사항 바뀔때마다 하는거 잊지 말기~!
우선 도메인 바꾸는 건 성공했다.
문제2)
다음은 ssl 설정하는 방법을 찾아보자.
443 포트를 열어주고 acm 까지 등록해줬는데 왜 https가 안먹을까?
해결방법 1)
아차차~~ EC2 보안그룹에서 HTTPS 설정을 추가한다.
이래도 안되네...
해결방법 2)
인증서가 여러개였어서 제대로 돌아가고 있는 인증서를 선택해야한다.
acm에서 제대로 돌아가고 있는 인증서가 뭐인지 확인하고 선택하도록 한다.
API가 테스트되는지 확인한다.
성공했다.
여태까지 내가 사용한 것을 다시 한 번 복귀해보겠다.
Django, Gunicorn, Docker, Elastic Beanstalk, Load Balancer, ACM, 가비아, Route53 이다.
참고로 나는 nginx, docker-compose 안썼다.
그리고 도메인은 서브도메인을 사용했다~
nginx 안쓰고 포트포워딩을 load balancer로만 해보는 건 처음이었는데 재밌었당 ㅋㅋㅋ
다음 챕터에서는 eb deploy 처럼 배포하는 방식 말고 github action을 이용해서 배포하는 방법으로 바꿔보고자 한다.
'AWS > ElasticBeanstalk' 카테고리의 다른 글
AWS Elastic Beanstalk - (6) (0) | 2023.02.20 |
---|---|
AWS Elastic Beanstalk - (5) (0) | 2023.02.19 |
AWS Elastic Beanstalk - (4) (0) | 2023.02.18 |
AWS Elastic Beanstalk - (2) (0) | 2023.02.15 |
AWS Elastic Beanstalk - (1) (0) | 2023.02.14 |