앱서비스를 위해 aws ELB + ec2 + rds를 사용중인데 얼마전에 프리티어가 끝나 혼자 사용하는데도 월 10달러가 과금돼 정신이 확 들었다.
그러던 도중 학교 컴공 과동아리 서버를 사용할 수 있다는 희소식을 접했다.
rds는 그대로 두고 ec2인스턴스를 과동아리서버에서 돌리기로 했다.
동아리 서버 내 계정이 생성되어 전달받았고, 내가 사용할 포트(3000)를 외부 5032포트에 포트포워딩을 했다.
그리고 서버는 pm2 백그라운드로 정상적으로 실행되었다.
클라이언트가 동아리서버ip:5032로 request - 3000번 포트로 매핑 - 서버에서 response
그러던 중 첫 번째 문제가 발생했다.
서버에서 aws rds의 데이터베이스에 접근할 수 없었다.
현재 상황
서버컴에서 rds에 연결하려고 할 때 이 에러가 났다.
이 오류에 대한 일반적인 해결방법을 다음 세가지이다.
rds 퍼블릭 엑세스 비활성화
=> rds를 생성할 때부터 퍼블릭엑세스를 활성화했었다.
보안그룹
=> 인바운드 아웃바운드 둘 다 모든 트래픽, 0.0.0.0으로 설정했었다.
VPC 라우팅 설정
=> 서브넷을 public으로 설정해줘야 한다는데 이미 public인 상태이다.
하지만 이 방법은 통하지 않았다.
이후 데이서베이스를 새로 생성해보기도 하고, 서버에서 다른 도메인으로 ping찍어보기도 하고, 서버의 mysql을 다시 설치해보기도 하고 , ..
좌절하고 있던 도중,
학교 도서관에서 rds에 접속이 안됐던 것이 생각났다.
학교 네트워크에서 mysql 기본포트 3306번을 막아놓지 않았을까 하는 생각에 rds 포트를 3307로 바꾼 결과
해결했다 ~!
서버 작동 테스트하던 도중 서버의 외부 3000 내부 3000포트가 이미 포트포워딩되어있던 걸 발견했다. 내부 3000포트가 겹쳐서 express 포트를 변경하기로 했다.
/bin/www의 포트 번호를 5032로 수정하고 포트포워딩도 외부 5032 내부 5032로 바꿔줬지만 클라이언트측에서 :5032로 연결이 안됐다.
express 포트 변경하는 방법을 다시 찾아봤다.
포트 변경방법에는 문제가 없었다.
express서버를 내 컴에서 돌리고 클라이언트(리액트 네이티브)에서 내 컴 주소:5032로 연결해보았다.
잘 작동했다.
아래 링크로 서버 포트포워딩이 잘 됐는지 확인했다.
포트포워딩 잘 됐는지 확인
외부 5032 - 내부 3000, express 3000으로 한 상태에서 잘 연결이 된다고 뜨지만 내부 포트를 변경하면 연결이 안된다고 나왔다.
서버의 문제라는 생각이 들었다.
5032번으로 tcp udp 둘 다 내부->외부, 외부->내부 뚫어줬다
해결했다 ~!
중간에 생략된 부분들이 많은데 기억이 안남