아마존 웹 서비스(AWS)에서 R 서버 구축하기

아마존 웹 서비스의 Elastic Compute Cloud(EC2)를 이용하여 무료로 사용 가능한 R-서버를 구축해보겠습니다. R 서버는 리눅스에서 구동하고, 클라이언트 환경은 윈도우 10인 상태에서 작업을 하겠습니다.

https://aws.amazon.com/ko/console/ 으로 접속하여 로그인을 합니다. 기존 아마존 계정이 있으신 분은 그 계정으로 로그인하고, 없으신 분은 새로 만드셔야 합니다.

aws 메인 화면

로그인 할 경우 다음과 같은 화면을 볼 수 있습니다. EC2를 눌러서 들어갑니다. 처음 사용하시는 분은 무료 용량 초과시 과금을 위해 신용카드 정보를 등록하라고 할 것입니다.

ec2 제어 화면

굉장히 메뉴가 많습니다. 우선 오른 쪽 위에 Support 옆의 region을 클릭하면 지역을 정할 수 있습니다. 지역마다 전부 가격이 다른데, 미국이 가장 저렴하고 서울은 약간 가격이 높습니다. 요금표를 확인하고 개인적으로 선택하시기 바랍니다.

지역 설정 후 Instances를 들어갑니다.

instances 목록 화면

파란 Launce instance 박스를 클릭합니다. 7개의 스텝으로 이루어진 설정 화면이 우리를 반겨줍니다.

instances 생성 화면

  1. AMI는 간단하게 운영체제라고 생각하면 됩니다. 여러 가지 운영체제가 있는데, 아이콘 밑에 Free tier eligible 이라고 써 있는 것 중에 고르시면 됩니다. 여기서는 우분투를 선택하겠습니다.

  2. Instance Type을 고릅니다. Free tier eligible은 t2.micro 뿐입니다. 이 것을 고릅니다. t2 인스턴스 같은 경우는 일종의 cpu 사용 허가량(credit)이 정해져 있다는 점을 유의하시기 바랍니다.

  3. 설정창입니다. 저는 건들지 않았습니다.

  4. 인스턴스에서 사용하는 저장장치 설정입니다. 저는 기본 설정대로 8기가 SSD로 하였습니다. 오른쪽에 Delete on Termination가 체크되어 있으면 인스턴스를 끌 때(Terminate) 저장장치도 같이 지워집니다. Terminate 말고 Stop 시킬 수도 있으니 자유롭게 선택하시면 됩니다. 어느 쪽으로든 저장장치를 보존하면 요금이 부과됩니다.(Free tire 할당량이 있습니다)

  5. 태그는 넘어가겠습니다.

  6. Security group에서는 기본적으로 포트 22가 할당되어 있고, R 서버에서는 포트 8787을 사용하므로 Custom TCP를 추가하고 8787로 지정해 주시면 됩니다.

  7. 전체적인 요약화면입니다.

key pair 생성 화면

모든 과정이 끝나면 key pair를 생성하라고 합니다. 이 key pair가 있어야 파일에 대한 접근이나 인스턴스 제어가 가능합니다. 잘 보관합니다.

만일 클라이언트가 리눅스일 때는 다음 명령어로 바로 접속 가능합니다.

chmod 400 my-key-pair.pem
ssh -i my-key-pair.pem ubuntu@ec1-23-456-78-900.ap-northeast-2.compute.amazonaws.com

key pair 파일은 .pem으로 되어있는데, 우리가 사용하기 위해서는 .ppk로 변환시켜줘야 합니다. Putty 홈페이지(링크) 에 들어가서 putty.exe와 puttygen.exe를 다운받습니다.

puttygen 화면

그리고 puttygen.exe를 실행합니다. SSH-2 RSA가 체크되어 있는지 확인하고, Load 버튼을 눌러 방금 발급한 .pem 파일을 불러옵니다. 그 후 Save private key 버튼을 눌러 같은 이름으로 .ppk 파일을 저장합니다. 경고창에 대해서는 yes를 클릭하세요.

