AWS VPC 전반 기초 요약

AWS

전세계에서 가장 많이 쓰는 퍼블릭 서버
IAAS로 시작함

가용성 존(AZ)

가장 기본적인 단위는 Region 이다.
한국의 경우 서울 하나만 있다.
Region는 논리적인 단위이고 가용성 존(AZ)이 물리적인 단위이다.
한 Region은 여러개의 가용성 존을 갖고 있다.
가용성 존이 오늘 다룰 단위이다.

AZ 하나는 CIDC(클라우드 IDC)로서 하나의 단위이다.

VPC(Virtual Private Cloud) - AZ를 포함하는 단위. 리전마다 만들 수 있다.
자기 자신만의 가상 IDC를 만들어서 활용하는것.

가상서버의 인스턴스는 VPC안에 생성된다.

IDC는 게이트웨이, 방화벽, 서버, 서브넷 등이 필요한데 이들은 VPC안에 정의 가능하다.

Bastion Host / VPN 으로 접속하는 방법이 있다. Bastion Host의 경우 SSH을 열은 EC2 로 접근하여 다른 서브넷에 접근하는 방식이다.
둘 다 그림으론 IGW를 안거치는것 처럼 보이지만 거치는 형태이다.

ELB 는 로드벨런서이다.

실습

vpc 검색

VPC 생성

대부분의 오브젝트 이름이 태그로 관리된다. 논리적인 이름이다.

이름태그
퍼블릭 클라우드는 네이밍이 중요하기 떄문에 신중해야 함. 왜?
VPC를 여러개 만드는 경우가 생기게 되는데 (ex. 개발, 프로덕트, 스테이징 등등 생성하고자 할 때 / 부서별로 생성하는 경우)

네이밍 방법
vpc-opne2-dev-{서비스 약칭}

opne2 - 한국지역
dev - 개발용 (dev,prod,stg 중 선택)
서비스 약칭

IPv4 CIDR 블록
10.1.0.0/16 을 하면 156xx개를 사용할 수 있다

IPv6 CIDR 블록
IPv6를 지원하면 켜줘야함

이제 생성클릭

VPC 목록 화면

VPC ID가 식별자이다.

DNS 호스트 이름 : 도메인네임도 내부 룰에 맞춰서 생성해서 붙여줄까?
라우팅 테이블 : VPC안에서 서브넷간 통신을 어떻게 할지
어디서 어디까지 흘러가는건 막고 등… 내부흐름 조절
DHCP 옵션 세트:내부적으로 붙는 인스턴스가 AWS가 내부 IP로 붙인다.

네트워크 ACL : 서브넷 단위의 firewall 주로 ACL보다는 시큐리티 그룹을 즐겨쓴다.

DNS 호스트 이름 활성화

좌측 위 작업 - DNS 호스트 이름 편집- 활성화 체크


인터넷 게이트웨이

VPC를 생성한 이후에 가장먼저해야할게 외부와 통신하기 위해 게이트웨이를 만들어야한다.

좌측에서 인터넷 게이트웨이 생성 클릭
네이밍 규칙
igw-opne2-dev

우즉 위 작업 - VPC에 연결클릭 후 연결시켜준다.


ACL

firewall로서 서브넷 단위로 통신흐름을 제어하는데 인바운드 아웃바운드 제어가 가능. 서브넷 처럼 뭐는 되고 뭐는 안되는 세밀한 조정은 안됨

ACL은 서브넷 단위로 트래픽을 제어하고 RT를 통해 어느서브넷에서 나온것은 어디로 흘러갈지 정의한다.

ACL은 디폴트로 생성된다. 좌측에 네트워크 ACL 클릭 후 선택 후 인바운드, 아웃바운드 보면 다열려있다,

서브넷 연결탭은 아무것도 없는데 조금 뒤 서브넷을 만들고 설정하도록 하겠다.


서브넷 생성

VPC에 저복하기 위해서는 VPN을 사용하지만 이는 비용이 든다.

그래서 VPC 내 여러개의 서브넷 중 하나에 EC2를 생성하고 SSH로 접속하여 다른곳에 붙는다. 이를 Bastion Host라 함.

좌측 서브넷 선택
네이밍 규칙
subnet-opne2-dev-ssh

VPC 선택
가용영역: 서울리전에는 AZ가 3개가 있다고 했었따.

가용영역
서브넷은 가용영역이 있으므로 이름태그를 subnet-apne2a-dev-ssh로 수정한다. a는 가용영역 3개중 비교를 위해 붙임.

AZ를 여러개로 구성하여 다중화를 통해 장애에 유연하게 대처할 수 있도록 하는것이 좋다

CIDR
VPC가 갖고있는 범위안에서 CIDR을 만들어야 한다.(아까 만든 10.1.0.0/16)
10.1.1.0/24

관례적으로 3번째 숫자가 낮아질 수록 은밀성이 높아진다.
내부적으로 10번대는 웹서버, 20번대는 디비 …. 이런식으로 정한다.

VPC의 CIDR 블록값이 다른값과 겹치면 안된다.
블록값이 겹치면 VPC간 페어링을 해야할 때 동일한 CIDR 블록을 갖는것들은 페어링이 안된다.

과금팁

  • EC2 는 메모리,CPU 를 점유하므로 그냥 있어도 과금이 된다.
  • 같은 AZ안에서의 통신은 과금이 되지않는다(조금씩 다르긴하다)
  • 인바운드는 보통 과금이 되지만 아웃바운드는 과금이 되지 않는 경우도 존재

