Introduction

KT Cloud를 쓰다가, 원조격인 AWS(Amazon Web Service)를 사용하게 되었습니다. 확실히, 소문난 집은 틀리더군요. 더군다나, 장소에 구애를 받지 않는 Cloud 세상에서는 그 격차가 실로 확실하게 느껴졌습니다. 계정 생성과 같은 부분은 쉬이 하실 수 있기 때문에, Virtual Server를 생성하는 이야기를 주로 할까 합니다.

AWS Management Console

Screen-Shot-2014-03-07-at-07.51.45-pm 잘 차려진 밥상은 이를 두는 말하는 것이라 해도, 과언이 아닙니다. 너무나도 많은 서비스들이 있지만, 가장 기본적인 Virtual Server를 생성해 보도록 하겠습니다. EC2 (Elastic Compute Cloud)라고 불리는 이 서비스는 아마존의 가장 기본적인 Virtual Machine이자, 오늘 우리가 설치할 녀석입니다. 기타 다른 녀석들도 많지만, 가장 기본이 되는 녀석이라고 생각하시면 되겠습니다. 생각보다 요금 체계가 복잡합니다. 사양에 따라, 그 차이가 확연합니다. 눈 여겨 볼 점은 'On-demand'라는 점입니다. 즉, 사용한 시간만큼만 지불하면 됩니다. 즉, 내가 아무리 고사양 PC를 운영하더라도, 게임방처럼 쓴 만큼만 지불하면 됩니다.

Create Instances

개별 Virtual Machine을 지칭하는 말로는 여러가지가 있습니다. Instance도 그 중 하나인데요, VM을 생성한다고 이해하시면 되겠습니다. 'Create Instance' 혹은 'Launch Instance'를 선택하시면 VM을 생성하는 마법사가 나타납니다.

Step1. Choose an Amazon Machine Image

Screen-Shot-2014-03-10-at-09.59.05-am 제일 처음 진행하는 일은, AMI(Amazon Machine Image)를 선택하는 것입니다. OS를 선택하신 다고 생각하면 됩니다. 다만, AMI AMI는 Virtual Machine을 만들때 그 기반이 되는 Image를 뜻합니다. 간단히 말씀드려, 빵틀을 선택하는 일입니다. Window 빵틀을 선택하면 Window Machine이, RHEL(Red Hat Enterprise Linux)를 선택하면 빨간 모자 리눅스가 설치된 VM을 가지게 됩니다. 한가지 알아두셔야 하는 점은, 'My AMIs'입니다. 이러한 이미지는 우리도 만들 수 있기 때문에, 동일한 설정 작업이나 반복적인 바탕 작업을 해야 하는 경우에 유용하게 사용할 수 있습니다. 처음에 한 대를 셋팅하고 이미지를 만들어, 다른 VM을 그 이미지로부터 만들어 내는 방법을 취할 수도 있습니다. Screen-Shot-2014-03-10-at-10.04.18-am   저의 경우에는 Hadoop 셋팅을 위한, Namenode, Datanode와 Ambari를 설치한 Image를 만들어 두었습니다. 이렇게 사용한 이유는 비용을 절약하기 위해서였습니다. Instance는 사용하지 않을 때에도 과금이 되므로, 사용하지 않을 때에는 Image로 보관하는 것이 저렴하게 운용하는 방법입니다.

Step2. Choose a Instance Type

예산에 맞게, 목적을 고려하여 선택합니다. 시간당 비용을 잘 책정하셔야 요금 폭탄을 맞지 않을 수 있습니다. 프로젝트 초기라면, 성능에 대한 감이 없기 때문에 서비스를 일단은 최소한의 사양으로 구축하는 것이 경제적입니다. 서비스 런칭 즈음에, Instance Type를 변경할 수 있으므로 너무 걱정하지 않으셔도 됩니다.

Step3. Configure Instance

