본문 바로가기

클라우드/Public Cloud(Naver, Amazon)

aws 웹서버 구축(tech-1)

본 실습에서는 Amazon Virtual Private Cloud(VPC)를 사용하여 자체 VPC를 생성하고, VPC에 구성 요소를 추가하여 사용자 정의된 네트워크를 구성한다. EC2 인스턴스에 대한 보안 그룹을 생성한다. 웹 서버를 실행하고 이를 VPC에서 시작하도록 EC2 인스턴스를 구성 및 사용자 정의한다. Amazon Virtual Private Cloud(Amazon VPC) Amazon Web Services(AWS) 리소스를 고객이 정의한 가상 네트워크에서 실행할 수 있는 서비스이다. 이 가상 네트워크는 사용자의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사하며 AWS의 확장 가능한 인프라를 사용한다는 이점이 있습니다. 여러 가용 영역을 포괄하는 VPC를 생성할 수 있다.

보안 그룹은 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상 방화벽 역할을 한다. 인스턴스를 시작할 때 하나 이상의 보안 그룹을 인스턴스와 연결한다. 연결된 인스턴스로 트래픽의 송신 또는 수신을 허용하는 규칙을 각 보안 그룹에 추가한다. 인터넷 게이트웨이(IGW) VPC 구성 요소로서 VPC와 인터넷에서 인스턴스 간 통신을 허용한다. 라우팅 테이블은 네트워크 트래픽이 향하는 방향을 결정하는 데 사용되는 경로 라는 규칙 세트를 포함한다. VPC에 있는 각 서브넷은 라우팅 테이블에 연결되어 있어야 한다. 라우팅 테이블이 서브넷에 대한 라우팅을 제어한다. VPC를 생성하면 각 가용 영역에 하나 이상의 서브넷을 추가할 수 있다. 각 서브넷은 하나의 가용 영역 내에 모두 상주하며, 다른 영역으로 확장할 수 없다. 서브넷 트래픽이 인터넷 게이트웨이로 라우팅되는 경우 해당 서브넷을 퍼블릭서브넷이라고 한다. 서브넷이 인터넷 게이트웨이로 라우팅되지 않으면 해당 서브넷을 프라이빗서브넷 이라고 한다. 아래와 같은 망을 구성하여 보겠다.

 

VPC Services를 클릭한다.

VPC 망을 구성하는데 Wizard를 통해서 구성하여 보겠다. VPC Wizard 클릭!

PrivatePublic으로 구성된 네트워크 선택한다. 중요한 점은 하나 이상의 프라이빗 서브넷을 포함하여야 한다. 프리이빗 서브넷은 인터넷 게이트웨이로 라우팅하는 규칙이 없는 서브넷이다. Publicnat게이트웨이를 통해서 외부로 나갈 수 있다. 이 그림에서는 하나의 가용 영역에서 2개의 서브넷으로 구성된 VPC를 생성한다.

먼저 10.0.0.0/16대역을 갖는 VPC를 설정하고, 이름은 My Lab VPC로 하겠다. 다음 그림 왼쪽의 AZ설정을 위해 Pulbic subnet10.0.1.0/24대역으로 하고 가용영역을 첫번째 걸 선택한다.(2a) 이름은 Public Subnet 1으로 하겠다. Private subnet10.0.3.0/24d대역으로 하고 가용영역도 역시 첫번째 것으로 서로 같게 설정해줘야 한다.(2a) 이름은 Private Subnet 1으로 설정하겠다. NAT 인스턴스를 사용하기 위해 오른쪽에 Use NAT gateway instead를 선택하고 t2.micro로 설정하고 key pair 값을 선택한다. 그 후에 create VPC를 선택한다. 무사히 생성되었다는 화면에 OK를 클릭한다.

왼쪽의 가용 영역이 완성된다. 이번에는 Wizard가 아닌 클릭을 이용해서 subnet를 구성해보겠다. 왼쪽 창에서 subnets를 클릭한 뒤 create subnet을 클릭한다.

Public subnet을 만들겠다. 이름은 Public Subnet 2로 설정하고 VPC는 위에 만든 MY Lab VPC를 선택하면 무사히 CIDRs에 대역이 나온다. 가용 영역은 두번째인 2b를 선택하겠다. 대역은 10.0.2.0/24로 설정하고 생성한다

