Problem-Solving

AWS : ELB를 이용한 HTTPS 구현

WebDevLee 2022. 3. 28. 17:51

< 문제상황 >

1. AWS의 Route53에서 도메인 구입
2. AWS Certificate Manager(ACM)을 이용해 인증서 발급 후 도메인과 연결
3. EC2콘솔에서 로드밸런서 설정
=> 이후 서버에 접속을 해보니 HTTPS 연결은 잘 되었지만, 503에러 출력과 함께 오류 발생

 

: 서버의 플로우가 Browser(Client) <- HTTPS -> ELB <- HTTP -> EC2 Server 이기 때문에 HTTPS연결이 잘 되었다는 것은 ELB까지의 통신은 잘 되지만, ELB에서 나의 EC2 Server까지의 통신에 오류가 있다고 판단함.

 

 


< 접근1 >

'503 Service Temporarily Unavailable' 에러코드가 정확히 무엇인지 파악하기 위해 AWS의 공식 문서에서 관련 에러 메세지를 찾아보았다.

 

참고 문서:

 

Classic Load Balancing 사용 시 HTTP 5xx 오류 문제 해결

결제 또는 기술 지원이 필요하세요?

aws.amazon.com

: 503에러가 뜨는 경우는 여러가지가 있지만, 그중

  • 클라이언트 요청을 처리하는 데 사용할 수 있는 웹 서버 또는 백엔드 애플리케이션 서버 인스턴스 리소스가 부족합니다.

부분을 보고 현재 내 서버가 ELB와 잘 연결이 되어있는지 확인해 보았다.

 

: 생성한 로드밸런서의 대상그룹에 들어가보니 원래라면 대상그룹 안에 나의 EC2 Server 인스턴스가 포함되어있어야 하는데 포함되어 있지 않았다.

 

그래서 'Register targets'를 눌러 내 인스턴스를 추가해주었다.

: 추가 후 확인해보니 이번에는 Unused에 내 서버가 표시되면서 역시 '503 Service Temporarily Unavailable'에러와 함께 연결이 되지 않았다.

 

 


< 접근2 >

혹시 Unused로 뜨는 게 현재 작동중인 서버라서 안되는가? 싶어서 서버를 재부팅 해보았다.

 

: 그러나 이 역시 '503 Service Temporarily Unavailable' 에러와 함께 여전히 작동하지 않았다.

 

 


< 접근3 >

내 추측으로 생각하지 말고, 에러 코드를 따라가면서 해결해보자고 생각해서 Unused메시지가 나타난 로드밸런서의 대상그룹으로 이동해 확인해보았다.

 

: Unused 에러메시지를 확인해보니 현재 내 인스턴스가 속해있는 곳이 ap-northeast-2c 인데 내가 설정한 로드밸런서에서는 해당 zone을 이용하지 않는다는 메시지였다.

 

: 그래서 로드밸런서 설정에 들어가 ap-northeast-2c 구역을 사용하도록 설정해주었다.

 

: 이후 다시 들어가 접속해보니 이번에는 503 에러가 아니라 사이트에 접속할 수 없다고 나와있었다.

 

 


< 접근4 >

< 접근2 > 에서 EC2 인스턴스를 재부팅하면서 가동중이던 node.js 서버 꺼졌고 그 때문에 사이트주소를 입력해도 아무 반응이 없는 것이라고 판단해서, 인스턴스에 접속해 새로 서버를 가동시켜주었다.

 

하지만, EC2 인스턴스를 재부팅시키면서 IP도 변경이 되어 내 mongoDB데이터베이스에 접근할 수 있는 ip 리스트도 변경해 주어야 했다.

 

관련 게시글:

 

AWS : EC2 서버실행 오류

< 문제상황 > EC2 서버에서 만들어놓은 서버(깃허브 리파지토리) clone 후 npm install 및 .env 파일 설정 후 서버 실행하니 서버가 실행되지 않는 문제 : 깃허브 리파지토리 가져오고 필요 라이브러리

begin-to-end-project.tistory.com

 

: 이후 다시 접속해 보니 정상적으로 잘 접속 되고, Postman으로 서버 API도 잘 작동하는 것을 확인할 수 있었다.

 

 


< 해결 과정 >

1. 503에러 : 로드밸런서의 대상그룹 확인

2. 503에러 : 로드밸런서의 가용영역(서브넷) 확인

3. EC2 재부팅하면서 IP도 바뀌니 mongoDB에 해당 IP추가