목차
개요
도메인을 구입하고 AWS와 연결해야 되는 경우 Route53, ELB, 대상그룹, EC2로 환경을 구성했다. 이러한 구성은 간단하고 빨리 결과를 만들어 노출시키고 싶은 경우 이용하는 방법이었다. 코드를 수정하고 작업 결과를 반영시키기에도 빠른 방법이었는데 이는 EC2에 EIP 혹은 Public 옵션을 주었기에 가능한 일이었다.
EC2의 IP가 외부로 노출되는 것이 꺼려지기에 EC2를 Private Instance로 만들었지만 해당 EC2에 접근하기 위해 어떤 환경을 준비하면 될까?
사실 이 내용은 AWS를 공부할 때 접하는 Public/Private Subnet 설정에 관한 것이다. 이 포스팅에서는 이에 관련된 내용을 기록해보려 한다.
1. VPC
VPC를 먼저 생성하는 것으로부터 시작해 보자. VPC를 생성하는 것은 크게 어렵지 않은 내용이다. "VPC > VPC > VPC 생성"으로 이동해 요구하는 설정을 채워주자.
다만 고민해 볼 것은 IPv4의 CIDR 부분이다. 생성할 VPC 내에 필요로 하는 IP가 얼마나 될지를 예측하고 적정한 값을 선택하자. 갈길이 머니 도식화를 해보자. 현재는 VPC만 생성한 상태라 다음과 같다.
2. Public / Private Subnet 생성
이제 생성한 VPC내에 위치할 Subnet을 생성할 차례이다. "VPC > 서브넷 > 서브넷 생성"을 통해 서브넷을 생성할 수 있다.
미리 생성된 VPC가 UI에서 확인될 것이다.
2.1 Public Subnet
Public Subnet은 2개의 가용영역을 대상으로 생성하자. 이는 EC2 생성 시 옵션에 서브넷 설정에 가용 영역을 2개를 체크하는 옵션이 있기 때문에 그렇다. 또한 EC2 프리티어를 고려한다면 ap-northeast-2b는 피하자. 해당 가용 영역에서는 EC2 프리티어가 생성이 되지 않는다는 알림을 봤었다.
Public Subnet만을 우선 생성헀다면 다음과 같은 구성일 것이다.
두 개의 가용용역(ap-northeast-2a, ap-northeast-2c)에 각각 Public Subnet을 생성한 모습이다.
2.2 Private Subnet
이제 Private Subnet을 생성하자.
위와 같은 환경에서 EC2를 Private으로 생성한다 가정하면 ap-northeast-2의 Private Subnet에 위치하여 생성될 것이다.
3. Nat GateWay
지금까지 Public/Private Subnet을 생성했으니 각각에 대한 Nate GateWay를 생성해야 한다.
3.1 Private Nat Gateway
Private Subnet에 연결할 Nat Gateway를 생성할 경우 연결 유형에 "프라이빗"을 설정하자.
3.2 Public Nat GateWay
Public Nate Gateway는 Private Nat Gateway를 생성하는 것과 차이가 있다. "EIP"를 할당해줘야 하는 것인데 EIP가 없다면 생성해서 할당해 주자.
Private과 Public Nat GateWay까지 생성한 경우를 도식화를 통해 표현해 보자면 다음과 같다.
4. Routing Table
Public / Private Subnet과 이에 대한 Nat GateWay를 생성했으니 Private Subnet이 Public Subnet을 통해 외부와 통신할 수 있게 Routing Table을 설정하자.
Routing Table도 Private / Public 각각을 생성해 주자.
4.1 Private Routing Table
Private Routing Table은 다음과 같이 설정하자.
Private Routing Table이지만 0.0.0.0/0 (모든 IP)를 대상으로 Public Nat GateWay를 향하도록 설정해 주자.
4.2 Public Routing Table
Public Routing Table은 다음과 같다.
Public Routing Table은 0.0.0.0/0을 대상으로 송수신되는 요청을 internet GateWay로 향하게 설정해 주자. 물론 이때의 Internet Gateway는 앞서 생성한 VPC와 연결된 Internet Gateway를 뜻한다.
5. Diagram
이제 아래와 같은 형식이다.
Routing Table에 대한 세부적인 표현은 숨겨져 있지만 Private Subnet의 Nate Gateway가 Public Subnet의 Nate Gateway로 향하고 Public Nate Gateway는 VPC와 연계된 Intenet Gateway와 연결되어 있는 상황이다. 만약 Prvate 유형의 EC2를 생성한다면 다음과 같은 곳에 위치해 있는다.
6. 로드 밸런서 및 EC2
지금까지 기술한 내용을 바탕으로 Private EC2가 로드 밸런서를 통해 외부와 통신하려면 로드 밸런서의 네트워크 매핑 부분에 두 개의 가용영역을 잡고 Public Subnet을 지정해 주면 가능하다.
그러나 반대로 외부에서 EC2에 접근하려는 경우, 즉 "개요"에서 언급한 EC2에 작업한 코드를 반영해야 하는 경우는 VPC EndPoint를 통해 가능하며 VPC EndPoint의 Subnet은 EC2가 생성된 Private Subnet을 대상으로 지정하면 가능하다.
마치며
Public/Private Subnet을 나누는 것과 AWS의 아키텍처 다이어그램 도구를 활용해 글을 작성해 보는 것은 이번이 처음이다.
아무래도 코드를 작성하는 것과는 조금 거리가 있는 일이라 그런지 흥미로운 과정이었지만 혼자 이해하고 환경을 구성해 보는 데는 꽤나 시간이 걸렸다. 그러나 AWS는 자주 접하는 만큼 다양한 서비스와 도구를 접해보고 활용해 보는 게 앞으로 많은 도움이 될 것 같다.
'Architecture > AWS' 카테고리의 다른 글
[AWS] EC2(Amazon Linux 2023)에 Service 파일 생성하기 (0) | 2024.01.25 |
---|---|
[AWS] EC2(Amazon Linux 2023)에 Python 설치하기 (0) | 2024.01.20 |
[AWS]ECS에 Python Script Scheduling 적용하기 (0) | 2023.01.28 |
[AWS] App Runner를 사용해보자. (3) | 2023.01.05 |