codestates / codestates/TMT-server
[Dev-Log] 2021.07.17 - 2021.07.23 이유림
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
### 한 주간 한 일
- AWS에서 HTTP로의 배포는 손쉽게 하였으나, HTTPS로 전환시키고 도메인 붙이는 데 일주일 걸렸다..에러가 끝이 없었어 진짜.. 미쳤다..우리 팀원 모두에게 너무 힘든 시간이었어ㅠ
### 한 주간의 힘든 점
## **에러! => 아래는 헬프데스크에 도움을 요청했던 기록**
**_도메인은 AWS에서 구매한 도메인입니다._**
[https://github.com/codestates/help-desk/issues/3281](url)
저희가 타입스크립트를 사용해서 일반적인 방법으로는 pm2로는 실행이 되지 않아 ecosystem.config.js 파일을 생성하고 설정해주어 pm2를 실행할 수 있게 되었습니다. 처음에 아래와 같은 에러가 떠, 임시방편으로 해당 코드를 주석처리 해주었습니다.

주석처리를 해주니 일단 pm2로 서버 실행이 가능해졌습니다.

위에서 말씀해주신 것처럼 authbind로 80번 포트와 443 포트 모두 제어가능하도록 설정도해주었구요.
ec2를 만들고 일반 80번 포트로 확인 시 서버는 잘 떴습니다!! => 로드밸런서로 연결 후 Route53으로 연결 후에는 502에러가 떴다 안떴다 합니다.
EC2, 로드밸런서, route53 모두 다 삭제 후 새로 만들었음에도 여전히 502 에러가 번갈아가면 뜨고, 로드밸런서의 DNS를 확인했을 때 또한 마찬가지입니다.
### 아래는 ### **로드밸런서의 DNS** 입니다.

### 아래는 ### **대상그룹**입니다.

### **로드밸런서의 리스너**입니다. (로드밸런서 리스너에서 80번 포트의 규칙을 대상그룹으로 지정해주어도 마찬가지로 에러가 떴습니다.)

### **리스너에서 443포트의 SSL 인증서 보기/ 편집을 클릭하니 아래와 같은 문구가 떴습니다. 혹시 이게 문제인걸까요?**

### 아래는 ### **EC2 보안그룹**입니다.


### **혹시 몰라 전부 올려봅니다!
아래는 tsconfig.json 입니다**

### **아래는 package.json 입니다**
## 
**- 에러 요약**
1. 서버용 도메인 접속 시 80번 포트는 정상작동 되고, 443 포트는 작동이 되지 않아서 새로고침 시마다 정상적인 페이지와 502 Bad Gateway 에러가 번갈아가며 떴다.
2. ELB 상태도 unhealthy
- **해결**
- 문제 해결을 위해 수많은 블로그와 aws 공식문서, StackOverFlow를 전전했으며, 정말 많은 시도를 했었다. 어떤 날은 인스턴스와 로드밸런서, Route53까지 다 삭제하고 새로 만들었고, 또 어떤 날은 바로 전날까지만 해도 잘되던 인증서 발급이 안되서 몇시간을 고생하다 결국 포기한 적도 있었다.. 정말 너무너무 힘든 시간이었다. 결국 우리는 에러를 해결하고 배포를 성공적으로 하였으나 아직 해소되지 않는 의문점이 있다.
- 간헐적 502 Bad Gateway 에러를 해결하는데 큰 도움을 준 참고영상!
=> https://www.youtube.com/watch?v=Cjq4Cxoauvc&t=670s
- 우리는 기존과 다른 방식으로 EC2의 보안그룹에서는 HTTP만 설정해주고, 로드밸런서 생성 시 기존의 보안그룹을 사용한 것이 아닌, 새로운 보안그룹을 생성하고 그 곳에 HTTP와 HTTPS를 추가해주었다. 로드밸런서 생성작업을 끝낸 후에는 다시 EC2로 넘어가 "작업" 버튼 내에 보안그룹 변경을 선택한 후 아까 생성한 로드밸런서용 보안그룹을 추가해주었다. 이렇게 하니 502 에러가 말끔히 사라지고, 서버도 잘 작동하였다!
- 그.러.나, 보안그룹을 따로 적용해준 것만으로 문제가 해결됐다는 점이 잘 이해가 되질 않았다. 에러가 떴었던 기존버전과의 차이점은 2개였다.
1. 보안그룹을 따로 생성해 준 점 (EC2 보안그룹에는 아예 HTTPS를 적용시키지 않은 점)
2. 기존에는 대상그룹에 80번 포트와 443 포트 두가지 다 존재 (둘 다 unhealthy 상태가 떴었음), 현재 버전은 80번 포트 한개만 존재
- 첫번째 시도:
=> 기존과 같이 EC2 보안그룹에 HTTPS도 추가한 후 로드밸런서용 보안그룹을 적용해제하여 하나의 보안그룹만 사용함으로 EC2와 로드밸런서가 작동이 되는지 여부를 확인하고자 했다. (또 다시 에러가 뜬다면 보안그룹을 분리시키지 않은 것이 502에러의 원인이므로!)
=> 작동이 잘 되었다. (보안그룹 분리가 해결책이 아니었다는 얘기다.)
- 두번째 시도는 대상그룹에 기존과 같이 443 포트를 추가하는 것이었다. (여기서 작동이 안된다면 대상그룹 문제였으니까..근데 대상그룹이 문제는 아닌 것 같은데..) 이 시도는 아직 하지 못했다.. 대상그룹을 추가하려면 로드밸런서의 대상그룹 설정을 변경해야 하는데, 로드밸런서 생성 후엔 설정 변경을 할 수가 없는 것 같다. ( = 로드밸런서를 새로 생성하여 적용해야 함)
### 남은 할 일
- 대상그룹도 테스트해보기 (에러 원인 찾기 및 근본적인 해결책 찾기)
- 부분 수정 (구글 로그인 시, userData 테이블 생성)
- 추가 기능 구현할 예정 (카카오 로그인 + a)
- 에러 핸들링
- 코드 리팩토링
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.