프로젝트/aws 서버세팅

[AWS] VPC와 인스턴스 구성

climacus 2024. 5. 22. 19:36

1개의 웹서비스, 여러 개의 기능 어떻게 구성해야 할까?

AWS의 EC2서비스를 통해 인스턴스를 열면, 쉽게 서비스를 활성화 할 수 있지만

외부에서 해당 접속하기 위해서는 IP를 배정해야 한다. 

 

탄력적IP를 잡아둔 다음, 내 인스턴스에 할당하는 작업이 필요하다. 

2024년 2월부터 아마존은 사용자들을 IPv4를 IPv6로 전환하도록 유도하기 위해, IPv4에 월 과금을 부과하기로 공지했다. 

안쓰는 인스턴스나, 꼭 외부IP가 필요하지 않은 인스턴스의 경우에도 유지하는 것만으로도 월 비용이 발생하기 때문에

사용자들은 필요없는 인스턴스를 종료하거나, 외부접속이 필요없는 인스턴스를 IPv6로 전환하도록 검토했다. 

 

코딩아카데미 서비스를 오픈하기 위해 서비스내 기능들을 여러 인스턴스로 쪼개려고 했는데, 

그 이유는 안정성과 보안, 서비스 확장성 때문이었다. 

1. 어느 한 서버에 부하가 걸리더라도, 전체가 다운되지 않고 한 기능만 다운이 된다는 점

2. 외부IP를 연결한 인스턴스 외에는 외부에서 접속이 되지 않아 보안에 유리하다는 점

3. 추후 서비스를 분리하게 될 때, 분리나 차단이 용이하다는 점

 

대신에 인스턴스를 쪼개게 되면 비용이 증가하고 구조가 복잡해 지게 되었다. 

1. 각 인스턴스당 비용이 발생

2. IPv4는 하나만, 내부에서는 IPv6로 통신 하도록 구조화가 필요

 

 

 

VPC안에 4개의 인스턴스 구성하기


 

어쨌든 1개의 VPC안에 1개의 보안그룹을 두고, 그 안에 4개의 인스턴스를 두는 것으로 구성하였다. 

 

 

*메인인스턴스 : 외부에서 IP로 접속, SSH

*하위인스턴스 : 외부에서 IP로 접속후, 해당 인스턴스에서 내부IP로 원격접속, SSH

메인인스턴스에서 하위 인스턴스로 SSH로 접속하기 위해, 로컬PC에 있는 keypair 파일을 메인인스턴스에 복사가 필요

 

1. 로컬PC에서 실행: SCP명령을 통해 EC2 메인인스턴스로 파일 복사하기

scp -i "pioneer.pem" /path/to/pioneer.pem ubuntu@13.209.153.93:/home/ubuntu/

 

2. 권한 설정하기(필요에 따라)

chmod 600 pioneer.pem

 

3. 메인인스턴스에 ssh접속 후, 메인인스턴스에서 내부ip로 스크래치 인스턴스에 접속하기

ssh -i "pioneer.pem" ubuntu@172.31.4.126

 


NAT게이트웨이 추가 + 라우터 세팅

EC2콘솔에서 VPC콘솔로 이동한다. 

라우팅 테이블에 IP를 할당하고, NAT게이트웨이를 추가한다. 

NAT 게이트웨이 설정 방법

  1. NAT 게이트웨이 생성
    • AWS 콘솔에서 VPC 대시보드로 이동합니다.
    • "NAT 게이트웨이"를 선택하고 "NAT 게이트웨이 생성"을 클릭합니다.
    • 퍼블릭 서브넷을 선택하고 Elastic IP를 할당합니다.
  2. 라우팅 테이블 수정
    • 프라이빗 서브넷의 라우팅 테이블을 수정합니다.
    • "라우팅 테이블"에서 프라이빗 서브넷의 라우팅 테이블을 선택합니다.
    • "라우팅" 탭에서 "라우트 추가"를 클릭합니다.
    • 다음 항목을 추가합니다:
대상: 0.0.0.0/0
대상: NAT 게이트웨이 (생성한 NAT 게이트웨이 ID 선택)
반응형