[AWS] EC2 인스턴스(실습)

AWS 기초 - 5

Posted by owin2828 on 2020-01-16 09:20 · 10 mins read

들어가기 앞서


이전 포스팅에서는 실제 인스턴스를 생성하기 전 기본적인 구성을 끝마쳤다.
본 편에서는 다음의 요소를 구성하고 설정할 예정이다.

  • EC2

1. 키 페어 생성


  • 인스턴스 생성하기 전, 인증에 사용되는 키 페어를 만들기 위해
    사진처럼 EC2를 검색하여 이동한다.

  • 좌측의 메뉴에서 키 페어를 클릭 후, 키 페어 생성을 눌러 생성한다.

  • 규칙에 따라 사진처럼 keypair-apne2-dev-public으로 이름을 지정 후,
    생성을 누른다.

  • 사진처럼 키 페어가 생성됨이 확인되고, 다운로드가 시작이 된다.

    이때 생성되는 키 페어는 단 한번만 다운로드가 가능하므로, 주의하자
    잃어버릴 시, 키 페어를 새로 생성해야 한다.

  • 하나의 키 페어로 모든 인스턴스에 적용하는 것은 매우 위험하다.
    따라서 적절한 보안 규칙을 세워 키 페어를 관리해야한다.

2. 인스턴스(EC2) 생성


  • 좌측의 메뉴에서 인스턴스를 클릭 후, 생성을 클릭한다.

2-1. AMI 선택

  • 사진처럼 맨 위의 AMI선택한다.

    선택된 이미지는 아마존에서 지원하는 기본 이미지이다.
    또한, 사진 좌측의 AWS Marketplace커뮤티니 AMI등에서
    여러가지 옵션으로 준비된 이미지를 선택할 수 있다.

2-2. 인스턴스 유형 선택

  • 우리는 프리티어를 사용하므로, 사진처럼 녹색으로 표시된 t2.micro를 선택한다.

    여기서 유형 앞에 t가 붙는 것은 개발용이거나 테스트용이라는 의미이다.
    또한 t뒤에 숫자세대를 의미하며 클수록 최신이다.

  • 선택을 하였다면 다음: 인스턴스 세부 정보 구성을 눌러 진행한다.

    여기서 검토 및 시작을 누르게되면 우리가 원하는 VPC구성을 진행할 수 없다.
    그러므로 주의해서 진행하도록 하자.

2-3. 인스턴스 구성

  • 사진의 첫 번째 빨간 사각형에서 다음과 같은 설정을 진행한다.
    1. 네트워크는 기본 VPC로 선택이 되어있는데, 우리가 만든 VPC를 선택한다.
    2. 서브넷은 우리가 인스턴스를 생성할 서브넷을 지정해준다.
    3. 퍼블릭 IP 자동할당활성화를 해준다.

      외부와 통신하는 서비스는 활성화를 해줘야한다.
      서비스를 재실행시, Public IP는 고정되지만, Private IP는 변경되기 때문이다.

  • 두 번째 사각형에서는 다음과 같은 설정을 진행한다.
    1. 종료 방지 기능 활성화체크하여준다.
    2. 모니터링활성화하는 것을 권장한다.

  • 위의 설정이 되었다면, 다음을 눌러 진행한다.

2-4. 스토리지 & 추가

  • 딱히 수정할 사항은 없으므로 다음을 눌러 진행한다.

2-5. 보안 그룹 구성

  • 보안그룹은 이름을 참조하여 기존에 생성한 그룹을 선택한다.
    하단에 표시되는 프로토콜 규칙을 확인 후, 검토 및 시작을 누른다.

2-6. 검토

  • 화면에 표시되는 정보들을 확인하여 제대로 설정되었는지 검토 후, 시작하기를 누르면
    사진과 같은 키 페어 선택화면이 표시된다.
  • 이때 기존 키 페어를 선택하고, 체크박스에 체크하여 시작한다.

2-7. 확인

  • 제대로 설정이 되었는지 확인하기 위해 빨간 사각형들을 살펴본다.
    1. 인스턴스 상태: 생성 직후는 노란색으로 Pending이라 표시되지만 당황하지 말자.
      아직 준비 중이라는 뜻이며, 곧 사진처럼 초록색으로 running이 표시될 것이다.
    2. 인스턴스 ID, 상태, 유형을 확인한다.
    3. 가용영역보안그룹이 제대로 설정되었는지 확인한다.
    4. 키 페어 이름을 확인한다.
    5. 퍼블릭 DNS퍼블릭 IP를 확인한다.
      추후 ssh로 접속할 때 , 이 주소를 사용할 것인다.
    6. VPC가 제대로 할당되었는지 확인한다.

3. 인스턴스(EC2) SSH 접속


  • 새로 생성한 인스턴스에 접속하기 위해 사진처럼 연결을 눌러 가이드를 확인한다.

