2023-01-11 · 8

AWS EC2(Elastic Compute Cloud)

cloudawsec2

이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.

EC2(Elastic Compute Cloud)이란?

Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. Amazon EC2에서는 확장 또는 축소를 통해 요구 사항 변경 또는 사용량 스파이크를 처리할 수 있으므로 트래픽을 예측할 필요성이 줄어듭니다. - 공식 아마존 문서

EC2는 독립된 컴퓨터 한대를 임대해서 사용할 수 있게 해주는 서비스입니다.

EC2의 장점

  • 매우 쉽게 컴퓨터 한대를 구성할 수 있습니다.
  • 원하는 스펙을 맞추기 쉽고 그에 따른 돈만 지불하면 됩니다(ㅠ)
  • EBS (Elastic Block Store) 볼륨을 구성하여 영구 스토리지로 저장이 가능합니다.
  • EIP (Elastic IP Address)를 사용하여 고정 IP를 할당할 수 있습니다.

VPC & EC2 사용

vpc설정은 전 블로그에서 설정을 다 끝내고 난 후 입니다. EC2페이지입니다, Launch instaces를 눌러줍니다.

AMI는 Amazon Linux로 선택하였지만 원하시는 걸로 선택하시면 됩니다. 더 자세한 AMI정보들은 Quick Start 오른쪽 Browse more AMIs를 눌러서 확인해 줄 수 있습니다.

Instance type에는 여러 성능에 맞는 여러 인스턴스 정보들이 쭉 있습니다. 원하는 것을 골라서 사용하면 됩니다. 그 다음 Key pair를 인증서가 없기 때문에 만들어줘야합니다. 오른쪽 Create new key pair를 눌러줍니다.

키 이름만 제대로 설정해 주고 Create key pair를 눌러줍니다. 키는 분실하지 않게 잘 보관해 둬야합니다.

바로 아래 있는 Network settings입니다. 위와 같은 화면이 아니실텐데 Edit를 누르면 됩니다. VPC와 Subnet를 설정해줍니다. Auto-assign public IP는 Public IP를 자동적으로 할당시켜주는 건데 저희는 EIP를 사용하여 고정 IP를 넣어줄거기 때문에 Disable로 하였습니다.

