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
'AWS > 파워쉘로 배우는 AWS' 카테고리의 다른 글
#8 [VPC] Public Subnet 만들기 (1) | 2015.12.21 |
---|---|
#7 [VPC] Route Tables 알아보기 (0) | 2015.12.18 |
#5 [VPC] VPC 알아보기 (0) | 2015.12.18 |
#4-1 [서론] AWS 자격증명을 파일로 저장하여 사용하는 방법 (0) | 2015.12.18 |
#4 [서론] Powershell 기본 세팅 하기 (0) | 2015.12.18 |