[AWS] Request Spot Instances 이용하기

EC2 Instance에서 t2.micro(free tier)만을 사용하다가  R package 중에서 프로젝트에 반드시 필요한 ggplot2나 dplyr을 설치 시 용량 부족을 보고 더 큰 용량으로 옮기려고 했다.

그런데 이런 경우 돈이 들어간다.

그럼 돈을 아끼면서 내용들도 그대로 옮기고 용량만 옮길 방법을 찾다가 발견하였다.

바로, Request Spot Instances 이다.

 

Request Spot Instances 란?

EC2에서 instance를 요구할 수 있다는 것은 다들 알 것이다.
이렇게 정식적으로 요구하여 받은 부분은 나에게 고정적으로 주어진 서버가 된다.

그러면 누구도 사용하지 않는 남는 부분들은 어떻게 될까?
AWS의 입장에선 낭비이며 손해가 된다.

그래서 이 부분들을 적은 용량으로 제공해주며 언제든 다시 AWS에서 회수해 갈 수 있도록 약속하고 빌려주는 부분이다.

즉, 우리 입장에서는 적은 돈으로 더 고용량 고성능의 서버를 제공 받을 수 있는 것이다.

하지만, 단점이 앞서 말했듯이 언제 사라질지 모른다는 점이다.

갑자기 AWS에서 사용자가 몰려서 용량이 부족해지면 제일 먼저 이런 spot instance부터 해지하여 사용자에게 나눠주는 것이다.

그래서 아래와 같이 확정된 우리가 사용해온 보통의 instances를 On-Demand(채움)로 표시하고, Spot Request로 언제 사라질지 모르는 instances를 Spot instances(점선)로 표기한다.

aws EC2 OnDemand And Spot instances.png

 

Region 옮기기

우리는 지금까지 region을 seoul로 사용하고 있었다.
그런데 Spot Request는 Ohio나 N. Virginia, Tokyo를 이용하는 것이 좋다.

가장 싼 가격은 N. Virginia라고 추천 받았기에 사용해보자.

그럼 기존에 사용하던 데이터는 어떻게 해야 할까?
만약 별로 해둔 것이 없어서 새로 만드는 것이 편하다면 이 부분은 생략해도 좋다.

하지만, 현재 volume에 있는 데이터가 반드시 필요하다면 다음과 같이 하면 된다.

aws EC2 Create Snapshot.png

위와 같이 EC2로 들어가서 Volumes를 클릭!

그리고 복사할 Volume을 클릭하고, Actions를 클릭하고 Create Snapshot을 클릭한다.
그럼 아래와 같이 나올 것이다.

aws EC2 Create Snapshot Click.png

이름과 설명을 적어두고 Create를 클릭해 준다.
이제 스냅샷이 생성될 것이다. 길게는 2 ~ 3분 까지 걸릴 수도 있으므로 기다리자.

스냅샷이 생성되고 나면 이 것을 토대로 AMI를 만들어 줄 것이다.
아래와 같이 만들어진 스냅샷을 클릭하고 Create Image를 클릭하자.

aws EC2 Sanpshot Create Image

위와 같이 했다면 아래와 같은 그림이 나올 것이다.

aws EC2 Create Image from EBS Sanpshot

Vitualization type을 Hardware-assisted virtualization으로 설정하고, 이름을 입력한 뒤 Create 버튼을 클릭하자.

Hardware-assisted virtualization, 통칭 hvm으로 설정하는 이유는 경험인데 바꿔주지 않았을 경우 뒤에서 instance의 type 선택 시 원하는 type의 instance가 선택되지 않기 때문이다.

AMI를 생성하는 데도 어느 정도 시간이 소요가 된다.
만약 AMI 생성이 끝난다면 아래와 같이 Status가 available로 뜨게 될 것이다.
snapshot 생성보다 오래 걸릴 수 있다.

aws EC2 AMIs available check

AMI가 만들어졌다면 이제 이 자료를 다른 region으로 옮기자.

