본문 바로가기

AWS/파워쉘로 배우는 AWS

#6 [VPC] Subnet 만들기와 AvailabilityZone 알아보기

VPC 만드셨다면 다음으로 Subnet 만드실 차례입니다. " subnet 만드느냐?" 라고 물어보시는 분들이 계실꺼라 생각됩니다만, 우선 cmdlet부터 실행해 보고 설명 드리겠습니다.


PS> Get-EC2Subnet

 


 

확인이 되셨나요? AvailabilityZone 이라는 새로운 단어가 튀어나왔네요. 부분에 대해 먼저 설명 드리겠습니다. 먼저 AvailabilityZone 확인해 봅시다.


PS> Get-EC2AvailabilityZone

 


 

 

Us-west-2 Region Zone 3개가 있다는 것을 확인하실 있습니다. 우리는 글보단 그림을 좋아하니 그림을 그려가며 설명하겠습니다. 다음 그림을 보시죠.

 


 


AWS 서비스 영역에 2 이상의 DataCenter에서 서비스 하여 High Availability(HA)구성이 가능하도록 설계되어 있습니다. 자연재해 등으로 인한 하나의 DataCenter 서비스가 불가능 시에도 AWS 서비스하는 지역 자체가 서비스 불가능한 사태가 발생하지 않도록 하기 위해서 입니다. 그림을 AWS 매칭 시켜보면 다음과 같습니다.

 


 

 

Oregon이라는 Region DataCenter 개가 있고, DataCenter Availability Zone으로 지칭하여 Region이라는 서비스 영역에서 사용할 있는 가용 영역을 제공하여 사용자가 HA 구성할 있도록 제공하고 있습니다. 그래서 여러분들은 Region 리소스, AZ 리소스를 정확하게 이해하셔야 합니다. 그래야지만 서비스 디자인 시에 AWS 장애로 인한 서비스 장애로부터 최대한 회피하실 있습니다. 그럼 VPC Subnet 다이어그램도 그려보죠.

 


 


이해가 되시나요? VPC라는 상위 네트워크는 Region 만들고 Subnet AZ 만들어서 AZ위에 올라가는 AWS 리소스들을 Subnet으로 묶고, Subnet VPC라는 상위 네트워크로 묶어서 모든 리소스에 대하여 HA설정이 가능하도록 설계 되어 있습니다.

 

AZ 대한 내용이 이해가 되시나요? 그럼 본격적으로 Subnet 만들어 보죠.


PS> New-EC2Subnet -AvailabilityZone us-west-2a -CidrBlock 10.20.0.0/24 -VpcId vpc-21e2df44

 


 


위와 같이 10.20.0.0/24 CIDRBlock으로 가지는 Subnet 생성하였습니다. 생성한 Subnet 속성을 살펴보죠.

 

AvailabilityZone: 가용 영역(AZ)

AvailableIpAddressCount: Subnet에서 가용 주소 개수(할당 가능한 IP 주소 )

CidrBlock: CIDR 정보

DefaultForAz: 가용 영역(AZ)에서 기본 값으로 설정되었는지에 대한 여부

MapPublicIpOnLaunch: 공인 IP와의 Mapping 자동으로 되는지에 대한 설정 여부

State: Subnet 상태

SubnetId: Subnet ID

Tags: 태그 정보

VpcId: Subnet 소속된 VPC ID

 

눈여겨 정보들은 AvailabilityZone과 MapPublicIpOnLaunch, State 입니다.

 

첫째로, AvailabilityZone은 위에서 강조하였듯이 Subnet 가용 영역 위치입니다. AWS HA구성을 하지 않아서 발생한 문제에 대해서는 서비스 보장을 하지 않는다는 SLA 가지고 있습니다. 따라서 하나의 VPC에는 최소한 2 이상의 Subnet 각각 다른 AZ 제작하여야 한다는 말이 되기 때문에 무턱대고 Subnet 2개만 만든다고 되는 것이 아닙니다. 하나의 VPC에서 제작된 Subnet 다른 AZ 하나 이상 생성하셔야 합니다.

 

둘째로, MapPublicIpOnLaunch 입니다. 속성은 Subnet에서 Public IP Mapping 자동으로 시켜주는 설정입니다. 보통 EC2라는 VM 생성할 사용하는데요. Public IP DHCP 자동 Mapping 해주는 역할 한다고 생각하시면 됩니다. 이에 대한 자세한 설명은 EC2에서 다루도록 하겠습니다.

 

셋째로, State 입니다. 위의 Subnet State값을 보시면 pending이라고 되어있습니다. 명령은 async방식의 명령이라고 보시는게 맞는 해석이십니다. 여기서 AWS 명령어에 대한 불편한 사실이 나오는데요. AWS 거의 모든 명령어는 async방식으로 동작합니다. 그렇기 때문에 AWS에서 명령어를 사용하실 때에는 "실행의 완료 = 리소스 제작 완료" 라고 생각하시면 절대 안됩니다. 따라서 API 스크립트를 제작하실 때에는 언제나 AWS한테 리소스 상태를 확인한 후에 사용하도록 작성하셔야 합니다.

 

지금은 Subnet 상태가 어떤지 확인해 볼까요?


PS> Get-EC2Subnet -SubnetId subnet-d98c8abc


 

 


리소스를 제작한 후에 State 확인해야 한다는 인지하시면 좋겠습니다.

 

참고문서 : http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html

https://aws.amazon.com/agreement/?nc1=h_ls