Screen-Shot-2014-03-10-at-02.21.17-pm사용하려는 VM의 대수와 기초적인 사항을 지정합니다. 사실, 건드릴 이유는 없습니다. Monitoring이라던지 Spot 사용에 대한 기능을 제공하지만, 부과 요금이 있으므로 가볍게 넘깁니다. 혹은, Public IP가 필요없는 없는 경우는 체크를 빼셔도 됩니다. Instance 끼리 통신은 Private IP를 사용하기에, 외부에서 접속할 필요가 없는 Instance는 Public IP가 없어도 상관없습니다.

Step4. Add Storage

Screen-Shot-2014-03-10-at-02.25.25-pm맞습니다. 하드 디스크를 설정할 차례입니다. CPU와 RAM은 Instance Type에서 결정했지만, 아직 Storage를 지정하지 않았습니다. 사실, 요금표에 있던, Local Storage 혹은 Internal Storage는 휘발성 공간입니다.(전원이 나가면 사라지는 공간으로 주로, tmp 영역입니다.) 즉, 실질적으로 사용할 수 있는 데이타 공간이 아니기에, 중요한 파일을 저장할 별도의 저장소를 추가하셔야 합니다. 디폴트로 OS가 설치될 수 있도록 6GB 정도가 할당된 모습입니다. 저장소 추가는 2가지로 이루어질 수 있습니다. Root에 할당된 Volumn 자체의 용량을 키우는 방법과 다른 Volumn을 추가하는 방법입니다. 편한 방법으로 진행하셔도 무방합니다. OS와 Data를 분리하여 사용하실 의도라면 '추가'를 그게 아니라 Root 영역이 크게 사용하시려면 '확장'을 선택하시면 됩니다.

Step5. Tag Instance

Screen-Shot-2014-03-10-at-02.32.13-pmInstance에 Key/Value로 이우러진 Tag를 다는 화면입니다. Tag는 Instance를 분류하는 방법 중에 하나입니다. 같은 Group으로 묶어, Filtering, Billing 등을 수월하게 진행하기 위한 수단입니다. 간단한 운용에서는 필요없지만, 대량 Instance 운용시에는 유용하겠습니다.

Step6. Configure Security Group

Screen-Shot-2014-03-10-at-02.37.37-pm보안 설정을 지정하는 화면입니다. 위의 예는, Hadoop 설치 관리자인 'Ambari'의 방화벽 설정 화면입니다. 개별 Instance에 지정이 성가신 일이기에, 동일한 Security Group으로 설정하면 편리합니다. 즉, Instance 방화벽 설정과 Security Group이 서로 다른 Layer에 있으므로, Instance의 방화벽을 끈채로, Security Group의 설정을 이용하시면 되겠습니다.

Step7. Review Instance Launch

대망의 마지막입니다. 지금까지 설정한 내용을 리뷰하는 페이지입니다. 하단의 Launch를 누르면, 화면이 빙글빙글 팔랑개비가 돌다가, Instance으로 넘어가게 됩니다. 정말, 짧은 시간이지만 Virtual Machine이 생성되었습니다. 여기에다 이제 이것 저것 깔아가면서 막 다룰 나만의 클라우드 서버가 생겼습니다.

EC2 Dashboard

Screen-Shot-2014-03-10-at-02.47.10-pmEC2 서비스의 대쉬 보드의 일부 입니다. 저는 6대의 Instance를 사용하고, 6개의 Volumes 과 4개의 Snapshots이 있습니다. 무슨 애기인지 잘 모르실 수 있습니다. 사실, 좌측에 메뉴에 익숙해질 필요가 있습니다.

INSTANCES

개별 VM인 Instance를 관리하는 메뉴입니다. Instance를 켜고(Start) 끄는(stop) 것은 물론, 생성(Launch)과 소멸(Terminate)에 이르는 모든 동작을 이 메뉴를 통해 진행하게 됩니다.

