본문 바로가기

Programming/프로그래밍 내용 정리

[AWS야 제발 친해지자] VPC / 서브넷 / 인터넷 게이트웨이 / 라우팅 테이블 / 로드밸런싱

 


스케쥴러는 기존에 A web 서버와 같이 쓰고 있어서
subnet이 was와는 다르게 설정되어 있는 상태였는데
설계목적이나 역할로 봤을 때 스케쥴러는
was 쪽 보안그룹이나 network 설정을 공유하고 was subnet에서 실행하는게 맞을 것 같아서
스케쥴러 ec2를 만들려합니다. crm 서버 사양도 조정할 예정입니다.

 



🤚 왜 이 글을 작성하게 되었는가 

 

회사 업무 슬랙에 개발 실장님이 위와 같이 말씀하셨는데,
단번에 이해되지 않아
난 AWS를 너무 모르는구나 싶어서.... 공부해야 겠다는 마음에 이 글을 작성하게 되었다.


먼저, 위에서 'subnet(서브넷)' 이라는 단어가 등장하는데

서브넷을 이해하기 위해서는 앞서 VPC라는 것을 알아야 한다.

그래서 VPC부터 시작하여 연관된 내용을 하나씩 알아보았다.

 

또한, 어떻게 AWS에서 직접 생성하는지 정리해야

각각의 내용이 더 기억될 것 같아서 화면을 캡처하여 정리했다.

 

 

 

🎯 VPC (Virtual Private Cloud) 가 무엇일까?

 

 

VPCAWS 내부에서 논리적으로 격리된 네트워크 공간이다.

 

AWS와 같은 클라우드 서비스에선 수많은 인스턴스들이

물리적으로 동일한 네트워크나 장비에서 돌아가게 되는데

이를 논리적으로 분리시켜준다고 할 수 있다.

 

 

 

👉 VPC는 왜 필요할까?

 

 

위 그림을 보면 VPC가 왜 필요한 지 알 수 있다.

 

VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결된다.

이런 구조는 시스템의 복잡도를 엄청나게 끌어올릴 뿐만 아니라

하나의 인스턴스만 추가되도 모든 인스턴스를 수정해야 하는 불편함이 생긴다.

 

 

 

👉 VPC를 생성해보자.

 

 

 

 

 


🎯 서브넷이 무엇일까?

 

 
 

VPC를 만들었다면 서브넷을 만들 수 있다.

 

서브넷은 VPC를 잘개 쪼개는 과정이다.

서브넷을 나누는 이유는 더 많은 네트워크망을 만들기 위해서이다.

서브넷은 ‘퍼블릭 서브넷’과 ‘프라이빗 서브넷’으로 분류된다.

 

  • 퍼블릭 서브넷
    • 퍼블릭 서브넷은 외부 인터넷 구간과 직접적으로 통신을 할 수 있는 공공 네트워크 이다.
  • 프라이빗 서브넷
    • 외부에서 직접 접근할 수 없다.
    • NAT Gateway를 이용하면 외부로 단방향 통신(내부 -> 외부 방향)만 가능하다.

 

 

👉서브넷을 생성해보자.

 

가용영역 a에 prod-public-subnet-a 생성

 

 

 

 


🎯 인터넷 게이트웨이가 무엇일까?

 

VPC는 기본적으로 격리된 네트워크 환경이다.

따라서 VPC에서 생성된 리소스들은 기본적으로 인터넷을 사용할 수가 없다.

 

인터넷 게이트웨이VPC와 인터넷 간 통신을 할 수 있게 해주는 출입문이라고 볼 수 있다.

 

인터넷 게이트웨이를 VPC에 연결해 서브넷으로 연결해주면

퍼블릭 서브넷 역할을 할 수 있게 된다.

 

라우팅 테이블에 인터넷 게이트웨이로 향하는 적절한 규칙을 추가해주면

특정 서브넷에 인터넷이 연결된다. (아래서 살펴볼 예정)

 

 

👉인터넷 게이트웨이를 생성해보자.

 
 

 

 

 

 

 

 

 


