본문 바로가기

Final Project (CODESTATES)

재배포 with AWS

아래 글은 배포할 당시에 작성했던 글인데 배포가 원활하게 되지 않아서 그에 대한 기록을 남겨본다.

 

1. freenom에서 산 도메인을 활용했을 때 https 적용이 되지 않았다.

(상황) 프론트 도메인과는 별개로 백에서도 freenom에서 도메인 구입  클라이언트와 연결했었다.

(증상) http:// ec2 ip 주소로 하면 'cannot GET/ '이라고 나오지만, https 로 했을 때에는 'ERR_CONNECTION_REFUSED'로 연결되지 않는다.

(해결) 가비아에서 재구입한 도메인을 연결하자 https로도 도메인으로 접속할 수 있었다.

 

 

 

<코드스테이츠 help-desk 채널에 질문올렸을 때 받은 답변>

 

 

2. 프론트와 백 도메인을 연결했을 때 CORS 에러가 나왔다.

  (상황) 프론트와 백이 각각 다른 계정으로 도메인을 구입 후 연결을 시도했다.

  (증상) 프론트와 백 모두 개별적으로 도메인 테스트를 했을 때는 문제가 없었지만 백의 도메인을 프론트와 연결한 후 주소를 열었을 때 CORS 에러가 발생했다.

  (해결) 프론트를 배포한 팀원 계정을 빌려 DNS검증 후 연결하자 배포 링크가 성공적으로 열렸다.

 

 

3. 배포 주소에 대한 접속이 불안정해서 접속이 되지 않을 때는 502 Bad Gateway 에러가 나왔다.

 (상황) 백 재배포를 할 때, 처음에 사용했던 도메인 주소를 그대로 활용했었다.

 (증상) 어떤 팀원은 배포링크를 문제없이 열 수 있었지만 다른 팀원은 열 수 없는 등 연결 문제가 있었다.

 (해결)  처음에 사용했던 EC2 인스턴스가 활성화되어 있어서 충돌을 일으킨 듯 보였고 해당 인스턴스를 비활성화하자 로딩 속도도 빨라지면서 문제가 즉시 해결되었다.

 


배포는 이 블로그와 함께.

freenom 도메인 생성 및 route53 도메인 등록

freenom 에서 도메인 발급하기

: picanote.tk 

 

route53에서 도메인 네임 등록하기

:퍼블릭 호스팅 생성하면(유형: NS) 네임 서버 리스트가 만들어진다.

 

freenom에서 이 네임 서버 리스트를 도메인에 등록한다.

: 로그인 후 My Domains 선택 후 Manage Domain -> Management Tools 탭 -> Nameservers 클릭

'Use custom nameservers 선택 후 route53에서 생성한 네임 서버들을 각각 입력해준 후 Change Nameservers

 

 

 

ACM 인증서 발급 및 적용하기

ACM 인증서 발급하기

AWS Certificate Manager 에서 Certificate Provisioning 시작하기

'이 인증서에 다른 이름 추가' 해서 와일드카드(*)를 사용한 도메인 인증서도 만든다.

 

인증서 도메인이 본인 소유임을 인증한다.

나는 Route53으로 관리하고 있기 때문에 DNS 검증 선택했다.

(이 전에는 front에 있는 팀원의 인증서를 쓰려고 하니 이메일검증이 잘 이루어지지 않았다. 이메일이 전송되지 않는 문제)

나의 경우 기본 도메인, 와일드카드를 추가한 도메인 두 개에 대해 DNS 검증이 이루어져야 한다.

 

각 도메인을 클릭해서 나오는' Route53에서 레코드 생성' 버튼을 눌러서 생성해준다.

이렇게하면 ACM 인증서 발급이 완료되는데 나의 경우 DNS 검증을 하자 5분도 채 안 걸려서 Issued 상태가 되었다!!

 

 

로드밸런서 생성하기 (ACM 인증서 EC2에 적용) 

aws EC2 대시보드에서 로드밸런서 메뉴를 클릭한다.

HTTP, HTTPS 트래픽에 대한 로드 밸런싱에 유리한 Application Load Balancer를 선택한다.

  • (기본) 로드 밸런서 이름을 입력하고 ip주소 유형은 ipv4로 한다.
  • (리스너) 리스너 그룹에 로드 밸런서 프로토콜을 HTTP, HTTPS 모두 추가한다.
  • (가용 영역) 나는 가용 영역 부분 모두에 체크했다.
  • (보안 설정) ACM에서 인증서 선택(권장)을 선택한 후 미리 생성해 두었던 ACM 인증서를 찾아서 선택한다.
  • (보안 그룹) 새로 만들거나 기존 보안 그룹을 선택할 수 있는데 나는 기존 보안 그룹을 선택했다.
  • (라우팅 구성) 로드 밸런서가 EC2인스턴스와 통신할 것이므로 대상 유형을 인스턴스, 프로토콜은 HTTP로 한다.
  • (대상 등록) 로드 밸런싱을 수행할 인스턴스를 지정한다. 인스턴스 리스트에서 이 도메인과 연관된 인스턴스에 체크한 뒤 '등록된 항목에 추가' 버튼을 눌러서 등록한다.

 

몇 분 지난 후 '로드 밸런싱' 탭에서 생성한 로드 밸런서의 상태가 'active'가 되는지 확인하면 된다.

 

 

Route53에 로드 밸런서 연결하기

Route53에서 기존 도메인에 연결된 호스팅 대상 서버의 ip주소를 로드 밸런서의 ip로 설정해야 한다.

 

Route53 -> Hosted zone에서 연결할 도메인을 클릭한다.

나의 경우 A레코드 규칙이 없었기 때문에 레코드 생성하기를 했다.

  • record name은 비워두면 기본 도메인 네임으로 된다고 하는데 우리는 api라고 넣기로 했다.
  • record type: A
  • value에는 ec2 public ip 주소를 넣어주었고
  • alias를 활성화시키면 'route traffic to' 라는 부분이 나온다!
    • 여기에서 Alias to Application and classic Load Balancer를 선택하면 다음 리전을 선택할 수 있다.
    • 내가 있는 Asia Pacific(Seoul)로 선택하면 내가 생성한 로드 밸런서를 선택할 수 있게 된다!!

이렇게 저장하면 모든 과정이 끝났다.

레코드 세트 규칙이 반영되는 데 최대 하루가 걸린다고 하니 기다려 봐야할 것 같다.