Screen-Shot-2014-03-10-at-02.53.12-pmAction 메뉴를 통하면, 각 Instance에 내릴 수 있는 다양한 명령을 보실 수 있습니다. 가장 중요한 것은, Terminate입니다. 낭패를 보지 않으려면, StopTerminate의 차이를 명확히 알고 계셔야 합니다. Stop은 서비스를 멈추는 것입니다. PC로 비유하면 전원을 내린 것입니다. 그러나 PC를 보존해야 하기 때문에, 렌탈료는 계속 발생됩니다. 즉, 사용하지 않아도 요금은 계속 나오게 됩니다. Terminate의 경우에는, Instance를 완전히 사망시키는 것 입니다. 즉, 사용하던 Instance 자원은 Amazon으로 돌려주게 되어, 더 이상 사용이 불가능합니다. 반환된 자원은 다시 되돌릴 수도 없으므로, Terminate은 주의 깊게 진행하셔야 합니다. 당연한 이야기지만, 반환했기 때문에 요금은 부과되지 않습니다.

IMAGES

VM에서 Image라는 것은 PC의 모든 상태를 온전히 투영시킨 것을 의미합니다. 즉, Image만 있다면 얼마든지 동일한 Instance를 만들어 낼 수 있습니다. 앞서, Instance 생성시에 OS를 선택하는 화면도, 실은 OS Image를 선택하는 화면이었습니다. 당연히, 앞의 Instance 관리 화면에서 'Create Image'를 이용하여 사용자 Image를 만들어 관리하시면 편리하겠습니다.

Screen-Shot-2014-03-10-at-03.07.34-pm저의 경우에는, 주말에는 instance를 사용하지 않기에 terminate 시켜버렸습니다. terminate 시키면, 모든 정보가 날라가는데 괜찮을까요? Image만 있다면 상관없습니다. 언제든지 Image를 이용해서 동일한 상태의 Instance를 만들 수 있기 때문입니다.

ELASTIC BLOCK STORE (EBS)

Volume과 Snapshot으로 구성되어 있습니다. Volume은 Disk와 같다고 생각하시면 되겠습니다. 실제로 물리적인 Disk가 아니기에, Volume이라는 표현을 씁니다만 동일하게 Partition으로 나누어 사용하실 수 있습니다. Snapshot은 Volume의 복사본을 만들어 두는 것을 일컫습니다.

VOLUME

Screen-Shot-2014-03-10-at-03.29.28-pm모든 Storage의 List입니다. 2가지 타입이 있습니다만, 경제적인 이유로 Standard를 이용했습니다. 일반적으로 Disk를 붙이거나(Attach) 혹은 분리(Detach)할 수 있습니다. Running 중인, Instance에도 가능합니다만, 주의 하셔야 합니다.

 SNAPSHOT

Screen-Shot-2014-03-10-at-04.34.20-pmShapshot 화면입니다. 여러가지 생성(Create)이 가능합니다. Create Snapshot의 경우는, Volume > Snapshot으로 생성하는 경우 입니다. Create Volume의 경우에는, Snapshot을 바탕으로 Volume을 만드는 경우 입니다. Volume을 백업하였다가, 복원하는 경우에 사용됩니다. Create Image는 Snapshot을 가지고 Image를 만드는 경우입니다. 사실, Instances 화면에서 Image를 만들면, 자동으로 Snapshot이 생기게 됩니다. 즉, Image라는 것은 당시의 Snapshot에 Instance 정보가 덧붙여 만들어진 정보입니다.

Conclusion

EC2 서비스는 상당히 가용적인 면이 많습니다. 성능이 생각보다 우수하지 못하다는 의견도 있지만, 재밌게 사용 가능한 서비스임에는 틀림이 없습니다. 기술 자체의 우수함을 떠나, 스스로 운영하시는 서비스에 적합한 서버 운영 방법은 강구하시기 바랍니다.

Reference