🐊 aws

프론트엔드 4명이 만드는 채팅 웹사이트(+ AWS) 3부

읏차 2024. 4. 17. 11:01

프론트단에서 api gateway -> NLB -> ALB -> EC2로의 라우팅 작업을 완료했다.

하지만 실제 연결을 확인해보기 위해서는 EC2에서 서버를 실행하고 요청을 보내는 작업을 해야했다.

그러기 위해서는 먼저 EC2에 연결하여 채팅서버를 실행시켜야 했다.

 

이를 위해 ec2에 연결하고 sudo apt update를 입력했는데 바로 문제가 발생했다.

 

101: network is unreached

 

해당 오류로 검색하면 여러가지 해결법이 나오는데 사실 Private Subnet에 ec2가 올라가 있기때문에 외부 인터넷으로 아웃바운드 트래픽을 연결해줘야 한다. 이를 위해서 위 그림과 같은 환경을 구축해야 했다.

 

- Internet Gateway

- NAT Gateway

- Public Subnet 
먼저 이 3가지 구성요소를 생성한다.

 

Internet Gateway는 VPC에서 외부인터넷으로 연결을 하게 해준다.

NAT Gateway는 Public Subnet에 위치한다.

* NAT Gateway는 탄력적 IP를 설정해줘야 한다.

 

Private Subnet의 EC2에서 외부인터넷 연결을 위해 Internet Gateway로 연결을 바로 하고 싶지만 불가능하다. 이를 연결하기 위해서는 NAT Gateway를 한번 거치는 작업을 해줘야 한다.

 

둘을 직접적으로 연결할 수는 없고 라우팅 테이블이라는 것을 통해서 단방향 연결을 할 수 있다.

라우팅 테이블은 Subnet에서 특정요소(NAT Gateway, Internet Gateway 등 다양함)을 연결시킬 수 있다.

 

Private Subent -> 라우팅 테이블 -> NAT Subnet

Public Subnet -> 라우팅 테이블 -> Internet Gateway
이렇게 구성해주면 된다.

 

 

EC2에 nest서버를 CodeDeploy를 이용해 배포 간단정리

Ububntu 22.04

Ruby 2.7.0

ruby 다운로드 경로

https://www.ruby-lang.org/en/documentation/installation/#apt snap으로 함

 

git local 디렉토리 생성 -> git init -> git add origin remote

CodeDeply 배포그룹의 태그 Name = EC2 이름과 일치

 

nest프로젝트에서 PM2의 실행파일은 dist/main.js / PM2 config파일 생성시 .js 파일로 생성

 

 

EC2와 연결된 RDS db 초기화 간단정리

- EC2실행 후 연결

- 연결된 rds의 db로 접근 : mysql -u [마스터 이름] -p -h [endpoint 주소]

- 데이터베이스 생성

- EC2에 있는 nest의 DATABASE_URL에 생성된 테이블 이름을 넣어줌

- prisma를 사용해서 생성한 데이터베이스 내 테이블을 만들어줌

 

 

다음으로는 Route53에서 구매한 도메인을 EC2와 연결해보겠다.