일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 대용량 아키텍처와 성능 튜닝
- aws
- 위치 기반 쿼리
- Spring
- 읽기 고려
- Text Index
- STS
- 스프링
- iam
- 조대협
- Amazon Web Service
- JPA
- NoSQL
- 코드프레소
- 몽고디비
- Spring Framework
- 쓰기 고려
- 스프링 부트
- 스프링 프레임워크
- 자바
- java spring framework
- AWS Developer
- AWS 자격증
- spring boot
- Java
- Write Concern
- EC2
- Code Presso
- Jenkins
- mongoDB
- Today
- Total
개발과 기록의 조화
[Amazon Web Service] 웹 서비스 아키텍쳐 — VPC 본문
해당 게시물은 학습 및 기록 목적으로 작성되었습니다. 사실과 다른 내용이 있을 수 있으며, 오류가 있거나 궁금한 점은 댓글이나 dlaudtjr07@gmail.com 으로 메일 주시면 감사하겠습니다.
아마존 클라우드 서비스를 이용해 웹 서비스를 구현하기 위해서는 여러가지 기능들을 이용해야 합니다. EC2 , RDS등 여러 서비스들이 있지만, 아마존의 거의 모든 서비스는 VPC 가 베이스로 깔려져 있습니다. 이 게시물에서는 VPC에 대해 알아보고자 합니다.
VPC란?
VPC는 아마존에서 서비스하는 가상 네트워크 시스템으로, 아마존 공식 문서에서는 VPC를 아래와 같이 정의합니다.
Amazon Virtual Private Cloud(Amazon VPC)에서는 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다.
출처 :AWS 공식 Document
VPC는 아마존 웹 서비스 이용자의 전용 가상 네트워크이며 , 다른 가상 네트워크들과 논리적으로 분리되어져 있습니다. 내부적으로 몇 가지의 세부 사항들을 정의해야 합니다.
Subnet
서브넷은 VPC 의 IP 주소 할당 범위입니다. CIDR 블록 형태로 지정해야 하며, VPC 생성 후 하나 이상의 서브넷을 추가할 수 있습니다.(RDS는 다른 AZ로 2개 이상 생성해야 합니다)
Routing Table
라우팅 테이블은 서브넷이나 게이트웨이의 네트워크 트래픽이 전송되는 위치를 정하는 데 이용됩니다. VPC가 생성될 때 기본 라우팅 테이블이 하나 생성되며, 상황에 따라 여러가지의 라우팅 테이블을 생성할 수 있습니다.
Network Interface
네트워크 인터페이스는 VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소입니다. 여러 개의 웹서비스를 하나의 인스턴스(EC2)에서 서비스하거나, 관리 네트워크 대역을 나누어 사용할 때 주로 사용합니다.
Internet Gateway
인터넷 게이트웨이는 VPC 내부 인스턴스(EC2)와 외부간 통신이 가능하게 해 주는 기능입니다. 퍼블릭 IPV4주소가 할당된 인스턴스에 대해 네트워크 주소 변환을 해 주는 기능, 인터넷 라우팅이 가능한 트래픽 조건을 가진 VPC 라우팅 테이블에 연결을 제공하는 기능을 가지고 있습니다.
VPC Endpoint
VPC 엔드포인트는 VPC와 AWS 서비스(S3 등)을 private로 연결할 수 있게 해주는 기능입니다. VPC에서 특정 AWS 서비스에 접근 할 시 인터넷 게이트웨이, NAT의 설정이 없어도 엔드포인트를 이용해 접근이 가능하도록 해 주는 기능을 가지고 있습니다.
VPC 생성
거두절미하고 VPC를 생성해보도록 합시다. 아래의 아키텍쳐 구상도와 같이 생성할 것입니다.
AWS 콘솔에 로그인 후 VPC 서비스 대시보드로 들어갑니다. 그 후 VPC 생성을 클릭합니다.
VPC 생성 버튼을 클릭하면 아래 그림과 같이 이름, IPV4할당 범위, 그 외 설정들이 나열되어져 있습니다. 적절한 이름과 적절한 IP 할당 범위를 주고, 생성 버튼을 클릭합니다.
VPC가 생성되었다는 문구가 뜬 것을 볼 수 있습니다. VPC는 각자의 고유한 ID가 할당됩니다. 닫기 버튼을 클릭합니다.
마지막으로 DNS 호스트 이름 편집을 클릭 후 활성화 버튼을 클릭하고 저장 합니다.
VPC가 생성되었습니다. 기본적으로 VPC를 비롯한 기본 라우팅 테이블, DHCP 옵션 셋, ACL , 보안 그룹 총 4개의 옵션이 함께 만들어집니다. 하지만 VPC 내부적으로 추가 작업을 해 주어야합니다. 앞서 설명했던 서브넷, 인터넷 게이트웨이, NAT 게이트웨이 등 추가적인 네트워크 설정들이 이루어져야 공개적으로 웹 애플리케이션을 서비스할 수 있습니다.
서브넷 생성
다음 작업은 서브넷 생성 작업입니다. 위의 아키텍쳐에 따라 Public 서브넷과 Private 서브넷, 그리고 후에 RDS 생성 시에 필요한 다른 가용 영역(AZ)의 서브넷(백업용 서브넷) 각각 1개씩 생성해 보도록 하겠습니다. 먼저 VPC의 서브넷 부분을 클릭 후 서브넷 생성을 클릭합니다.
아래와 같이 이름을 적고 VPC 설정, 가용영역 설정 후 적절한 범위의 CIDR블록을 설정합니다. (RDS 백업용 서브넷은 다른 가용영역을 설정해야 합니다.)
위와 같이 생성하게 되면 , 아래와 같이 서브넷 3개가 생성된 것을 확인할 수 있습니다.
다음 VPC 내부의 서비스와 외부 인터넷 간에 통신이 가능하게 하는 인터넷 게이트웨이 설정 작업을 진행해야 합니다.
인터넷 게이트웨이 생성
위에 설명했듯이, 인터넷 게이트웨이는 인터넷 라우팅 가능 트래픽 조건을 가진 VPC라우팅 테이블에 외부 요청을 제공하는 기능과, IPV4주소가 할당된 인스턴스에 대해 네트워크 주소를 변환시키는 역할 두 가지 목적을 가지고 있습니다. VPC 콘솔의 인터넷 게이트웨이 단락에 진입 후 생성을 클릭합니다.
AWS UI에 문제가 있네요. (지정하는 값과 ‘이름’ 키로 태그 생성) 단락입니다. 원하는 이름 입력 후 생성해줍시다.
처음에 인터넷 게이트웨이가 생성되면 기본적으로 Detached 상태로 만들어지게 됩니다. 우리가 만든 VPC와 방금 만든 인터넷 게이트웨이를 연결해야 합니다. 우클릭 후 VPC에 연결을 클릭합니다.
처음에 만들었던 VPC를 선택한 후 연결 버튼을 클릭합니다.
아래와 같이 attached 상태로 변한것을 보고, VPC와 인터넷 게이트웨이가 정상적으로 연결된 것을 확인할 수 있습니다.
단지 인터넷 게이트웨이를 설정했다고 해서 VPC 내부 인스턴스와 외부 인터넷이 통신을 할 수 있는것은 아닙니다. 통신을 위해 추가적으로 라우팅 테이블 설정 작업과, NAT 게이트웨이 설정 작업이 필요합니다.
NAT 게이트웨이 생성
NAT 게이트웨이의 조건은 다음과 같습니다.
- NAT게이트웨이는 퍼블릭 서브넷을 지정해야 한다
- 탄력적 IP(Elastic IP) 주소를 할당해야 한다.(한 번 설정되면 변경 불가)
- (선택) Private 서브넷 인스턴스를 인터넷과 연결시키기 위해서는 Private 서브넷과 연결된 라우팅 테이블이 NAT Gateway에 하나 이상 연결되어져 있어야 한다.
주의 !! NAT Gateway에는 프리 티어 여부와 상관없이 요금이 청구됩니다. 실습이 끝나면 반드시 NAT Gateway를 삭제하고, 다시 실습할 때 재생성하도록 합시다.
우선 1번의 조건은 퍼블릭으로 생성해 둔 서브넷이 존재하므로 조건이 충족됩니다. 하지만 2번의 조건은 아직 탄력적 IP를 생성하지 않았습니다. 이는 NAT 게이트웨이를 생성할 때 ‘새 탄력적 IP 생성’을 클릭해 만들거나, 수동적으로 만들어도 상관없습니다. 이번에는 간편하게 NAT 게이트웨이를 생성할 때 새롭게 하나 만들어 주도록 합시다. 이름 설정은 나중에 직접 지정해 줄 수 있습니다.
NAT 게이트웨이 단락으로 접근해 NAT 게이트웨이 생성 버튼을 클릭합니다.
서브넷은 Public으로 설정한 서브넷을 , 탄력적 IP는 새 EIP 생성을 통해 생성해 주도록 합시다. 그 다음 NAT 게이트웨이 생성 버튼을 클릭합니다.
그림-18. NAT 게이트웨이 생성
다음은 라우팅 테이블을 생성해야 하는데, 내용이 다른 부분에 비해 약간 길기 때문에, 천천히 하나씩 설정해 보도록 합시다.
라우팅 테이블 생성
앞서 생성한 Public 서브넷과 Private 서브넷의 라우팅 경로를 설정해 주어야 합니다. 라우팅 테이블 단락으로 이동해 생성 버튼을 클릭합니다. 기본으로 생성되어져 있는 라우팅 테이블은 무시해도 상관없습니다.
라우팅 테이블은 기본적으로 어느 설정도 되어 있지 않습니다. 각자 Public , Private 서브넷에 연결시켜 주어야 합니다. 아래 그림과 같이 라우팅 테이블을 클릭하고 하단의 서브넷 연결 단락을 클릭한 뒤 서브넷 연결 편집 버튼을 클릭합니다.
아래와 같이 Public 서브넷은 Public라우터로 이름 지은 라우터 테이블에, Private 서브넷은 Private 라우터로 이름 지은 라우터 테이블에 각각 연결시켜 줍니다. 그 후 저장 버튼을 클릭합니다.
정상적으로 연결되었다면 아래 그림과 같이 각각의 서브넷과 라우팅 테이블이 연결되어져 있는 것을 확인할 수 있습니다.
다음은 라우팅 테이블의 Private , Public 권한을 설정할 차례입니다. 라우팅 단락으로 이동해 라우팅 편집을 클릭합니다.
Public 라우팅 테이블 설정입니다. 라우팅 추가 버튼을 클릭하면 빈 row가 추가되는데, 대상은 이전에 생성했던 인터넷 게이트웨이를 설정하고, IP를 적는 단락에는 모든 네트워크를 뜻하는 0.0.0.0/0을 설정해 줍니다. 그 다음에 라우팅 저장 버튼을 클릭합니다.
Private 라우팅 테이블 설정입니다. 위의 Public 라우팅 테이블 설정과 비슷합니다. 연결 대상을 위에 설정해 주었던 NAT 게이트웨이의 네트워크 인터페이스 ID를 지정해 주고 라우팅 저장을 클릭합니다.
NAT 게이트웨이의 네트워크 인터페이스 ID는 그림과 같이 NAT 게이트웨이 하단 세부 정보에 나와 있습니다.
VPC의 기본 설정 작업이 끝났습니다. VPC는 AWS 를 이용하기 위해서 가장 중요시되고, 기본으로 꼽히는 요소 중 하나입니다. 네트워크 환경을 이용자가 직접 설계할 수 있다는 점에서 다른 서버 호스팅 작업과는 상당한 차이가 있습니다. 우리가 VPC를 따로 생성하지 않아도, 모든 서비스들의 뒷단에는 VPC가 존재합니다. 그만큼 VPC의 이해는 중요하다고 생각합니다.
다음 게시물에서는 EC2를 생성해 VPC와 연동하는 작업 예제를 공부할 예정입니다.
해당 글은 코드프레소 DevOps Roasting 코스를 수강하면서 작성한 글입니다.
'Cloud Service > Amazon Web Service' 카테고리의 다른 글
[Amazon Web Service] AWS MFA 발급 (0) | 2020.03.11 |
---|---|
[Amazon Web Service] AWS IAM 사용자 추가하기 (0) | 2020.03.11 |
[Amazon Web Service] 웹 서비스 아키텍쳐 — EC2 (0) | 2020.02.01 |