Private Subnet도 만들겠다. 이름은 Private Subnet으로 하고, 역시 VPCMy Lab VPC를 선택한다. 가용영역도 두번째인 2b를 선택하고 대역을 10.0.4.0/24대역으로 설정하면 Pricate Subnet 설정이 끝이 난다.

My Lab VPC Main yes로 되어있는 부분에 이름을 Private Route Table이라고 설정한다. 이름 설정은 Name 필드에 마우스를 올려놓으면 연필모양의 아이콘이 보인다. 이것을 클릭하고 체크모양을 클릭하여 저장하면 된다.

선택한 후 아래 Routes탭을 확인한다. Target eni-xxxxxxxxxxx로 설정되어 있는지 확인한다. 이 라우팅 테이블은 프라이빗 서브넷에서 탄력적 네트워크 인터페이스(ENI) 및 인스턴스 ID로 식별되는 NAT 인스턴스를 트래픽을 라우팅하는데 사용한다.

Subnet AssociationsEdit subnet-associations를 선택한다.

Private Subnet 1 Private Subnet 2를 선택하고 save를 선택한다.

위와 똑같이 Main no라고 설정되어 있는 부분에 Public Route Table이름 설정!

아래쪽 창에서 Routes탭을 클릭하고 igw로 설정되어 있는지 확인한다. 이 라우팅 테이블은 퍼블릭 서브넷에서 인터넷으로 통신 되도록 상용된다.

Subnet Associations탭에서 Edit 선택한다.

Public Subent1,2를 선택한 후 저장한다.

VPC 보안 그룹을 생성하겠다. 왼쪽 탐색 창에서 Security Groups를 선택 후 create클릭!

이름은 WebSecurityGroup 설명은 Enable HTTP access입력하고 생성하겠다.

무사히 생성된 보안그룹을 선택한다.

아래쪽에 inbound 규칙 탭을 클릭한 후 규칙을 수정한다.

TYPE필드에서 열어줄 TYPE을 선택한다. HTTPSSH를 열어주겠다. Source에는 0.0.0.0/0입력하여 모든 ip를 열어줄 것이다.

EC2 인스턴스 생성을 위해 EC2 Sevice로 이동하고 Lanch Instance를 클릭한다.

생성할 인스턴스의 이미지를 선택한다. 리눅스 기반의 인스턴스를 생성할 것이므로 선택!

인스턴스 타입을 선택한다. 인스턴스 타입은 규모에 따라 나눠진다. Freet2.micro 선택!

생성할 인스턴스 개수 선택하고 Network는 생성한 My Lab VPC를 선택하고 Subnet은 오른쪽 그림이므로 Public Subnet 2를 선택하고 공인 ip 할당은 enable로 한다.

생성하자마자 바로 웹 페이지를 구축하기 위해 Linux 인스턴스에 php 웹 애플리케이션 설치하는 코드를 user data 상자에 입력한다.

저장소와 tag도 각각 선택하여 추가하여 준다.

보안 그룹은 기본 값이 아닌 미리 만들어 둔 WebSecuriyGroup을 선택한다.

생성을 위해 Launch를 선택한 후 기존에 받았던 키페어을 사용한 후 인스턴스 시작!

제일 아래쪽에 status를 보면 2/2checks passed가 나왔다. 무사히 생성되었음을 확인할 수 있다. 웹 페이지 동작을 확인하기 위해 선택한 후 밑에 설명에 public DNS의 주소를 복사하여서 웹페이지에서 열어 보았다.

AWS 로고 및 인스턴스 메타데이터 값을 표시하는 웹 페이지가 보인다. 무사히 동작한다.

보안 그룹에 HTTP뿐 아니라 SSH도 열어주었는데 SSH도 작동하나 확인하기 위해 Xshell을 이용하여 접속하여 보겠다. 호스트를 공인 ip로 해주고 사용자를 ec2-user로 한 후 미리 받아 놓았던 키 페어를 이용하여 접속한다.

무사히 SSH접속이 가능하고 sudo su – root에 접근도 가능하다.