나중에 이 서버의 용도에 따라 알맞게 설정해 주면 됩니다. 저는 웹 서비스로 이용하기 위해서 HTTP, HTTPS 포트를 추가로 열어주었습니다.

  • Request Spot Instances는 사용자 제시 가격부터 커지면 인스턴스를 종료하고 작아지면 시작하는 Spot Instances를 사용할꺼냐는 체크박스입니다. 제가 원하는건 온디맨드, 즉 사용자가 원할땐 언제든지 요청을 보내줘야하기 때문에 체크를 하지 않을 것 입니다.
  • Domain join directory는 AWS의 Microsoft Active Directory 완전관리형 서비스입니다. 이 서비스를 이용할 것 인지 확인하는 칸입니다.
  • IAM instance profile는 IAM(identity and access management)의 약자로 aws에대한 리소스 권한을 제어하고 관리할 수 있는 서비스 입니다. 이미 IAM이 존재한다면 여기 칸에서 할당하시면 됩니다.
  • Hostname type는 인스턴스를 생성을 할 때 호스트이름에 IP를 넣을 것인지 인스턴스ID와 같은 리소스들을 넣을 것인지 정하는 곳입니다.
  • Instance auto-recovery는 인스턴스가 시스템 상태 확인에 실패하면 인스턴스가 이를 자동적으로 복구를 할지 정하는 곳입니다.
  • Shutdown behavior는 운영체재 영역에서 shutdown이 실행되때 instance를 STOP할건지, TERMINATE할건지 선택하는 곳입니다.
    • terminate instance는 인스턴스를 종료하면 가상머신이 영구적으로 제거되며 모든 데이터가 삭제됩니다. 또한 EBS 볼륨이 분리되고 삭제됩니다.
    • stop instance는 인스턴스를 종료하면 가상머신이 영구적으로  제거되며 모든 데이터가 삭제됩니다. 중요한 차이는 stop instance는 EBS 볼륨이 삭제 않는다는 것 입니다. EBS 볼륨에 대한 표준 요금이 적용됩니다. 
  • Stop - Hibernate behavior는 인스턴스를 최대절전모드로 변경하는 옵션을 선택할 수 있는 곳입니다.
  • Termination protection는 인스턴스가 갑자기 종료되지 않도록 보호하는 옵션입니다. 이 기능을 Enable시키면 CLI나 management console등에서 바로 인스턴스를 종료할 수 없게됩니다.
  • Stop protection는 인스턴스가 갑자기 중지되지 않도록 보호해주는 옵션입니다.
  • Detailed CloudWatch monitoring는 저희가 인스턴스를 만들면 아마존의 CloudWatch를 통해 인스턴스에 대한 지표를 모니터링 할 수 있는데 이 옵션을 Enable하면 무료로 제공하는 CloudWatch 기능 외에 추가적인 세부 모니터링 지표를 볼 수 있는 옵션입니다. 이에 따론 추가 요금은 당연히 나오게 됩니다.
  • Elastic inference는 딥러닝처럼 하드웨어 가속화가 필요할 때 사용되는 옵션입니다.
  • Credit specification, aws instance에서는 burstable performance instances를 지원을 합니다.
    • 이는 평소에 기본적이고 고정적인 성능을 사용을 하다 특정 시점에 해당 성능 이상의 컴퓨팅이 필요할 경우에 크레딧을 이용하여 순간적으로 컴퓨팅성능을 버스트시키는 것을 말합니다.
    • 이 옵션에서 unlimited를 선택하게 되면 크레딧이 다 떨어져도 aws으로 부터 크레딧을 추가적으로 제공받아 필요한 시점에 성능을 끌어올릴 수 있게 됩니다. 당연히 이 옵션은 유료이며 잘못사용하면 상위 인스턴스를 사용하는 것 보다 비싼 요금을 낼 수도 있습니다.
  • Placement group는 인스턴스를 만들때 해당 인스턴스를 어디에 배치할지 결정하는 옵션입니다.
  • EBS-optimized instance는 EBS의 개선된 성능을 제공하는 옵션입니다. 이 옵션은 제한된 instance type에서만 활성화가 됩니다.
  • Capacity reservation는 특정 가용영역에서 사용할 인스턴스 용량을 미리 예약해주는 옵션입니다.
    • 미리 할당해둔 Capacity reservation에 인스턴스를 사용하고자 할때는 Target by ID 또는 Target by Group옵션을 선택합니다.
    • 이 옵션을 사용하지 않을 경우에는 None를 선택합니다.
    • 지금 만든 인스턴스를 나중에 만들 Capacity reservation에 적용하고자 한다면 open를 선택해주면 됩니다.
  • Tenancy는 물리적으로 다른 사람과 같은 서버에서 인스턴스를 사용할 수도 있기 때문에 물리적으로 다른 사람들과 분리를 해서 전용 인스턴스나 전용 호스트를 사용할 필요가 있을 때 이 옵션을 설정합니다. 이에 따른 추가요금도 발생합니다.
    • 전용 인스턴스를 사용한다면 Dedicated - run a dedicated instance 옵션을 선택하시면 됩니다.
    • 전용 호스트 인스턴스를 사용한다 하면 Dedicated host - launch this instance on a dedicated Host를 선택하시면 됩니다.
    • 이 외에는 Shared - run a shared hardware instance를 선택하시면 됩니다.
  • RAM disk ID, Kernel ID값은 Select값 드대로 나두는 것을 추천합니다.
  • Nitro Enclave는 인스턴스내에서 민감한 정보를 보호하고 안전하게 처리할 수 있는 옵션입니다. 특정 instance type에 활성화 됩니다.
  • License configurations는 aws license manager에서 설정한 license 고정을 인스턴스에 적용할 수 있는 옵션입니다.
  • Metadata accessible는 인스턴스 메타데이터에 Access할 수 있는 여부를 선택하는 옵션입니다.
  • Metadata version는 인스턴스 메타데이터의 버전을 선택할 수 있는 옵션입니다.
  • Metadata response hop limit는 인스턴스 메타데이터 허용된 홉 수 제한을 하는 옵션입니다.
  • Allow tags in metadata는 인스턴스가 메타데이터에서 인스턴스 tag에 대한 접근을 허용할지 선택하는 옵션입니다.
  • User data는 인스턴스가 생성되면서 root권한으로 실행되는 스크립트를 넣는 공간입니다.
    • 예시링크 ← 이러한 사이트에서 보면 자신이 원하는 대로 bash script를 짜서 넣는 것을 볼 수 있습니다.