다시 ACL가서 생성한 서브넷 연결확인

좌측에 네트워크 ACL 선택 후 서브넷 하나 선택하고 서브넷 연결탭에서 등록되어있따 확인.

라우트 테이블

VPC 왼쪽메뉴 보면 라우팅 테이블이있다.

네이밍규칙
rt-apne-dev-ssh

생성되어있는것의 이름을 네이밍 규칙에 맞게 설정

그 후 서브넷 연결 편 탭에서 서브넷 연결편집 클릭 - 하나 선택후 저장

EC2 생성

ec2 검색
인스턴스

키페어 생성
키페어 생성버튼 클릭

네이밍
keypair-apne2-dev-public 을 입력하고 파일을 내려받게된다.

키페어만 있으면 ACL, 시큐리티 그룹에서 막히지 않았을 때 어디서든 들어올 수 있다.

인스턴스 생성
왼쪽인스턴스 선택 - 인스턴스 생성 클릭 - Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0bea7fd38fabe821a 선택

t2.micro 는 Bastion Host로 사용하기에 널널하다
General Purpose의 유형중 t로 시작하는것은 개발/테스트 용도로 사용하기 적당
m으로 시작하는것은 메모리가 많다.
t 뒤에 위치한 숫자는 세대(Generation)라고 보면 된다.

t2.micro 선택 후 다음 클릭

네트워크에서 내가 만든것 선택
서브넷은 하나뿐일것임
퍼플릭 IP 자동할당 - 활성화 (외부와 통신이 필요할 때 활성화를 한다. 리스타트하면 ip가 바뀌므로 해당 ip로 통신하도록 박아놓으면 안된다.)
종료방식 - 중지(종료로 되어있으면 종료했을 때 인스턴스가 종료된다.)

네트워크 인터페이스

고급세부정보
인스턴스를 기동할 때 특정 행위를 하도록 할 수 있는데 여기에 집어넣는것.

다음 스토리지 추가 클릭

다음 태그추가 클릭
키가 : name
값이 : ec2-apne2a-dev-ssh

다음 보안그룹 클릭

보안그룹 이름 : sg-apne-dev-ssh으로 해야되지만
시큐리티 그룹은 특수문자를 허용하지 않기 때문에 sgapnedevssh로 하자

유형 : SSH
소스 : 내 IP
설명 : xxx(꼭 넣어주는것이 좋다. 어딘지 알 수 있도록)

검토및 시작 클릭 후 시작하기 클릭

기존 키 페어 선택 클릭 후 인스턴스 시작

퍼블릭 IP는 다시시작하면 바뀌므로 접속정보로 사용하지 말것.


라우트 테이블에 연결

왼쪽탭의 라우팅테이블
라우팅 추가 - 0.0.0.0/0
(잘 선택해서 추가해라… 잘못해서 해멨다..)

EC2에 접속해보면 잘될것이다.

1차 정리해보자

가상의 IDC이다.

외부와 통신하기 위해 게이트웨이를 붙이고

VPC에 게이트웨이 바인딩하고 서브넷을 만들었다.

서브넷은 퍼블릿/프라이빗을 구분하기 위해 라우팅테이블에 포함되어 있는지 판단한다. 라우팅테이블에 존재하면 퍼블릭

ACL은 서브넷 단위까지밖에 관리 못함

실제로 인터넷 서비스를 이용하기 위해 게이트웨이, 라우터 등이 필요한데

집에있는 모뎀은 라우터 , 게이트웨이가 합쳐져있는것이다.


1
sudo yum update

서브넷 새로 하나 추가

서브넷 (CIDR 추가), 라우팅테이블 추가

서브넷 추가
서브넷 탭에서 서브넷 생성
subnet-apne2a-dev-web
CIDR 블록
10.1.2.0/24
추가

라우팅테이블
서브넷 연결 설정
rt-apne2-dev-web
web에 0.0.0.0/0 / Internet gateway 추가

보안그룹 생성
sgapne2devweb와
ssh / http 생성

EC2생성
ec2-apne2a-dev-web

생성한 서브넷에 접속하여

아래 입력

1
2
3
4
sudo yum update
sudo yum install httpd
sudo systemctl start httpd
curl localhost

지금까지 환경 구성했ㅆ던것들을 템플릿화 하여 코드로 관리할 수 도 있다
CloudFormation 활용하여….

로드벨런서

서브넷에 붙기전에 로드벨런서에 붙는다.
이는 로컬 로드벨런서임.

elb를 거치도록 하는것이 좋다. elb는 다른서브넷에도 접근이 가능하다. 즉 서브넷이 죽었을 때 다른곳으로 보내줄 수 있다

elb에는 인스턴스를 식별할 수 있는것이 주어져야함

최근에는 DNS또한 로드벨런싱을 어느정도 해주긴 함.
DNS가 위치 등의 정보에 따라 적절한 elb에 연결해줌

로드벨런서 생성 실습

EC2의 좌측 로드밸런서 탭

로드밸런서 생성 클릭

Classic Load Balancer 생성
이름 : elb-apne2-deb-web
내부 로드 밸런서 생성 : 체크

다음
보안설정구성 그냥 다음

4단계: 상태 검사 구성은 헬스체크를 어디로 얼마 주기로 할 것인지.
다음

NAT

프라이빗으로 구성하여 yum update를 할 경우 외부로 나갈 수 없게되는데 이를 해결하기 위해 NAT를 쓴다.

기본적인가 BastionHost Public로 두고 ELB public로 하고
NAT, Web on premese 등을 private로 많이쓴다.

Share