3-1. Mac & Linux

  1. 다운로드 받은 키 페어가 있는 디렉토리로 이동한다.
     $ cd (디렉토리위치)
    
  2. 키 페어 파일의 권한을 다음 명령어로 변경한다.
     $ chmod 400 keypair-apne2-dev-public.pem
    
  3. ssh를 이용해 다음 명령으로 접속한다.
     // 가이드에서 제공하는 DNS로 접속하는 방법
     // 사진에서 제공하는 명령어를 그대로 사용하면 된다.  
     $ ssh -i "keypair-apne2-dev-public.pem" ec2-user@ec2-1X-XXX-XXX-XXX.ap-northeast-2.compute.amazonaws.com
    
     // 퍼블릭 IP를 이용해 접속하는 방법
     $ ssh -i "keypair-apne2-dev-public.pem" ec2-user@(본인의 퍼블릭 IP)
    
  4. 성공적으로 접속되었다면, 다음과 같은 접속 허용 여부를 묻는 문구가 등장한다.
    (에러 발생시 6번으로)
     The authenticity of host '1X.XXX.XXX.XXX (1X.XXX.XXX.XXX)' can't be established.
     ECDSA key fingerprint is SHA256:+Kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
     Are you sure you want to continue connecting (yes/no)? yes
    
  5. 터미널 창에 yes를 입력해주면 다음과 같은 성공화면이 뜨게 된다.
             __|  __|_  )
             _|  (     /   Amazon Linux 2 AMI
             ___|\___|___|
    
     https://aws.amazon.com/amazon-linux-2/
     2 package(s) needed for security, out of 13 available
     Run "sudo yum update" to apply all updates.
     [ec2-user@ip-10-0-1-97 ~]$
    
  6. 만약 위 과정중 다음과 같은 에러를 마주할 때 몇 가지 대안을 소개한다.
     ssh: connect to host 1X.XXX.XXX.XXX port 22: Connection timed out
    
    • ssh용 22번 포트가 열려있는지 확인
    • VPC - 라우팅 테이블 설정에서 인터넷 게이트웨이의 설정 확인
    • VPC - 보안그룹 설정에서 인바운드 규칙을 클릭하여
      규칙 편집을 눌러 소스에서 내 ip를 눌러 갱신

      핫스팟 환경등 접속한 IP가 달라질 경우, 보안그룹의 설정을 갱신해야한다.

    그래도 안 될 경우, 이전 포스팅을 참고하여 차분히 하나씩 되짚어 보자.

3-2. Window

  • 윈도우의 경우 여기를 확인하여 진행한다.
  1. Putty를 설치한다.
  2. Puttygen을 이용하여 다운로드 받은 .pem 파일을 .ppk 파일로 변환한다.
  3. Host Name에 사진의 빨간 사각형의 정보를 붙여넣기 한다.


  4. Connection(연결) - SSH - Auth를 클릭하여 변경한 .ppk파일을 넣어준다.


  5. Open을 눌러 접속을 진행하면 mac & linux의 경우와 동일하게 접속에 성공한다.
  6. 만약 에러가 발생하거나, 접속이 안된다면, 위의 mac & linux 6번을 참조한다.

이로써 VPC를 하나 생성하고, 각종 설정들을 한 뒤 실제 인스턴스 EC2를 만들어 보았다.
생성한 EC2 인스턴스는 Bastion Host 역할을 하는 인스턴스로써,
VPC 내부의 Private 서브넷들을 관리하는 역할을 한다.

4. Public subnet을 통한 Apache 서버 구축


Bastion Host도 생성하였으니, 이번에는 간단한 웹 서버 역할을 하는 인스턴스를 생성한다.
동일한 방식으로 다음 조건의 서브넷과 인스턴스를 하나 더 생성한다.

  • VPC: 동일
  • Subnet
    • 이름: subnet-apne2c-dev-web
  • Routing Table
    • 이름: rt-apne2-dev-web
    • 인터넷 게이트웨이: 기존 것과 동일
  • Security Group
    • 이름: sg_apne2_dev_web
  • EC2(web server instance)
    • 이름: ec2-apne2c-dev-web
    • 키 페어: 기존 것과 동일

      실제 개발을 진행할 때는 규칙을 정하여 다른 키 페어로 하자.

성공적으로 생성하였다면, 새로 생성한 인스턴스에 ssh 접속을 하여 다음 명령을 실행한다.

$ sudo yum update
$ sudo yum install httpd
$ sudo systemctl start httpd
$ curl localhost

sudo yum update 명령어를 사용하면 시간이 걸리는데 당황하지말고 그대로 두자.

다음과 같은 화면이 나오면 정상 실행이 된 것이다.

아파치 웹서버를 구축한 모습

끝마치며


이로써 VPC 구성부터 시작해 인스턴스의 구성까지 길었던 과정이 끝났다.

간단하게 Bastion HostWeb Server를 구축하여 ssh 접속까지 해보았다.
실습에서 전부 다루지 못했던 부분은 다음과 같은데,
이어지는 포스팅에서 추가 설명으로 대체하겠다.

  1. Private Subnet을 구성하는 방법
  2. Bastion Host를 통해 Private Subnet에 접근하는 방법
  3. NAT
  4. ELB
  5. Elastic IP
  6. S3