🎯 라우팅 테이블이 무엇일까?

 

 

네트워크 요청이 발생하면 데이터는 우선 라우터로 향하게 된다.

라우터란 목적지이고, 라우팅 테이블은 각 목적지에 대한 이정표이다.

 

발생된 네트워크 요청은

각각 정의된 라우팅 테이블에 따라 작동한다고 생각하면 된다.

 

 

 

👉퍼블릭 서브넷 전용 라우팅 테이블을 생성해보자.

 

라우팅 테이블 하나 생성 → 인터넷 게이트웨이를 통해 들어온 트래픽을 → 퍼블릭 서브넷으로 연결

 

 
 

 

 

라우팅 테이블을 생성했으면,

해당 라우팅 테이블은 어떤 서브넷이 사용할 것인지 연결해야 한다.

 

라우팅 테이블 목록에서 체킹한 후,

하단의 ‘서브넷 연결’ 메뉴의 ‘서브넷 연결 편집’ 을 통해 연결한다.

 
 

 

 

 

‘서브넷 연결 편집’이란

해당 라우팅 테이블이 어떤 서브넷에 적용되는지 설정하는 곳이다.

여기서는 퍼블릭 서브넷 역할을 할 서브넷만 체킹한 후 저장한다.

 

 

 

 

 

그 다음, 어떤 라우팅을 할 것인지 설정해야 한다.

방금 만든 라우팅을 선택하고 → 하단의 ‘라우팅 편집’ 메뉴를 들어간다.

 

 

 

 

 

아래 이미지는,

대상인 10.50.0.0/16에 속하지 않은 IP가

현재 퍼블릭 서브넷에 위치한 리소스에 접근하려고 하면

인터넷 게이트웨이를 통해 접근할 수 있도록 라우팅을 추가한다는 의미다.

 

 

 

이렇게 라우팅 테이블 설정을 하게 되면!

퍼블릭 서브넷으로 들어온 트래픽들은 → 이 라우팅 테이블을 통해 트래픽이 전달된다.

 

예를들어 10.50.0.0/16 대역대 안의 IP는 사설 네트워크망으로

2.2.2.2라는 IP는 인터넷 게이트웨이를 통해 퍼블릭 서브넷으로 접근하게 된다.

 

 

 


🎯 ALB (Application Load Balancer) 가 무엇일까?

 

 

로드밸런서는

서버에 가해지는 부하(=로드)를 분산(=밸런싱) 해주는 기술이다.

 

클라이언트와 서버풀 사이에 위치하며,

한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해

각각의 서버가 최적의 퍼포먼스를 낼 수 있도록 도와준다.

 

 

👉로드밸런서를 생성해보자.

 

 

 

ELB는 크게 외부 인터넷에서 접속이 가능한, 공인 IP와 사설 IP 모두를 갖는 Internet 로드밸런서

내부에서의 접근만을 허용하며 사설 IP를 갖는 Internal 로드밸런서로 구분된다.

 

보통 웹서비스를 구성할 때 외부 사용자들의 접근을 위한 웹 서버를 Internet LB의 부하 분산 대상으로 삼고, 내부 애플리케이션 서버를 Internal LB의 부하분산의 대상으로 삼아 구성하는 편이다. 

 

 

 

 

 

새 보안그룹 생성을 해서 로드밸런서의 인바운드 규칙을 80번 포트만 허용으로 설정하고 적용해준다.

(80번 포트를 통해 로드밸런서에 접속할 예정)

 

 
 
 

리스너 및 라우팅 항목에서는 로드 밸런서의 포트를 80번으로 놓고

위에서 생성한 대상 그룹을 등록해준다.

 

앞으로 인터넷 브라우저에서 웹사이트에 접속할 때

인스턴스의 DNS가 아닌 로드 밸런서의 DNS로 접속할텐데,

로드밸런서 도메인:80 번 포트로 접속하면 인스턴스(타겟그룹)에 HTTP(80)번 포트로 보내주겠다는 설정이다.

 
 
 
 

생성된 로드 밸런서 확인