본문 바로가기
사이드 프로젝트/뉴스구독 웹서비스

aws whats'new 뉴스레터 업그레이드3 | Flask웹 aws배포(ELB)

by 카프리썬_ 2021. 5. 12.
728x90
728x90

 

2021.05.12 - aws whats'new 뉴스레터 업그레이드3 | Flask웹 aws배포

 

aws whats'new 뉴스레터 업그레이드3 | Flask웹 aws배포

잠깐, 생각해보니 2개의 프로그램이 시간차를 두고 진행이 되어야 하는 거잖아? 언제든지 구독이메일을 받을수 있도록 웹프로그램은 계속 켜져있고, 그렇게 내 서버에 메일을 저장해두고 있다

pearlluck.tistory.com

다 끝났다고 생각했는데,...다시 돌아가네..

 

다시 이전에 문제점부터 생각해보면 2가지가 있었다.

1. ip주소가 바뀐다.

2. 도메인이 필요하다.

 

그리고 지금까지 한 일은

1. 고정ip를 만들기 위해서 eip를 할당하고, ec2에 연결했다.

2. 가비에서 도메인을 샀다.

3. route53의 호스트존에 가비아에서 발급받은 도메인을 넣었다.

4 .가비아의 네임서버에 route53의 ns레코드를 넣었다.

5. 이제 마지막, a레코드로 도메인에 해당하는 eip를 넣는다. 

 

하지만, 여기에서 ip만으로 어떻게 http프로토콜로 들어오는 5000번 포트를 찾아낼 것이냐! 가 문제였다. 

 

단지 ip주소만으로 찾는것 뿐만 아니라 applicatoin단까지 http와 포트까지 찾아야 해서 elb가 필요한듯 했다.

그리고 elb는 이 자체만으로도 eip의 역할을 하니까, EC2에겐 고정IP처럼 고정적인 이름이 생기는것이다. 

 

그래서 EIP는 삭제하고, elb를 생성해서 EC2와 연결한 뒤, 다시 ROUTE53에 등록하기로 했다.

 

ELB 생성하기

1. alb생성 : 외부용

인터넷연결 외부elb, 그리고 포트는 80. 
가용영역 무조건 2개여야 함

 

트러블슈팅히스토리. 아놔 IP부족해서 서브넷을 못만들잖아..?

pearlluck.tistory.com/432

 

[VPC] 서브넷 추가시, IP주소가 부족하다면? | VPC에 보조CIDR 연결

상황 AWS에 배포하던 중 문제가 생겼다. ELB를 사용하지 않을것 같다고 처음에 계획을 했었지만, 계획과 달리 ELB가 필요했고, 가용영역을 늘려야했다. 그래서 서브넷을 추가해야 했다. 여기에서

pearlluck.tistory.com

 

2. 보안그룹 구성

로드밸런서의 포트는 80이다. 그래서 80까지 인바운드 규칙을 추가한 보안그룹을 연결한다. 

3.라우팅구성 

여기에서 나의 의문점이 해결되었다. 

로드밸런서를 통해서 찾아오면, 이제  http프로토콜의 5000번 포트로 찾아갈 수 있게 라우팅구성을 해준다.

4.대상 등록

여기까지 완성이 되면, ELB DNS이름으로 접속을 하게 되면 웹이 연결될 것이다1

 

트러블슈팅히스토리. 타겟이 unhealthy일떄, elb DNS로 접속해보니가 502 BAD Gateway였다.

알고보니 어플리케이션을 꺼놨따. ec2에 접속해서 내 flask 웹을 켰다. python3 app.py

 

 

도메인연결, ROUTE53

이제 다왔다!! 

이전에 EIP를 넣었는데 이번엔 별칭대상으로 ELB주소가 나온다. 

그래서 A레코드 타입으로 ELB를 새로운 레코드로 넣어주면 된다! 

트러블슈팅히스토리. CNAME이 아니라 A레코드 타입으로 넣는다!!

ELB의 주소를 넣는다고 생각해서 별칭이라고 이해해버렸나보다.

그래서 그런지 A레코드가 아니라 CNAME으로 들어가야하는 줄 알았다.

그래서 조금 헤맸는데 생각해보니 ELB자체가 내부에선 IP가 여러가지로 바뀌니까, IP주소정보이지 않는가! 

대신 실제로 모습이 IP숫자가 아닌 주소라서 이걸 별칭으로 삼았을 뿐이다.

 

CNAME은 도메인의 별명이라서 직접 사용하는 도메인명과 비슷하다.

예를 들면, www.what-news.shop의 별명이라고 aws.what-news.shop를 cname으로 등록하면

등록한 aws.what-news.shop도 사용할 수 있는 것이다.

 

그리고 ROUTE53의 레코드에는 이렇게 저장된다.

 

최종결과 성공! 얏호! 

이렇게 레코드세트까지 등로이 되면 완료이다.

아래의 주소로 들어가면, 내가 개발한 flask웹이 나온다! 

www.what-news.shop

 

AWS News Letter Page

AWS News AWS의 새로운 소식을 구독하세요! 매주 화요일 오전 10시, AWS What's News 소식을 전달해드립니다.

www.what-news.shop

 

 

그러고보니 db는 어떻게 연결이 되려나? 

앞으로가 더 문제일지도.....

 

출처

elb추가해서 route53에 연결하기

velog.io/@zeros0623/%EC%84%9C%EB%B2%84%EC%82%AC%EC%9D%B4%EB%93%9C-HTTPS-%ED%99%98%EA%B2%BD%EC%9C%BC%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-ahk4mcv5a4

 

[Deploy] - 서버사이드 HTTPS 환경으로 배포하기(AWS).

이전에 진행했던 프로젝트중에 webcam을 사용하는 프로젝트가 있었습니다. MediaDevices.getUserMedia()라는 메소드를 사용했는데, 이 함수는 Secure 환경이 요구됩니다. 즉 웹이라면 https 환경이라고 생각

velog.io

 

 

 

728x90
반응형