간단하다.
원하는 AMI를 클릭하고 Actions의 Copy AMI를 클릭하며 된다.

aws EC2 AMIs Copy AMI.png

그렇게 되면 아래와 같이 나오는데 여기서 원하는 region을 클릭하여 복사하면 조금 뒤 해당 region에서 AMIs에 생성되는 것을 볼 수 있다.

aws EC2 Copy AMI.png

이제 N. Virginia로 넘어가 AMI가 생성되어 available 상태가 된 것을 확인했다면 다음 단계로 넘어가자.

 

Request Spot Instances

이제 드디어 Spot Request를 할 준비를 마쳤다.

이제 region이 맞는지 확인하고, Spot Request로 들어가 Request Spot Instances 버튼을 클릭!

aws EC2 spot requests

클릭하여 들어가면 먼저 아래와 같은 화면이 될 것이다.

aws EC2 Spot Requsts Instances step1.png

먼저 Search for AMI에서 우리가 만들어둔 혹은 사용할 AMI를 설정해준다.
버튼을 클릭하면 아래와 같은 화면에서 해주면 된다.

aws EC2 Choose AMI.png

다음은 Instance type을 선택해야하는데 EBS only라는 것을 반드시 준수하자.
그리고 가격은 1시간당 들어가게 될 평균 가격이며 크게 작업이 없으면 아래와 같이 m4.large로도 충분히 가능할 것이다.
용량이 적을 시에는 더 큰 것을 선택할 것.

만약, gpu에서 Deep learning을 돌릴 경우는 p2나 g2 시리즈를 골라야 빠르다.

aws EC2 select instance types.png

이렇게 Instance type까지 설정해 주고 나면 Create를 눌러 step2로 넘어가자.

Step2 에서는 반드시 해야할 것이 Delete의 체크를 해제하는 것이다.

만약 해제하지 않으면 request한 spot이 해지 될 경우 자료도 한번에 날아감으로 만약에 spot이 해지되어도 자료를 보존하기 위함이다.

aws EC2 Spot Requsts Instances step2

체크 해제를 확인하고 나면 간단히 Key pair 설정과 Security group 설정을 확인해두자.

aws EC2 Spot Requsts Instances step2_2

만약 이번에 처음으로 N. Virginia region을 이용한다면 이번 기회에 key pair도 만들어 두고 잘 보관하자.

Security group까지 확인하고 나면 Review를 눌러 Step 3로 넘어가고, 바로 Create 버튼을 눌러 생성해보자.

Request가 끝나고 spot까지 할당되게 되면 아래와 같이 Running Instance가 하나 생기게 된다.

aws EC2 Spot instance complete check.png

그럼 이제 만들어진 Intance를 이용하여 작업을 이어나가자.

그리고나서 Server 이용이 끝나면 반드시 Cancel Spot request를 하여 쓸데없는 돈이 나가지 않도록 해주자.

aws EC2 Spot request cancel.png

그리고 새로 spot request시 에는 이전에 사용하던 볼륨에서 다시 스냅샷을 만들고 다시 그 스냅샷으로 AMI를 만들어주면 이전 자료를 그대로 불러와서 다시 Intance 생성이 가능해진다.

 

다음에는…

이제 R에서 package 다운시 용량부족이라는 문제를 해결했다.
그러면 이를 토대로 본래하려 햇떤 R 언어에서 S3의 자료를 불러오는 것을 해보자.

그렇다면 이제 R을 이용한 서버이용이 더 완벽해질 것이라는 느낌이 든다.

 


Reference

https://aws.amazon.com/ko/ec2/spot/

https://hunkim.github.io/ml/

https://hunkim.github.io/ml/lab14-aws_spot_instance.pdf

Advertisements

[AWS] Request Spot Instances 이용하기”에 대한 1개의 생각

  1. 핑백: AWS 주간 소식 모음 – 2017년 6월 19일 - 지락문화예술공작단

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중