이번에 aws ui 가 리뉴얼 되면서 나도 배포 방법을 리뉴얼해 보려고 한다.
우선 네트워크 존을 생성하기 위해 vpc 를 생성해준다.
VPC 와 서브넷을 생성하는 이유
- 네트워크 트래픽을 제어하고, 외부에서 접근할 수 있는 자원을 제한할 수 있다. 예를 들어, 방화벽 역할을 하는 보안 그룹(Security Group)과 네트워크 ACL(Access Control List)로 트래픽을 세밀하게 관리할 수 있다.
- IP 주소 범위를 선택하고, 라우팅 테이블과 게이트웨이를 직접 설정하여 원하는 네트워크 구조를 설계할 수 있우며, EC2, RDS, Lambda와 같은 리소스가 서로 통신할 수 있도록 네트워크를 구성할 수 있다.
- 여러 프로젝트 또는 서비스 간의 네트워크 충돌을 방지하기 위해 독립적인 네트워크를 생성할 수 있다.
aws 에서 vpc 서비스를 검색하여 콘솔에 들어간다. 이때 디폴트 vpc 가 나올텐데, 이는 무시해준다. 바로 보이는 [VPC 생성] 버튼을 클릭해주면 나오는 화면에서 이름을 설정해준 뒤
CIDR 블록 범위를 설정해준다.
참고 : CIDR 이란?
왜 CIDR 범위를 설정해야 하는가?
네트워크 구분
AWS에서 사용하는 VPC는 독립된 네트워크를 생성하므로, 네트워크 범위를 명확히 정의해야 함.
CIDR 블록을 통해 VPC 내의 IP 주소가 다른 네트워크와 충돌하지 않도록 관리.
IP 주소 관리
CIDR 블록으로 정의된 IP 주소 범위 내에서 EC2 인스턴스, 서브넷 등에 IP를 자동으로 할당.
서브넷 생성
VPC 내에 서브넷을 만들기 위해 CIDR 블록을 기준으로 서브넷을 나눔.
예를 들어, 192.168.0.0/16 CIDR 블록을 가진 VPC에서 여러 서브넷(192.168.1.0/24, 192.168.2.0/24 등)을 생성할 수 있음.
트래픽 라우팅
CIDR 블록을 통해 네트워크 라우팅 테이블을 설정하여 VPC 내부 및 외부 네트워크 간의 트래픽 흐름을 제어.
참고로 VPC 대역을 설정한 후에는 변경이 불가능하므로, 요구사항을 충분히 검토한 후 맞는 크기의 대역을 할당해줘야한다. 설정을 마쳤다면 [VPC 생성] 을 눌러 vpc 를 만들어준다.
다음으로 생성한 vpc 를 클릭하고 작업을 누르면 [vpc 설정 편집] 이란 게 있는데, 그걸 클릭해서 체크박스를 활성화시켜준다.
이걸 활성화시켜야 퍼블릭 IP 주소에 대응하는 DNS 주소를 받아 ip 주소 대신 도메인 이름으로 접근할 수 있고, 나중에 올라갈 리소스들을 호출하는 것 또한 보다 유연하게 할 수 있다.
이제 인터넷 게이트웨이를 vpc 에 붙여줄 것이다. 좌측 VPC 드롭박스에서 '인터넷 게이트웨이' 를 클릭한다. 디폴트 게이트웨이는 마찬가지로 무시하고 [인터넷 게이트웨이 생성] 을 클릭한 뒤 게이트웨이 이름을 설정해준 뒤 게이트웨이 생성을 눌러 게이크웨이를 만들어준다. 처음 만들어준 게이트웨이는 상태가 dettached 라고 되어 있는데, 이는 붙어있는 vpc 가 없다는 걸 말한다.
우리가 할 일은 생성한 게이트웨이를 vpc 에 붙여주는 것이다. 마찬가지로 해당 게이트웨이 클릭 후 [작업] > [vpc 연결] 을 눌러서 vpc 를 연결해준다.
이제 public subnet 2개, private subnet 2개 해서 총 4개의 서브넷을 만들어줄 것이다. 왼쪽에서 서브넷을 클릭 후 [서브넷 생성] 을 누른다.vpc 를 만든 vpc 로 설정해준 뒤 서브넷 이름을 써주고, 가용 영역을 설정해준다. 가용 영역은 될 수 있으면 여러 곳에 분산해주는 게 좋으니 하나는 a 존, 다른 하나는 b 존에 설정해줄 것이다.
다음으로 'IPv4 서브넷 CIDR 블록' 을 10.0.1.0/24 로 설정해준다. 끝났으면 [새 서브넷 추가] 를 눌러 4개 서브넷을 만들어주고 이름을 각각 public1, private1... 등으로 설정해준 뒤, CIDR 도 각각 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24 이렇게 설정해준다.
이렇게 만들고 콘솔에 들어가면 네 개의 서브넷이 만들어진 것이 보인다.
이때 퍼블릭 서브넷은 웹 인스턴스(리소스) 를 올려줄 것이므로 클릭한 다음 작업 > 서브넷 설정 편집 에 들어가 '퍼블릭 IPv4 주소 자동 할당 활성화' 체크박스를 클릭해준다.
이걸 체크하지 않으면 퍼블릭 서브넷임에도 ec2 인스턴스를 올릴 때 자동으로 IP 주소 할당이 되지 않아 외부와 통신할 수 없다.
이제 서브넷을 만들었으니 네트워크 트래픽을 지정해주어야 한다. 즉, 라우팅 테이블을 만들어야 한다. 왼쪽 탭에서 라우팅 테이블을 클릭하고, 마찬가지로 원래 생성되어 있던 라우팅 테이블은 무시한 뒤 [라우팅 테이블 생성] 을 클릭한다.
서브넷이 프라이벳, 퍼블릭으로 있으므로 라우팅 테이블도 각각 하나씩 만들어줄 것이다.
라우팅 테이블로 들어가면 vpc 와 서브넷을 생성하는 과정에서 이미 만들어져 있는 라우팅 테이블이 있을텐데, 이걸 프라이빗 라우팅 테이블로 만들 것이다.
해당 라우팅 테이블을 클릭한 뒤 하단의 서브넷 연결 탭에 들어가서 [서브넷 연결 편집]을 클릭한다.
그러면 이용 가능한 서브넷 하단에 만들어뒀던 서브넷들이 보일텐데, 프라이빗 라우팅 테이블을 만들어줄 것이므로 프라이빗1,2 를 클릭해준다.
[연결 저장]을 눌러서 저장해주면 된다.
다음으로 퍼블릭 라우팅 테이블을 만들기 위해 라우팅 테이블 콘솔에서 [라우팅 테이블 생성] 을 클릭해준다. 이때 퍼블릭이 프라이빗 라우팅 테이블과 다른 점이 있는데, 바로 외부와 통신할 수 있게 게이트웨이를 열어주고 접속 가능한 ip 를 지정해줘야 한다는 점이다.
퍼블릭 라우팅 테이블을 생성했다면 우측 작업 > 라우팅 편집
에서 접속 가능한 IP, 게이트웨이를 설정할 수 있다.
모든 곳에서 접속 가능하게 만들 것이믈 ip는 0.0.0.0/0
으로 설정해주고, 게이트웨이는 생성해두었던 인터넷 게이트웨이로 등록한 뒤 변경 사장을 저장한다.
라우팅 테이블을 생성했다면 private 라우팅 테이블을 선택하고 아래의 서브넷 연결 탭에 들어가서 private 서브넷들을 체크한 다음 명시적으로 서브넷을 연결한다. public 라우팅 테이블과 서브넷에 대해서도 똑같이 해준다.
다음은 직접 웹 인스턴스를 서브넷에 올리기 위해 ec2 를 이용해보려 한다. EC2 서비스 콘솔에 들어가 [인스턴스 시작] 을 클릭한다.
설정은 이전과 비슷하게 해주고, OS 로는 우분투를 사용할 것이다.
마찬가지로 딱히 보안을 신경쓸 건 아니니까 키 페어는 생성하지 않는다.
이때, 우리가 만든 vpc 와 서브넷에 웹을 올려줄 것이므로 네트워크 설정란에서 이를 설정해줄 것이다.
vpc 는 이전에 만들어뒀던 vpc 를 등록해주고, 서브넷은 public 서브넷으로 등록해준다. 다음으로 방화벽은 0.0.0.0/0 그러니까, 모든 ip 에서 접속하도록 허용해준다.
다음으로 ssh 를 통해 서버에 접속해줄테니 ssh 는 당연히 있고, http:// 로도 접속해줄 테니 HTTP 보안 규칙을 추가한 뒤 소스 유형은 [위치 무관] 으로 설정해준다.
이런 설정이 끝났다면 우선 기본적인 아키텍처는 끝난 것이다.