전부 다 설정했으면 Launch instance를 클릭하여 인스턴스를 만들어줍니다.

정상적으로 생성된것을 확인할 수 있습니다. 하지만 Instance auto-recovery를 Disable 해줬기 때문에 Public IPv4는 없는 것을 볼 수 있습니다. EIP를 설정하러 갑시다.

Network & Security에서 Elastic IPs를 눌르고 Allcate Elastic IP address를 클릭해줍니다.

Tags에서 Name만 설정해주고 Allocate로 생성해줍니다.

잘 만들어진 것을 볼 수 있습니다. 여기서 맨위 Assciate this Elastic IP address를 눌러 EC2에 할당해줍니다.

위 사진처럼 Instance를 선택한 후 Associate로 할당시켜줍니다.

Public Ipv4가 잘 할당된 것을 확인할 수 있습니다. 이제 인스턴스에 접속해 봅시다. 이제 ~/.ssh/config파일에 아래와 같이 정보를 넣어주세요.

Host public-ec2-a1
    HostName [DNS or IP]
    User ec2-user
    IdentityFile [.pem file location]
    Port 22

넣었다면 cmd에서 **"ssh public-ec2-a1"**이렇게 치면 생성한 인스턴스에 접속할 수 있습니다.

이렇게 잘 접속되는 것을 확인할 수 있습니다. 이제 public IP로 웹사이트에 접속해보겠습니다.

Apache가 잘 깔린것을 확인할 수 있었습니다. 이제 맨 마지막에 있던 phpinfo.php에 접속해봅시다.

아주 잘! 접속되는 것을 확인할 수 있습니다.

user-data에 적어둔 스크립트가 잘 작동한 것을 확인하였습니다. 이제 public-subnet-c1를 만들어봅시다. public-subnet-a1을 AMI로 저장한 후 똑같이 만들면 됩니다.

public-ec2-a1를 체크하고 우클릭합니다. 그 후 Image and templates, Create image를 눌러 AMI를 만들어줍니다.

AMIs에 들어가면서 제대로 만들어진것을 확인할 수 있습니다.

위 사진처럼 새롭게 인스턴스를 생성시키고 위에서 했던 세팅 user-data빼곤 그대로 하시면 됩니다. 그 후 EIP도 만들어서 적용시켜줍니다.

Host public-ec2-c1
    HostName [DNS or IP]
    User ec2-user
    IdentityFile [.pem file location]
    Port 22

이제 c1로 위 코드를 적용합니다. 그리고 ip 또는 도메인으로 웹 사이트도 잘 접속되는 것을 확인할 수 있습니다.

수고하셨습니다. 기본적인 EC2사용방법은 전부 익히셨습니다!


원문: tistory — 2023-01-11 발행, 이 블로그로 이전됨.

댓글

댓글을 삭제할까요?

관련 글

AWS EC2(Elastic Compute Cloud) · 나봄하랑