이제 putty로 인스턴스에 접속해보겠습니다. 전의 인스턴스 목록 화면으로 돌아가 생성된 인스턴스를 클릭하고 하단을 보면 Public DNS: ec1-23-456-89-000.ap-northeast-2.compute.amazonaws.com 형식의 주소를 확인할 수 있습니다. 이를 복사합니다.

putty 화면

그리고 putty.exe를 실행합니다. Host name에 아까의 DNS 주소를 붙여넣고, 왼쪽 메뉴에서 Connecion - SSH - Auth로 들어갑니다. Private key file for authentication에서 방금 생성한 .ppk파일을 선택한 후 프로그램 하단 open을 클릭합니다.

등록되지 않았다는 경고 메시지가 뜨는 데 Yes를 누른 후

Login as:

에 ubuntu를 입력합니다. 기본 사용자입니다. 로그인 후 터미널 창이 열리면 성공입니다.

터미널 화면

이제 R과 Rstudio-server를 설치해보겠습니다.

아래 코드는 17. 03. 16. 기준 최신이며 Rstudio(링크)에서 제공합니다. 또한 Step1에서 보셨겠지만 대부분의 AMI는 64비트이며, 우분투도 64비트이므로 64비트 버전을 설치하겠습니다.

sudo apt-get update
sudo apt-get --assume-yes install r-base
sudo apt-get --assume-yes install gdebi-core
wget https://download2.rstudio.org/rstudio-server-1.0.136-amd64.deb
sudo gdebi rstudio-server-1.0.136-amd64.deb

rstudio-server를 설치하면 R 서버가 자동으로 실행됩니다. rstudio-server status 명령을 사용해서 작동중인지 확인한 후 앞에서 사용한 Public DNS 뒤에 포트를 붙여서

http://ec1-23-456-78-900.ap-northeast-2.compute.amazonaws.com:8787

를 인터넷 창에 입력하면 R 서버 로그인 창이 나옵니다. 아직 계정을 등록 안 해서 로그인 할 수 없으므로 계정을 등록합니다. 리눅스 터미널 창으로 돌아가서

sudo passwd ubuntu

를 입력하면 ‘ubuntu’계정의 비밀번호 설정을 할 수 있습니다. 비밀번호가 *** 식으로 나오지 않고 아무것도 입력 되지 않은 것 처럼 보이지만 입력이 되고 있는 점만 유의하시면 됩니다. ubuntu는 아마존 우분투 서버의 기본 계정입니다.

이제 다시 R 서버 로그인 창으로 돌아가서 로그인을 시도하면 로그인이 되실 겁니다. 이유는 모르겠지만 sudo useradd를 이용하면 로그인 시 권한 오류가 발생합니다.

다른 유저 추가

R 서버 하나를 여러 명이 사용하거나 데이터의 접근 권한 등의 분리를 위해 추가적으로 유저를 등록할 수 있습니다.

sudo adduser 유저이름

passwd와 마찬가지로 아무것도 입력 되지 않은 것 처럼 보이지만 입력이 되고 있는 점 유의하시고 기타 정보 입력은 엔터로 건너뛰시면 됩니다.

과금에 대해

17. 03. 17. 기준으로 Free tier는 12개월 제공되며 무료 제공 할당량은 저장장치(EBS)의 경우 30 GB-Mo, 인스턴스(EC2) 경우 750시간입니다. 8기가 용량을 사용하는 t2.micro를 기준으로 3개 정도 사용하는 것이 적당해 보입니다. 인스턴스가 3개일 때 하나 당 250시간 정도 사용시 과금은 발생하지 않습니다.

Region에 상관없이 사용량이 합산 되어 계산되기 때문에 어차피 무료 범위 내에서만 사용할 경우는 가격이 비싼 Seoul이 유리합니다.

인스턴스 종료

사용이 끝난 후 인스턴스를 stop이나 terminate 시키는 것을 잊지 마시기 바랍니다.