아마존 웹 서비스(AWS)에서 R 서버 구축하기
AWS · 케이플러스 한성탁 ·아마존 웹 서비스의 Elastic Compute Cloud(EC2)를 이용하여 무료로 사용 가능한 R-서버를 구축해보겠습니다. R 서버는 리눅스에서 구동하고, 클라이언트 환경은 윈도우 10인 상태에서 작업을 하겠습니다.
https://aws.amazon.com/ko/console/ 으로 접속하여 로그인을 합니다. 기존 아마존 계정이 있으신 분은 그 계정으로 로그인하고, 없으신 분은 새로 만드셔야 합니다.
로그인 할 경우 다음과 같은 화면을 볼 수 있습니다. EC2를 눌러서 들어갑니다. 처음 사용하시는 분은 무료 용량 초과시 과금을 위해 신용카드 정보를 등록하라고 할 것입니다.
굉장히 메뉴가 많습니다. 우선 오른 쪽 위에 Support 옆의 region을 클릭하면 지역을 정할 수 있습니다. 지역마다 전부 가격이 다른데, 미국이 가장 저렴하고 서울은 약간 가격이 높습니다. 요금표를 확인하고 개인적으로 선택하시기 바랍니다.
지역 설정 후 Instances를 들어갑니다.
파란 Launce instance 박스를 클릭합니다. 7개의 스텝으로 이루어진 설정 화면이 우리를 반겨줍니다.
-
AMI는 간단하게 운영체제라고 생각하면 됩니다. 여러 가지 운영체제가 있는데, 아이콘 밑에 Free tier eligible 이라고 써 있는 것 중에 고르시면 됩니다. 여기서는 우분투를 선택하겠습니다.
-
Instance Type을 고릅니다. Free tier eligible은 t2.micro 뿐입니다. 이 것을 고릅니다. t2 인스턴스 같은 경우는 일종의 cpu 사용 허가량(credit)이 정해져 있다는 점을 유의하시기 바랍니다.
-
설정창입니다. 저는 건들지 않았습니다.
-
인스턴스에서 사용하는 저장장치 설정입니다. 저는 기본 설정대로 8기가 SSD로 하였습니다. 오른쪽에 Delete on Termination가 체크되어 있으면 인스턴스를 끌 때(Terminate) 저장장치도 같이 지워집니다. Terminate 말고 Stop 시킬 수도 있으니 자유롭게 선택하시면 됩니다. 어느 쪽으로든 저장장치를 보존하면 요금이 부과됩니다.(Free tire 할당량이 있습니다)
-
태그는 넘어가겠습니다.
-
Security group에서는 기본적으로 포트 22가 할당되어 있고, R 서버에서는 포트 8787을 사용하므로 Custom TCP를 추가하고 8787로 지정해 주시면 됩니다.
-
전체적인 요약화면입니다.
모든 과정이 끝나면 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.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.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 시키는 것을 잊지 마시기 바랍니다.