Amazon EC2
Amazon.. 보통은 최대의 Internet 서점으로 유명하지만, 이 회사가 야심차게 내놓은 서비스들은 책과는 거리가 먼 것들이었다.
S3 라는 이름으로 Storage service 를 상용화 하더니, EC2라는 일종의 hosting service를 진행중이다.
다소 생소한 개념이지만 EC2는 "Linux의 XEN 가상화 기술을 사용한 server hosting service" 라는 설명이 가능할 것 같다.
EC2는 현재까지도 limited beta 단계의 서비스를 하고 있다. (그렇지만 과금은 한다!!) 자사가
이미 상용화에 성공한 S3 플랫폼에 기반하여 운영하며, 가상화 기술을 이용하다 보니 아직까지는
다소 불안정할 때도 있는 것이 사실이다. 하지만 지속적으로 개선작업이 이루어지고 있는 것을 확인할
수 있으며, 언젠가는 S3처럼 상용화를 할 것으로 보여진다.
일단 간단히 EC2의 면면을 살펴보자. 우선 EC2를 이용하기 위해서는 아래의 5가지 정보가
있어야 한다.
x.509 certificate pem file
private key pem file
AWS account ID
access key
secret access key
위의 정보들은 EC2에 가입을 한 후 계정 정보에서 얻을 수 있다. 그리고 나서
amazon의 technical documentaion 에서 API tool을 download 받는다. 또한 java 환경이
필요하므로 JDK 또는 JRE를 구성하도록 한다. 이 부분들은 사이트에서 제공하는
getting started guide를 보면 상세히 설명되어 있다.
windows 와 linux에서 APItool을 사용할 수 있는데, 편의상 linux에 구성해 보았다.
계정정보와 tool을 download 하고 java 환경설정을 한다면 아래 처림 보일 것이다.
=============================================================================
#vi .bash_profile
JAVA_HOME=/usr/local/java
EC2_HOME=/home/lockfree/ec2tools
export EC2_PRIVATE_KEY=/home/lockfree/.ec2/pk-YNZOZBSF4I7W7BODNNVRI77ddddMFE7O4.pem
export EC2_CERT=/home/lockfree/.ec2/cert-YNZOZBSF4I7W7BODNNVRIddd4MFE7O4.pem
PATH=/usr/local/java/bin:$EC2_HOME/bin;
export PATH JAVA_HOME EC2_HOME
====================================================================================
각각은 JDK,APItool,인증용 key 파일이 위치한 경로명을 기록한 것이다.
이제 EC2에 접근해 보자. ec2tool 에는 상당히 많은 명령어가 포함된 것처럼 보이지만,
명령어의 축약형과 windows용 명령어를 함께 제공하기 때문에 실제로는 간단하다.
==================================================================================================================
$ ec2-describe-images -o amazon
IMAGE ami-20b65349 ec2-public-images/fedora-core4-base.manifest.xml amazon available public
IMAGE ami-22b6534b ec2-public-images/fedora-core4-mysql.manifest.xml amazon available public
IMAGE ami-23b6534a ec2-public-images/fedora-core4-apache.manifest.xml amazon available public
IMAGE ami-25b6534c ec2-public-images/fedora-core4-apache-mysql.manifest.xml amazon available public
IMAGE ami-26b6534f ec2-public-images/developer-image.manifest.xml amazon available public
IMAGE ami-2bb65342 ec2-public-images/getting-started.manifest.xml amazon available public
===================================================================================================================
명령어 뒤의 -o 옵션은 amazon이 소유한 image를 보이게 한다. image는 기본적인 OS정보를
담고 있는 것으로 이것을 이용하여 instance를 구동하면 물리적 구성의 1대의 서버처럼
활용하게 된다. instance의 구동은 아래와 같이 할 수 있다.
=====================================================================================
$c2-run-instances ami-23b6534a -g default -k lockfree-keypair addressing=direct
=====================================================================================
명령어에서 사용된 옵션들의 의미는 아래와 같다.
AMI-00000 : ec2-describe-images 에서 볼 수 있듯 fedora core 4 OS에 apache 웹서버가 포함되어 구성된 것이다.
-g default : 기본 그룹을 지정할 수 있다. 이 부분은 developer guide를 참고하라.
-k [keypair name] : EC2에서의 root 계정 접속은 key로만 허용되어 있기 때문에 초기 접속시 필요하다. 작성 방법은 getting started guide를 참고하라.
addressing= : 최근에 추가된 API 부터 NAT를 지원한다. NAT인지, public IP를 사용할 것인지 선택할 수 있다. 옵션을 주지 않을 경우 기본은 NAT로 제공된다.
간단한 ec2-run-instance 명령어 한 줄로 물리적으로 존재하는 것과 유사하게 1대의 서버를
가지게 된다. 약 2~4분 뒤에 아래와 같이 명령어를 입력해보자.
===============================================================================
$ec2-describe-instances
RESERVATION r-3fa84f56 940139710934 default
INSTANCE i-b17d9bd8 ami-dc8f6ab5 domU-12-11-11-11-03-35.usma3.compute.amazonaws.com domU-12-31-11-11-11-35.usma3.compute.amazonaws.com running lockfree-keypair 0
===============================================================================
아마도 위와 같이 구성된 domain name을 확인할 수 있을 것이다. 이 주소를 웹브라우저로
보면 apache 서버의 초기화면을 볼 수 있을 것이다. 단 몇분만에 여러분만의 웹서버를
가질 수 있는 것이다!!
이 웹서버를 자신에게 맞게 수정하여 새로운 AMI를 만들 수 있다. 또한 이것을 public AMI로
배포가 가능하다. 즉, 설정만 정확하다면 몇분사이에 10대이상의 웹서버 구성이 가능한 것이다.
EC2의 경우 초기 비용이 매우 저렴하고, S3와 함께 이용한다면 storage 문제도 효과적으로
처리가 가능해진다. 따라서 국내에서 해외에 서비스를 홍보할 경우나, 파일럿 프로젝트를
진행할 경우 매우 유용할 것으로 보인다.
EC2에 장점만 존재하면 매우 좋겠지만, 불행히도 아직까지 해결할 문제도 많아 보인다.
대표적으로 아래와 같은 것들을 지적할 수 있겠다.
1. DHCP IP 만을 지원한다. 따라서 EC2만으로 LVS 구현이 어렵고, IP에 의존적인 서비스는
구현이 쉽지 않다.
2. 방화벽 정책은 ec2-authorize라는 명령어를 이용한다. 내부 instance들의 port 제어를 하기 어려워 default 그룹 정책을 활용해야 하는데, 이것은 관리 / 보안 상 좋지 않아 보인다.
3. loadbalancing 및 모니터링 툴은 거의 opensouce를 써야 가능하다. 이 부분들에서는
pound , squid , nagios , opennms 등을 활용해야 할 필요가 있을 것이다.
4. 인스턴스가 불안정할 수 있다. 실제로 running 중인 instance가 계속 reboot되는 경우가
있었는데, 이경우 물리적으로 파일이 저장되는 것이 아니기 때문에 데이터가 모두 소실될 수 있다. 특히 DB의 경우는 치명적이다.
이외에도 자잘한 몇가지 가 있겠지만, 상기 4개의 항목이 서비스 구성에 있어 가장 큰 문제
들이었다. 미리 언급했지만 아직 beta 상태의 서비스 이기 때문에 점차 개선될 것으로 기대된다.
국내에서 서비스 속도를 체감해보려한다면 아래 사이트를 방문해 보길 바란다.
EC2 참고 사이트:
S3
DOCUMENT
http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=87
TOOL DOWNLOAD
http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=88
S3 전용 FILE TOOL (추천!)
http://jets3t.s3.amazonaws.com/index.html


EC2 명령어 사용예제 추가
축약형 명령어 및 windows 용을 제외한 나머지에 대한 명령어 정리입니다.