IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  Architecture | 웹 개발  >

Amazon Web Services를 사용한 클라우드 컴퓨팅, Part 3: EC2를 통해 서버 수요에 대응하기

developerWorks
문서 옵션
PDF format - Fits A4 and Letter

PDF - Fits A4 and Letter
78KB (22 pages)

Get Adobe® Reader®

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

영어원문

영어원문


제안 및 의견
피드백

난이도 : 초급

Prabhakar Chaganti, CTO, Ylastic, LLC

원문 게재일 : 2008 년 10 월 14 일
번역 게재일 : 2009 년 4 월 07 일

기본적인 Amazon SDB(SimpleDB) 개념에 대해 알아보고 SDB와 상호 작용하기 위한 오픈 소스 Python 라이브러리인 boto에서 제공하는 일부 기능을 살펴보십시오. 이 "Amazon Web Services를 사용한 클라우드 컴퓨팅" 시리즈에서는 Amazon Web Services를 사용한 클라우드 컴퓨팅에 대해 설명합니다. 신뢰할 수 있으며 확장 가능한 애플리케이션을 만들고 빌드할 수 있는 Amazon Web Services의 뛰어난 기능을 살펴보십시오. 이 기사에서는 Amazon EC2(Elastic Compute Cloud)에서 제공하는 가상 서버에 대해 설명합니다. EC2를 통해 애플리케이션의 컴퓨팅 요구 사항을 빠르게 구성하고 수요에 따라 용량을 조정하는 방법을 살펴보십시오.

Amazon EC2

Amazon EC2(Elastic Compute Cloud)는 Amazon에서 제공하는 클라우드 컴퓨팅 환경의 기본 플랫폼이다. EC2에서는 비즈니스 니즈가 발생하거나 사용자가 원할 때 언제라도 손쉽게 가상 인스턴스를 생성하고, 실행하고, 제공할 수 있다. 인스턴스 유형과 실제 사용 시간에 따라 인스턴스 비용을 지불하면 된다. 가상 서버는 Amazon 데이터 센터의 안전한 환경 내에서 실행된다.

EC2에서 실행되는 웹 확장 애플리케이션이 얻을 수 있는 장점은 다음과 같다.

  • 컴퓨팅 요구 사항을 빠르게 구성할 수 있다.
  • 수요에 따라 용량을 조정할 수 있다.
이는 Yahoo의 프론트 페이지에 사이트가 올라온 후 트래픽 폭주로 인해 1시간 후에 사이트가 멈춰버릴 수도 있는 오늘날 웹 환경에서 가치를 헤아릴 수 없을 정도로 훌륭한 제안이다. 이제부터는 서버의 용량을 탄력적으로 관리할 수 있다. 이 새로운 탄력적 컴퓨팅 모델에는 다음과 같은 특징이 있다.
신뢰성
EC2에서는 인스턴스를 쉽게 제공할 수 있을 뿐 아니라 더 이상 필요 없는 인스턴스를 쉽게 제거할 수도 있다.
단순성
기본 개념이 간단하기 때문에 시스템을 유연하게 설계할 수 있다. Amazon에서 필요한 빌딩 블록을 모두 제공하므로 애플리케이션의 요구 사항에 따라 빌딩 블록을 자유롭게 결합할 수 있다.
보안
EC2는 높은 수준의 보안을 제공한다. Amazon의 안전한 데이터 센터 내에서 실행되는 모든 인스턴스는 방화벽 규칙을 구성하여 모든 액세스를 사용자가 신뢰하는 그룹으로 제한할 수 있다.
복원성
애플리케이션을 서로 다른 지역에 배치한 후 수명이 짧은 인스턴스와는 독립된 라이프사이클을 지닌 영구적 스토리지 볼륨을 사용하여 애플케이션의 복원성을 강화할 수 있다.
경제성
EC2 서비스는 사용자의 모든 서버 요구에 효과적으로 대응하기 위해 높은 경제성과 경쟁력을 갖춘 요금 체계로 운영된다.




위로


프레임워크

이 섹션에서는 EC2 프레임워크의 기본 개념에 대해 살펴본다.

AMI(Amazon Machine Images)

AMI(Amazon Machine Images)는 사용자가 원하는 모든 소프트웨어나 애플리케이션을 실행할 수 있는 Linux® 기반의 패키지화된 서버 환경으로, EC2에서 제공하는 탄력적 컴퓨팅 환경의 핵심 요소이다. 현재 버전의 EC2에서는 Linux 기반 AMI를 지원하며 EC2 환경에서 OpenSolaris를 운영 체제로 사용하는 데 필요한 일부 초기 지원도 제공한다.

시스템 이미지에는 다음 세 가지 유형이 있다.

개인용사용자가 만든 이미지로 기본적으로 개인용이다. 사용자가 자신의 개인용 이미지를 시작할 수 있는 액세스 권한을 다른 사용자에게 부여할 수 있다.
공용사용자가 만들어서 Amazon Web Services 커뮤니티에 게시한 이미지로 누구나 이러한 이미지를 기반으로 하는 인스턴스를 실행해서 자유롭게 사용할 수 있다. Amazon Web Services Developer Connection 웹 사이트에서 모든 공용 이미지를 볼 수 있다.
유료 특정 기능을 제공하는 이미지를 만들어서 Amazon 비용 외에 추가로 시간당 사용 요금을 지불할 의사가 있는 사용자에게 제공할 수 있다.

Amazon에서는 시스템 이미지를 손쉽게 만들고 관리할 수 있는 여러 가지 명령행 도구를 제공한다. 이미지 자체는 Amazon S3(Simple Storage Service)에 저장된다. EC2를 통해 이미지를 등록하면 이미지를 식별하고 이미지의 인스턴스를 실행하는 데 사용할 수 있는 고유 ID가 이미지에 할당된다. 이미지는 여러 가지 방법으로 만들 수 있다. 기존 공용 이미지를 바탕으로 자신의 이미지를 만든 후 다음과 같은 워크플로우를 사용하여 새로운 AMI를 생성할 수 있다.

  1. SSH(secure socket shell) 키 쌍을 사용하여 기존 AMI의 인스턴스를 실행한다.
  2. SSH로 인스턴스에 로그인한다.
  3. 원하는 대로 인스턴스를 사용자 정의한다.
  4. Amazon의 도구를 사용하여 실행 중인 인스턴스를 새 AMI 번들로 다시 생성한다.
  5. Amazon의 도구를 통해 번들을 S3에 업로드하여 저장한다.
  6. Amazon의 도구를 통해 새 이미지를 EC2에 등록한다.
  7. 이 새 이미지를 기반으로 하는 새 인스턴스를 실행한 후 만족할 때까지 사용자 정의 및 재번들링 작업을 반복한다.

EC2 커뮤니티에서 공용으로 제공하는 스크립트를 사용하여 새 AMI를 생성할 수도 있다. 스크립트를 사용하면 설계 단계부터 AMI를 생성할 수 있다. 자주 사용되는 스크립트는 다음과 같다.

  • Eric Hammond가 제공하는 UbuntuDebian 기반 AMI 생성 스크립트. 사이트에 있는 사전 빌드된 이미지를 사용하거나 해당 이미지를 기반으로 새로운 이미지를 만들 수 있다.
  • Ruby on Rails 애플리케이션의 기반으로 사용할 수 있는 이미지를 찾고 있는 사용자의 경우, Paul Dowman이 제공하는 스크립트를 사용하여 EC2에서 Rails 애플리케이션을 실행하기 위한 Ubuntu 기반 이미지를 만들 수 있다.

  • RightScale에서는 이미지를 설계 단계부터 만드는 데 사용할 수 있는 Ubuntu 및 CentOS 기반 스크립트를 제공한다.

인스턴스

인스턴스는 AMI를 템플리트로 사용하는 실행 중인 가상 인스턴스이다. Amazon에서 제공하는 도구를 통해 인스턴스를 실행 및 종료하고 인스턴스에 대한 세부 사항을 볼 수 있다. 또한 다양한 언어로 작성된 여러 가지 써드파티 라이브러리를 사용하여 인스턴스의 라이프사이클을 제어할 수도 있다.

인스턴스는 32비트 또는 64비트 플랫폼에 기반을 둔다. 다음 유형 중 하나일 수 있다. Amazon에서는 EC2 계산 단위로 각 인스턴스 유형에 대한 비용을 부과한다. 각 ECU(EC2 compute unit)는 해당하는 1.0 - 1.2GHz 2007 Opteron 또는 2007 Intel® Xeon™ 프로세서 용량을 제공한다. 각 인스턴스에 유형에 대한 세부 사항은 가격에서 확인할 수 있다.

S(Small) 인스턴스(m1.small)
1.7GB 메모리, 1ECU(가상 코어 1개, 1ECU 적용), 160GB 인스턴스 스토리지, 32비트 플랫폼, 적정 성능의 I/O
L(Large) 인스턴스(m1.large)
7.5GB 메모리, 4ECU(가상 코어 2개, 코어당 2ECU 적용), 850GB 인스턴스 스토리지, 64비트 플랫폼, 고성능 I/O
XL(eXtra Large) 인스턴스(m1.xlarge)
15GB 메모리, 8ECU(가상 코어 4개, 코어당 2ECU 적용), 1,690GB 인스턴스 스토리지, 64비트 플랫폼, 고성능 I/O
M(Medium) 인스턴스(c1.medium)
1.7GB 메모리, 5ECU(가상 코어 2개, 코어당 2.5ECU 적용), 350GB 인스턴스 스토리지, 32비트 플랫폼, 적정 성능의 I/O
XL(eXtra Large) 인스턴스(c1.xlarge)
7GB 메모리, 20ECU(가상 코어 8개, 코어당 2.5ECU 적용), 1,690GB 인스턴스 스토리지, 64비트 플랫폼, 고성능 I/O

인스턴스 비용은 실제 사용 시간에 따라 부과되므로 애플리케이션의 현재 로드를 기반으로 필요한 계산 용량을 손쉽게 조정할 수 있다. 따라서 많은 계산 용량을 미리 예약하지 않아도 된다.

보안 그룹

EC2 환경 내에서 시작된 모든 인스턴스는 보안 그룹 내에서 실행된다. 각 보안 그룹은 해당 그룹 내에서 실행되는 인스턴스에 대한 액세스 제한을 지정하는 방화벽 규칙을 정의한다. IP 주소 또는 CIDR(Classless Interdomain Routing) 규칙에 따라 액세스 권한을 부여하거나 제한할 수 있으며 이들 규칙에서는 포트 범위와 전송 프로토콜을 지정할 수 있다. 지정된 보안 그룹에 대한 액세스 권한도 제어할 수 있으므로 해당 보안 액세스 그룹 내에서 실행 중인 모든 인스턴스에게 사용자의 인스턴스에 대한 액세스를 자동으로 부여하거나 거부할 수 있다.

보안 키 쌍

보안 키 쌍은 인스턴스를 시작할 때 지정되는 공용/개인용 SSH 키 쌍으로, 실행된 인스턴스의 콘솔에 실제로 로그인하려는 경우에 필요하다. EC2는 키 쌍의 공용 부분을 실행된 인스턴스에 추가하며, 그런 다음 사용자가 개인용 키를 사용하여 ssh를 통해 인스턴스에 로그인할 수 있다.

보안 키 쌍은 API를 통해 Amazon Web Services를 요청할 수 있는 사용자를 고유하게 식별하게 하는 데 사용되는 Amazon Web Services 액세스 키 ID 및 보안 키(계정 정보 페이지에서 제공)와 다른 키이다. 이는 일반적으로 암호를 사용하지 않고도 인스턴스에 보안 로그인이 가능하도록 지원할 때 사용된다.

가용성 영역

EC2는 장애 복원성을 제공하기 위해 서로 다른 지역에 있는 여러 데이터 센터로 구성되어 있다. 사용자는 실행할 인스턴스를 여러 지역에 배치할 수 있으며, 이러한 지역 내에는 여러 가용성 영역이 있다. 현재 버전의 EC2에서는 동부 미국에 있는 단일 지역에 대한 액세스를 제공하며, 이 지역에는 세 개의 가용성 영역이 있다. Amazon에서는 한 지역 내의 각 가용성 영역이 다른 가용성 영역에서 발생한 장애로 인한 영향을 받지 않도록 각 영역을 분리해서 관리하고 있다.

단일 위치에서 장애가 발생할 경우 별도의 가용성 영역에 있는 인스턴스를 실행하여 애플리케이션을 보호할 수 있다. 인스턴스를 시작할 때 가용성 영역을 지정하지 않더라도 현재 시스템의 상태와 용량에 따라 가용성 영역이 자동으로 선택된다.

탄력적 IP 주소

EC2에서 실행되는 각 인스턴스에는 시작 시에 개인용 및 공용 IP 주소가 자동으로 할당되며, 이때 할당된 공용 IP 주소는 인터넷을 통해 인스턴스에 액세스하는 데 사용된다. 그리고 이 주소는 인스턴스를 시작할 때마다 변경된다. 동적 DNS 맵핑을 사용하여 DNS 이름을 IP 주소에 연결하는 경우에는 변경 사항이 인터넷을 통해 전파되는 데 최대 24시간이 소요될 수 있다. EC2에서는 이 문제로 인한 영향을 줄이기 위해 탄력적 IP 주소라는 개념을 도입했다. 각각의 탄력적 IP 주소는 특정 인스턴스가 아닌 사용자의 EC2 계정에 연결된 정적 IP 주소로 사용자가 명시적으로 해제하지 않는 한 사용자의 계정에 영구적으로 연결되어 있다.

인스턴스 간에 탄력적 IP 주소를 다시 맵핑할 수도 있다. 이 방법을 사용하면 다른 인스턴스를 시작한 후 다시 맵핑하여(또는 기존 인스턴스를 사용하여) 인스턴스 장애에 신속하게 대응할 수 있다. 단일 인스턴스와 탄력적 IP 주소는 일대일로만 맵핑할 수 있다.

EBS(Elastic Block Store)

EBS는 Amazon에서 만든 새로운 형식의 영구적 스토리지로 이를 통해 사용자는 볼륨을 만들어서 실행 중인 인스턴스에 블록 레벨 장치로 연결할 수 있다. 이러한 볼륨을 바탕으로 스냅샷을 만들 수 있으며, 나중에 스냅샷을 사용하여 볼륨을 다시 만들 수도 있다. 각 스냅샷은 특정 시점의 볼륨 상태를 나타낸다. 따라서 EBS 볼륨에 있는 인스턴스의 수명이 다한 이후에도 유지할 필요가 있는 파일과 데이터를 쉽게 저장할 수 있으며 나중에 해당 볼륨을 원하는 인스턴스에 간편하게 다시 연결할 수 있다.

단, 각 EBS 볼륨은 한 번에 한 인스턴스에만 연결할 수 있다는 제한이 있다. 그러나 단일 인스턴스에는 각기 다른 볼륨을 무제한으로 연결할 수 있다. 각 EBS 볼륨은 가용성 영역에 위치하며 연결된다. 볼륨을 연결할 대상 인스턴스는 동일한 가용성 영역에 있어야 한다. EBS 볼륨은 계정당 20개로 제한되지만 더 많은 볼륨을 사용해야 하는 경우에는 Amazon Web Services에 볼륨 수를 늘려달라고 요청할 수 있다.




위로


가격

EC2 요금은 다음 4가지 기준에 따라 계산된다.

  • 사용된 인스턴스 유형. 두 가지 표준 인스턴스 유형이 있으며, 유형별로 코어의 수, 메모리 및 스토리지 용량, 아키텍처 등이 다르게 구성되어 있다.

    표준
    대부분의 애플리케이션에 사용할 수 있는 일반적인 인스턴스
    고성능 CPU
    높은 프로세서 성능이 필요한 계산 집약적 애플리케이션에 적합한 인스턴스

    표 1에서는 S(Small)부터 L(Large)까지의 인스턴스 유형에 대한 가격의 예를 보여 준다.

    표 1. 인스턴스 유형별 가격

    유형세부 사항비용
    표준 S(Small) 1.7GB 메모리, 1ECU, 160GB 스토리지, 32비트 플랫폼 인스턴스 시간당 0.10달러
    표준 L(Large) 7.5GB 메모리, 4ECU, 850GB 스토리지, 64비트 플랫폼 인스턴스 시간당 0.40달러
    표준 XL(eXtra Large) 15GB 메모리, 8ECU, 1,690GB 스토리지, 64비트 플랫폼 인스턴스 시간당 0.80달러
    고성능 CPU M(Medium) 1.7GB 메모리, 5ECU, 35GB 스토리지, 32비트 플랫폼 인스턴스 시간당 0.20달러
    고성능 CPU XL(eXtra Large) 7GB 메모리, 20ECU, 1,690GB 스토리지, 32비트 플랫폼 인스턴스 시간당 0.80달러


  • EC2를 통해 송수신된 데이터 또는 대역폭의 용량. 미국 내 EC2, SimpleDB 및 S3 버켓 사이에 전송된 데이터에는 비용이 부과되지 않는다. EC2와 유럽 S3 버켓 사이에 전송된 데이터에는 표준 데이터 전송 요금이 부과된다.

    표 2. 데이터 전송 가격

    전송 유형비용
    인터넷 데이터 전송 0.100달러/GB — 모든 수신 데이터

    0.170달러/GB — 월간 송신 데이터 중 최초 10TB
    0.130달러/GB — 월간 송신 데이터 중 이후 40TB
    0.110달러/GB — 월간 송신 데이터 중 이후 100TB
    0.100달러/GB — 월간 송신 데이터 중 150TB를 초과하는 용량
    가용성 데이터 영역 전송 0.00달러/GB — 동일한 데이터 영역에 있는 인스턴스 간에 전송되는 모든 데이터

    0.01달러/GB — 같은 지역에 속한 다른 데이터 영역에 있는 인스턴스 간에 전송되는 모든 데이터
    공용 및 탄력적 IP 데이터 전송 0.01달러/GB — 송수신되는 모든 데이터
    개인용 IP 데이터 전송 0.00달러/GB — 송수신되는 모든 데이터


  • EBS 볼륨 및 스냅숏에 사용된 스토리지.

    표 3. EBS 가격

    유형비용
    EBS 볼륨 0.10달러/GB(월)

    I/O 요청 백만 개당 0.10달러
    EBS 스냅샷 0.15달러/GB(월)

    스냅샷을 저장하는 PUT 요청 1,000개당 0.01달러

    스냅샷을 로드하는 GET 요청 10,000개당 0.01달러


  • 할당된 탄력적 IP 주소 중 사용하지 않는 IP 주소 수.

    표 4. 탄력적 IP 주소 가격

    유형비용
    탄력적 IP 사용 중인 탄력적 IP 주소의 경우 무료

    전체 시간 동안 연결되지 않은 탄력적 IP 주소당 0.01달러

    탄력적 IP 주소 재맵핑당 0.00달러 — 처음 100개의 재맵핑/월
    탄력적 IP 주소 재맵핑당 0.10달러 — 100개 이후의 추가 재맵핑/월


최신 가격은 Amazon EC2에서 확인할 수 있다. 또한 Amazon Web Services Simple Monthly Calculator를 사용하여 EC2 및 기타 Amazon Web Services에 대한 월간 사용 비용을 계산할 수 있다.




위로


EC2 시작하기

EC2를 시작하려면 먼저 Amazon Web Services 계정을 만들어야 한다. Amazon Web Services 계정을 만드는 방법에 대한 자세한 설명은 이 시리즈의 Part 2에서 볼 수 있다. 계정을 만든 후에는 다음 단계를 수행하여 계정에 대한 Amazon EC2 서비스를 활성화해야 한다.

  1. 사용자의 Amazon Web Services 계정에 로그인한다.
  2. Amazon EC2로 이동한다.
  3. 페이지 오른쪽에 있는 Sign Up For This Web Service를 선택한다.
  4. 요청된 정보를 제공하고 등록 프로세스를 완료한다.

모든 Amazon Web Services 통신은 SOAP 인터페이스 또는 쿼리/REST 인터페이스를 통해서 이루어진다. 이 기사에서는 쿼리/REST 인터페이스를 사용하여 EC2와 통신하므로 액세스 키를 받아야 한다. 액세스 키는 Web Services Account 정보 페이지에서 View Access Key Identifiers를 선택하여 액세스할 수 있다.

이제 Amazon Web Services를 사용할 준비가 완료되었으며 EC2 서비스를 사용할 수 있게 되었다.




위로


EC2와 상호 작용하기

이 예제에서는 Amazon에서 제공하는 명령행 도구와 오픈 소스 써드파티 Ruby 라이브러리인 right_aws를 사용하여 EC2와 상호 작용한다. 이 기사에서 수행할 전체 작업은 다음과 같다.

  • 로컬 EC2 개발 환경 설정하기
  • 기존 AMI 실행하기
  • right_aws 라이브러리와 기타 필수 소프트웨어를 설치하도록 AMI 사용자 정의하기
  • AMI를 재번들링하여 S3에 업로드한 후 등록하기
  • 사용자 정의된 새 AMI 실행하기
  • Ruby 쉘에서 간단한 코드를 실행하여 right_aws API 익히기

로컬 EC2 개발 환경 설정하기

Amazon EC2 도구를 사용하려면 Java™ 기술이 설치되어 있어야 한다.

  1. Amazon EC2 AMI ToolsAmazon EC2 API Tools을 다운로드한다.
  2. 도구 아카이브를 원하는 디렉토리에 압축 풀기한다.
  3. 일부 환경 변수를 설정하고 명령행에서 실행할 때 찾을 수 있도록 도구 디렉토리를 쉘 경로에 추가해야 한다. Listing 1에서는 해당 예제를 보여 준다.

    이 예제에서는 Linux용 명령을 사용하고 있으므로 Microsoft® Windows®를 사용하는 경우에는 해당 명령으로 대체해야 한다. 사용자의 계정 정보 페이지에서 EC2 X.509 인증서와 EC2 개인 키 파일을 다운로드할 수 있다.



    Listing 1. EC2 개발 환경 설정하기
    $ export EC2_HOME=path_to_the_directory_with_the_tools
    
    $ export JAVA_HOME=path_to_the_directory_with_your_java_sdk
    
    # Add the directory to your PATH
    $ export PATH=$PATH:$EC2_HOME/bin
    
    # Export variables with the paths to your private key file and X.509 certificate
    $ export EC2_PRIVATE_KEY=path_to_your_private_key 
    $ export EC2_CERT=path_to_your_x509_certificate
    

  4. 다음 명령을 통해 EC2 명령행 도구의 버전을 표시하여 모든 설정이 올바르게 지정되었는지 확인한다.

    Listing 2. 설정 확인하기
    $ ec2-ami-tools-version
    1.3-20041 20071010
                

  5. 명령행 쉘에서 인스턴스를 실행한 다음 연결할 때 사용할 SSH 키 쌍을 만들어야 한다. Listing 3의 명령을 실행하면 새 키 쌍이 만들어진 후 키 쌍의 이름, 해당 지문 및 개인 키 데이터가 화면에 표시된다.

    Listing 3. 새 SSH 키 쌍 만들기
    $ ec2-add-keypair devworks
     
    KEYPAIR devworks        29:d1:90:7b:3d:a4:99:52:41:e0:1f:21:d5:20:97:d3:f0:33:fd:76
    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEAyxaeXt6nb+qzboVW/3ax7An8CUJjDqwNi/PZm4lGOAzOHGnuPlDXeh1GpJ9f
    hky7Bg6VEY2VfS5G6UtmIzsGf/JlquzVl/x3uyriOzeCIw+m07aSgUOBn3qW/74IZxYYkxCYdBci
    eZeKpr8Mpvuz2sfurRzQOkUeHyuEaiD1RRS7DGxxUXfpVYhGjPltfNW2xRSMLTaOZzRwRdS0cHUU
    hC+GOKFDkp8nqQpd8iGUtp2G2DI1pxRN4MbeFZHWMh5tcIo1NTc7pkFPGEwrq6pO6gIsEOLqGpTL
    +2AxJY5WToZQoTWieOVwLpjJU9fnufRs0Mt/M/TP6SGK/YkrQOprOwIDAQABAoIBAFj1UGvX9dnl
    IbHAwInoUSlGelsH9GIB5XEvYFtr9xEoMsRpdk1flfNMjZwgn3Qxeh6+Fnf438lUkwUv3M6D1WYI
    JJaJZUpM8ZlPwIcV2nBHM9k6+NOcYVQdG7VsZTvahusscssvMw+13KsLtpwSVwb3WsoDfAZ6LiaT
    Jk5in20hTiipC0pz0K9DgQ//76r20ysUFpCymj4EvQrRkk5kBtsiMixsJzimpUOrSmrRHcORKEin
    FKM6y/DFE33zhP8BNDQRaDLGni0Ip+/jP3EHmia41SSbnwzRcbXMfH5fL3KAyRsCE0ocHY+cjUng
    HPYxl1ffdLZuEW3wJDQFuTS/v4ECgYEA9r7HVVnrS2303zclzCTGen/W/SVbpflSKEYJOZpa8RtQ
    uFMOewfkTbBzfavLMVBYB8uAmcWIz5JAFSzlBaKDRCnouUeeDiDJVJd8Asbn1gCE8UVETUOthy50
    R90RTtPNMmyP7AnoSMTuzsbwVORus7IJvceWHQBB4KCh652UansCgYEA0rSmvdquidkXf5iFpebc
    6Wh/qy+L1dkgz7+HTZIMW7kxA4EfJFnqaQRPqJ5XYcLvk2IzxNQKJlZvtBhCfVYhPJ2uB2Yqxv0p
    0LXGC01fZSyhbYGfaxVymA3HMc2ULBbaFMyhO7l7zkz+G+qkylych59zJBSoUxSFStpgNL7NhkEC
    gYAPJIorLMeJ64eZo1LIgoFDx1C0XHSRbQmjuxiZ1mU6YsjDZyV+W2+hbPDJh5+CuUGNyOlthnfs
    9TbFlenAPMb9iezkYgbLKyvv6xQLP5W+xm1iOTQF4d9mam1sc566TblMHOmAPONqg9t8CS16qEI6
    +PQsF3GY+gkQ9gq54QPYvQKBgDgwjsrQd30xVI/lV7a/Uyg3gtxe6JaVuadNN0LbcMpBH64EkA58
    oANzb97SoxDiEEuog4+40CAbKtzHH2wXPPPSROeaOkwolS8gWnkHICp19XKjf6Tp6k5cVkOUxC/h
    xDSJwXGQ7FA+vgEp2NpSSjfssKLtk1ncfhNRGxjVzS9BAoGBALbBLS4Nbjs2Fco+okNQPNfJNSvW
    yWV7a6ngfRzW8B+BO6V1QRIR44bwv/Z74oQ7ttt8KoZENB5yzZwaVWpFlOjSO/4Nx++Ef4pY5aPS
    zNpXcXCZgUdA67qmOILvrG7bnDR60dcBZVBl7CjnpTlccg7MD4CBsFJx+hGRPD2yIV94
    -----END RSA PRIVATE KEY-----
    

  6. -----BEGIN RSA PRIVATE KEY-----로 시작하는 출력 부분을 로컬 파일에 저장한다. 이 파일은 인스턴스를 실행하고 SSH를 통해 인스턴스에 액세스할 때 개인 키로 사용된다. 따라서 이 파일은 누출되지 않도록 안전하게 관리해야 한다. 이 키를 사용하여 인스턴스를 실행한 후 나중에 키를 분실하게 되면 더 이상 쉘을 통해 인스턴스에 액세스할 수 없게 된다. 키 파일의 이름을 pk-devworks로 지정한 후 다음과 같이 파일에 대한 권한을 수정하여 보안을 강화한다.

    Listing 4. 개인 키에 대한 권한 변경하기
    $ chmod 600 pk-devworks
    

이제 개발 환경이 설정되었다.

첫 번째 인스턴스 실행하기

이제 RightScale에서 제공하는 CentOS 기반의 공용 이미지 중 하나를 사용하여 첫 인스턴스를 실행한다. 이 이미지의 AMI ID는 ami-d8a347b1이다.


Listing 5. 인스턴스 실행하기
$ ec2-run-instances –k devworks -n 1 ami-d8a347b1

RESERVATION     r-2691404f      710193521658    default
INSTANCE        i-7f923516      ami-d8a347b1                    pending 
devworks        0               m1.small        2008-09-07T18:05:34+0000
us-east-1c      aki-9b00e5f2

새로 실행되는 인스턴스는 항상 보류 중 상태로 설정된다. 이 인스턴스는 현재 시동 중이므로 아직 사용할 수 없다. 이 상태에서는 인스턴스에 대한 다음과 같은 세부 사항을 볼 수 있다.

  • 시작 시간 — 이 인스턴스의 시작 시간이 UTC로 표시된다.
  • 인스턴스 유형 — 시작할 때 인스턴스의 유형을 지정하지 않았으므로 기본 m1.small 인스턴스가 자동으로 선택된다.
  • 가용성 영역 — 시작할 때 가용성 영역을 지정하지 않았으므로 현재 시스템 상태와 가용성에 따라 자동으로 가용성 영역이 선택된다.
  • 커널 — 이 인스턴스에서 사용하는 Linux 커널도 표시된다. 시작할 때 커널을 지정하거나 기본적으로 사용할 커널을 AMI에 미리 구성해 놓을 수 있다.
  • 보안 그룹 — 이 인스턴스는 기본 보안 그룹에 배치되었다. 고유한 보안 그룹을 작성하고 액세스 권한을 부여한 후 이러한 그룹에 인스턴스를 배치할 수 있다. 시작할 때 보안 그룹을 지정해야 한다. 인스턴스가 시작된 후에는 그룹 이름을 변경할 수 없지만 그룹에 대한 권한은 변경할 수 있다.

이제 실행 중인 인스턴스를 표시하여 인스턴스의 현재 상태를 확인할 수 있다.


Listing 6. 인스턴스 표시하기
$ ec2-describe-instances

RESERVATION     r-2691404f      710193521658    default
INSTANCE        i-7f923516      ami-d8a347b1    ec2-67-202-28-68.compute-1.amazonaws.com
domU-12-31-38-00-34-C8.compute-1.internal       running devworks        0
m1.small   2008-09-07T18:05:34+0000        us-east-1c      aki-9b00e5f

인스턴스가 실행 중임을 확인할 수 있으며 다음과 같은 세부 사항도 볼 수 있다.

  • 공용 DNS 이름 — 인터넷을 통해 이 인스턴스에 연결하는 데 사용할 수 있는 DNS 이름
  • 개인용 DNS 이름 — Amazon 데이터 센터 환경에 있는 EC2의 로컬 네트워크 내에서 이 인스턴스를 확인하는 데 사용되는 DNS 이름

SSH를 통해 첫 번째 인스턴스에 연결하기

이제 인스턴스에 대한 개인용 키와 공용 DNS 이름을 사용하여 SSH를 통해 인스턴스에 연결할 수 있다.


Listing 7. SSH를 통해 인스턴스에 연결하기
$ ssh -i pk-devworks root@ec2-67-202-28-68.compute-1.amazonaws.com

The authenticity of host 'ec2-67-202-28-68.compute-1.amazonaws.com (10.252.59.54)' 
can't be established.
RSA key fingerprint is ae:e5:00:54:75:65:1c:c5:44:53:72:b9:e0:b5:26:a9.
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'ec2-67-202-28-68.compute-1.amazonaws.com,10.252.59.54'
(RSA) to the 
list of known hosts.


[root@domU-12-31-38-00-34-C8:~]

위에서 로그인한 후 오류 메시지가 표시되더라도 심각한 문제가 아니므로 무시해도 된다. 시동 후 AMI에서 몇 가지 사용자 정의 RightScale 스크립트가 실행되지만 여기에서는 설명하지 않는다.

인스턴스 사용자 정의 및 재번들링하기

매우 다양한 기능을 갖추고 있는 RightScale AMI는 기본 이미지로 사용하는 데 필요한 모든 기능을 제공한다. directory/home/ec2에 설치되는 EC2 명령행 도구도 포함되어 있다.

  1. 보안 인증서를 추가한다. 이러한 파일은 Listing 1에서 사용한 파일과 같다.

    Listing 8. 인증서를 인스턴스에 복사하기
    $ scp -i pk-devworks path_to_your_private_key_cert 
    root@ec2-67-202-28-68.compute-1.amazonaws.com:/home/ec2/
    
    $ scp -i pk-devworks path_to_your_x509_cert 
    root@ec2-67-202-28-68.compute-1.amazonaws.com:/home/ec2/
               

  2. 이 이미지를 개인용 EC2 이미지로 사용할 수 있도록 환경 변수를 설정한다. /etc/profile.d/env.sh 파일을 열고 각 변수를 설정한다. 계정 정보와 액세스 키는 Web services account information에서 확인할 수 있으며 인증서와 개인용 키는 위 단계에서 인스턴스에 복사해 놓은 파일이다.

    Listing 9. 인스턴스 환경 사용자 정의하기
    $ vim /etc/profile.d/env.sh
    
    export EC2_HOME=/home/ec2
    export EC2_CERT=
    export EC2_PRIVATE_KEY=
    export AWS_ACCOUNT_NUMBER=
    export AWS_ACCESS_KEY_ID=
    export AWS_SECRET_ACCESS_KEY=
    export PATH=$PATH:/home/ec2/bin/
    
    # Turn off the rightscripts so you don’t get the error on login.
    $ chkconfig --level 4 rightscale off
    
    # Change the login message
    $ echo “Welcome to my devworks test EC2 image” > /etc/motd
                

  3. 이 이미지에 Ruby가 이미 설치되어 있기는 하지만 이 기사에서 나중에 EC2와 상호 작용하는 데 사용할 Ruby 라이브러리를 설치해야 한다. 먼저 설치된 gem을 업데이트한 다음 right_aws gem과 기타 필요한 종속 파일을 설치한다.

    Listing 10. Ruby gem 설치하기
    $ gem update
    $ gem install right_aws
                

  4. 이제 이 인스턴스를 재번들링하여 S3에 업로드한 후 EC2에 등록할 준비가 완료되었다. 먼저 인스턴스를 devworks-ec2라는 이름으로 재번들링한다. 이때 /mnt 및 /tmp 폴더는 무시한다. EC2 개인용 키, EC2 보안 인증서 및 Amazon Web Services 계정 번호도 지정해야 한다.

    Listing 11. 인스턴스 재번들링하기
    $  ec2-bundle-vol -d /mnt -c /home/ec2/your_ec2_x509_cert  
    -k /home/ec2/your_ec2_private_key -u your_aws_account_number 
    -e /mnt,/tmp -s 10240 -r i386 -p devworks-ec2
                

  5. 재번들링 프로세스가 완료되면 /mnt 디렉토리에 여러 파일이 만들어진다. 다음 예제에서는 새로 생성된 AMI의 구성 요소인 이들 파일을 S3에 업로드한다. 이미지는 사용자가 지정한 버켓에 배치된다. 아래 명령에서 –b 매개변수의 값에 이미지 파일을 저장할 S3에 있는 버켓의 이름을 지정한다.

    Listing 12. S3에 이미지 업로드하기
    $ ec2-upload-bundle -b your_s3_bucket -m /mnt/devworks-ec2.manifest.xml 
    -a your_aws_access_key -s your_aws_secret_key
               

  6. 이제 AMI가 S3에 안전하게 저장되었다. 이제 남은 작업은 나중에 이미지를 실행할 때 사용할 AMI ID를 받기 위해 AMI를 EC2에 등록하는 것이다.

    Listing 13. EC2에 이미지 등록하기
    $ ec2-register -K /home/ec2/your_ec2_private_key 
    -C /home/ec2/your_ec2_x509_cert your_s3_bucket/devworks-ec2.manifest.xml
    
    IMAGE   ami-58c42031
                

  7. SSH 세션을 끝내고 실행 중인 인스턴스를 종료한다.

    Listing 14. 인스턴스 종료하기
    $ ec2-terminate-instances i-7f923516
    INSTANCE        i-7f923516      running shutting-down
    

다음 섹션에서는 새로 생성된 AMI의 새 인스턴스를 실행하게 되며 이 기사의 나머지 부분에서는 이 인스턴스에서 right_aws 라이브러리를 사용하여 EC2를 탐색한다.




위로


Ruby로 EC2 탐색하기

RightScale에서 제공하는 Ruby 라이브러리인 right_aws는 Ruby를 통해 Amazon의 EC2 서비스에 액세스할 수 있는 기능을 제공한다. 엄격한 테스트를 거친 이 라이브러리는 자체 제품에서 사용되고 있으며 최근에 소개된 EBS를 포함한 EC2의 모든 서비스에 액세스할 수 있다. 이 라이브러리는 강력한 재시도 및 오류 처리 기능을 제공하는 HTTP 라이브러리인 RightScale:HttpConnection과 함께 rubygem으로 패키징되어 있다. 이 기사에서는 이 라이브러리에서 제공하는 EC2의 기능 중 일부에 대해서만 설명한다. 라이브러리와 함께 제공되는 문서를 검토하여 API에 대한 종합적인 이해도를 높일 수 있다. right_aws 라이브러리와 이를 지원하는 right_http_connection 라이브러리에 대한 다양한 구성 옵션도 검토하자.

이 기사에서는 EC2 통신을 위한 기본 인터페이스를 제공하는 Rightscale::Ec2 클래스를 사용한다. 이 Ruby 라이브러리는 보통 irb 콘솔에서 사용된다. 이후 예제에서는 Rightscale::Ec2 오브젝트에 메시지를 보낸 후 EC2에서 리턴한 응답을 확인하는 방식으로 진행되므로 EC2 개념을 살펴보면서 API에 익숙해질 수 있다.

  1. 새 AMI의 인스턴스를 실행한다. 인스턴스가 실행 중 상태에 도달하면 SSH를 통해 인스턴스에 연결한다. 연결이 완료된 후에는 인스턴스 내에서 irb 콘솔을 사용한다.

    Listing 15. 새 인스턴스를 실행하고 SSH를 통해 연결하기
    $ ec2-run-instances -k devworks -n 1 ami-58c42031
    
    RESERVATION     r-5795443e      710193521658    default
    INSTANCE        i-1a9e3973      ami-58c42031                    pending devworks    0
    m1.small        2008-09-07T21:06:37+0000        us-east-1c      aki-9b00e5f2
    
    $ ec2-describe-instances 
    
    RESERVATION     r-949544fd      710193521658    default
    INSTANCE        i-5a9d3a33      ami-58c42031    
    ec2-75-101-208-95.compute-1.amazonaws.com       
    domU-12-31-38-00-78-04.compute-1.internal       
    running devworks        0               m1.small   
    2008-09-07T21:14:27+0000        us-east-1c      aki-9b00e5f2
    
    $ ssh -i pk-devworks root@ec2-75-101-208-95.compute-1.amazonaws.com
              

  2. Ruby 쉘을 시작하고 Rightscale::Ec2 오브젝트를 만든다.

    Listing 16. Ruby 쉘과 새 Rightscale::Ec2 오브젝트
    $ irb
    irb(main):001:0> require 'rubygems'
    => true
    irb(main):002:0> require 'right_aws'
    => true
    irb(main):003:0> @ec2 = Rightscale::Ec2.new(
    ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
    

이제부터는 새로 만든 변수 @ec2를 사용하여 EC2를 탐색한다. 이 예제에서는 이 라이브러리의 기본 구성을 사용하고 있다. 라이브러리와 함께 제공되는 문서에서 사용 가능한 구성 옵션 목록을 볼 수 있다.

  1. 인스턴스 목록을 검색하면 해시 배열이 리턴되며, 이 배열에 있는 각 해시는 각 인스턴스에 대한 관련 정보를 제공한다. 이 라이브러리의 API 호출에서는 대부분 이러한 응답 형식을 공통적으로 사용한다. Listing 17에서는 해당 예제를 보여 준다.

    Listing 17. 인스턴스 설명하기
    irb(main):004:0> @ec2.describe_instances()
    
    => [{:aws_launch_time=>"2008-09-07T21:14:27.000Z", :aws_kernel_id=>"aki-9b00e5f2", 
    :ssh_key_name=>"devworks", :aws_reservation_id=>"r-949544fd", 
    :aws_availability_zone=>"us-east-1c", 
    :aws_state=>"running", :aws_instance_id=>"i-5a9d3a33", :aws_groups=>["default"], 
    :aws_image_id=>"ami-58c42031", 
    :aws_product_codes=>[], :dns_name=>"ec2-75-101-208-95.compute-1.amazonaws.com", 
    :aws_state_code=>"16", 
    :private_dns_name=>"domU-12-31-38-00-78-04.compute-1.internal", 
    :aws_instance_type=>"m1.small", 
    :aws_reason=>"", :ami_launch_index=>"0"}]
               

  2. 이미지 목록을 검색한다.

    Listing 18. 이미지 설명하기
    irb(main):005:0> @ec2.describe_images_by_owner([ENV['AWS_ACCOUNT_NUMBER']])
    
    => [{:aws_location=>"ylastic_images/devworks-ec2.manifest.xml",
     :aws_kernel_id=>"aki-9b00e5f2", :aws_state=>"available", :aws_is_public=>false,
    :aws_architecture=>"i386", :aws_id=>"ami-58c42031", :aws_image_type=>"machine"}]
                

  3. 인스턴스를 배치할 때와 인스턴스에 대한 액세스 권한을 제한 또는 부여할 때 사용할 수 있는 보안 그룹을 만든다.

    Listing 19. 새 보안 그룹을 만들고 그룹 표시하기
    irb(main):006:0> @ec2.create_security_group("devworks", 
       "Devworks Article Security Group")
    
    => true
    
    irb(main):008:0> @ec2.describe_security_groups()
    
    => [{:aws_group_name=>"devworks", :aws_description=>"Devworks Article Security 
       Group", 
    :aws_perms=>[]}]
                

  4. 새 보안 키 쌍을 만들고 사용자 계정의 모든 키 쌍을 표시한다.

    Listing 20. 새 보안 키 쌍을 만들고 키 쌍 표시하기
    irb(main):018:0> @ec2.create_key_pair('mykeypair')
    
    => {:aws_key_name=>"mykeypair", 
    :aws_fingerprint=>"c6:62:22:9e:99:05:6a:17:13:06:e0:86:f9:55:2a:78:ff:99:6b:fa", 
    
    :aws_material=>"-----BEGIN RSA PRIVATE KEY-----
    \nMIIEpAIBAAKCAQEAyRdAvihBXDu30o2uvQ1h8xdIRLHs0RjQWK4Yw5Y5DkaS41EEjnDwjO6sEY5l\n
    IXSuzVj1nkZ1VMPuVR3hIXHCMJLaAO77TaXZVC9yymIUAyTcQ1+hoVLlrCuVI3dEY21WQNTEbtkI\nlI
    xMW+UhkiaKrGHmt2yYLjr754KGt7pNCpRwxPXB7brlpQ3qpapkr7XrKZppvWoG8MCmPIFx8P0K\no8Cd
    mnF9lEdns6uaJZmfs4Ls9HZHpsmn0r42GbOAkJEkj7nE5zc3rXYpmCBZhjyHus0iXjS/n9oL\nHWhV0a
    wagjvmsQgJPYqEsBeO5pDb2IOZq5okQie1YJTd1m8k8k7m9wIDAQABAoIBAQCK0lWssOem\nP8fAQHVg
    J+v1wJ3wZpBhLWsvvUh1RbCvzUK8UQL/PrKh6Ga7W/0u4nmGY6J0mJmJYhWXhyATUZBI\nrih3uoOccC
    Eff/4T/y9nmDvC+zL+xtatTA0SRdTdeu6vpPLSv1uwCUbxrbXGSnszVAbNm9dXGvsq\nMK7GCYQEB4p4
    FtJolDqGZdWAj1u5/AGjbCI+PbkbCAro55Sqnl95WAlogdQFmgxljWl9TEIsbrHf\nYZHtKHlm1lvyeB
    QdVmwLT9S7ufI1J/GAevRxrG2iEkx/IJWYGnQE0P2bXa6Ry90UyvWRPS6Zi/MD\nfWoFAxnB6Ryssr+S
    IAfpG6SGuM55AoGBAOr7yPcvg/66f/Xd3CbpmI8lIfsXBb9xki3pIEfYAWD/\n2ToxpRYPTgrwwB1ufo
    NPr7U1QfzJvAvlTXWkfp4oUnssi5sXw1okZmm01hT0j0FNvsgMG6zD8Z/9\nmgrVrH+tBxVoYqrPM/WB
    dnYhQXEGQq+UF2uPqoKDbsl3DkftXTBrAoGBANsTdLfHmRidkLCRKfSj\nUrbJOSsU6RWGFuoqgD+DZL
    ngKBTaBTd6TVONSR2JvpVJo5hyiAXQ/jQ1XtsPAuJR6fiiRvDfgF7j\n1lp1tsFpNYx2R4+eqoLrHgIC
    Ak1Ke8tWyoD3NgQ4FO9TDfW+QHn0dpLeWdNMUd2a1GVKp4hIoJal\nAoGBAITqMryO5eyZ9XNPMQ3Zp+
    +gI15xoVCunu7VJOs+ZVlGnsrp9eVKdux9TU3YiDsiQdMP8ulX\n+sQHyg63It+3EyCVC8qIYHmGiV9V
    aJql0rovjbB+GNFabDwBKLbkMhRt/MnBJ75SQaOmvSkImomh\n7up9q9mtg9cbHPlcHHnW65VNAoGAKi
    +Y7jrVVFQjJJ0PgzhgGSqug4lHSQnFJ9p/T7uxjcmIblt9\nXa2Dbm9qgPGhbYX8psKHRvdzvAH6/hvp
    5kL31xUIrCGdyqf9AvZf9uaXlTDBnvpiw0sbQC+62b9a\nD1HrNOJl2HIkNeG8cnHsYI+etbFzgqjTqu
    TBua+iiy/RHLECgYALIDqaAcd7o4V+ws+WG1G9vTlc\nJ6/sBpu3JyKMSdJYlbgIbvHgrfbKhEYuNh/H
    XNdrI6oeW9eAruqHlH+OlUx0tCg4VIeQsz/b7kPS\nY14OMAswuHHyqlZIqK4Xy/R6SQmsc/CUXWPk5I
    UesJk5f1V1NXIqqwv6+nlEucdjgYUd5w==\n-----END RSA PRIVATE KEY-----"}
    
    
    irb(main):020:0> @ec2.describe_key_pairs()
    
    => [{:aws_key_name=>"mykeypair",
    :aws_fingerprint=>"c6:62:22:9e:99:05:6a:17:13:06:e0:86:f9:55:2a:78:ff:99:6b:fa"}]
                

  5. 새 EBS 볼륨을 만든다. 이 볼륨의 가용성 영역을 us-east-1c로 지정한다. 이 볼륨을 만든 후 사용할 수 있게 되면 같은 가용성 영역에서 실행 중인 인스턴스에만 이 볼륨을 연결할 수 있다. 이 볼륨의 초기 상태는 "생성 중" 상태이다. 프로세스가 완료되면 "사용 가능한" 볼륨이 된다.

    Listing 21. 새 EBS 볼륨을 만들고 볼륨 표시하기
    irb(main):024:0> @ec2.create_volume('', 1, 'us-east-1c')
    
    => {:aws_status=>"creating", :aws_created_at=>Mon Sep 08 00:29:35 UTC 2008, 
    :zone=>"us-east-1c", :aws_size=>1, :snapshot_id=>nil, :aws_id=>"vol-2f34d146"}
    
    irb(main):026:0> @ec2.describe_volumes()
    
    => {:aws_status=>"available", :aws_created_at=>Mon Sep 08 00:29:35 UTC 2008, 
    :zone=>"us-east-1c", :aws_size=>1, :snapshot_id=>nil, :aws_id=>"vol-2f34d146"}
                

  6. 이 볼륨을 현재 인스턴스에 블록 장치 /dev/sdj로 연결한 후 실제로 사용할 수 있도록 ext3 파일 시스템 형식으로 지정한다.

    Listing 22. 새 EBS 볼륨을 연결하고 파일 시스템 만들기
    irb(main):031:0> @ec2.attach_volume('vol-2f34d146', 'i-5a9d3a33', '/dev/sdj')
    
    => {:aws_instance_id=>"i-5a9d3a33", :aws_device=>"/dev/sdj", 
    :aws_attachment_status=>"attaching", :aws_id=>"vol-2f34d146", 
    :aws_attached_at=>Mon Sep 08 00:34:03 UTC 2008}
    
    
    $ mkfs.ext3 /dev/sdj
    mke2fs 1.39 (29-May-2006)
    /dev/sdj is entire device, not just one partition!
    Proceed anyway? (y,n) y   
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131072 inodes, 262144 blocks
    13107 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=268435456
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks: 
            32768, 98304, 163840, 229376
    
    Writing inode tables: done                            
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 39 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
                

  7. 새로 포맷한 블록 장치를 파일 시스템 폴더에 마운트한다.

    Listing 23. 로컬 디렉토리에 볼륨을 마운트하고 사용하기
    $ mount /dev/sdj /mnt/my-vol
    
    $ echo “Hello Devworks” > /mnt/my-vol/test.txt
    
    # cat /mnt/my-vol/test.txt
    
    Hello Devworks
    

이제 이 EBS 볼륨을 시스템의 다른 블록 장치와 동일한 방식으로 사용할 수 있다. 즉, 볼륨에서 읽기 및 쓰기 작업을 수행할 수 있다. 볼륨 사용을 완료한 후에는 볼륨을 실행 중인 인스턴스에서 분리할 수 있으며, 나중에 언제라도 동일한 인스턴스나 다른 인스턴스에 다시 연결할 수 있다. 이 볼륨은 EC2의 유효성 수준을 획기적으로 높여준 지속적 스토리지이다. 이 자산은 다양한 방법으로 활용할 수 있다. 예를 들어, 인스턴스의 수명보다 오랫동안 유지되어야 하는 웹 서버 로그에 대한 중요 데이터베이스 데이터를 저장하는 경우 유용하게 사용할 수 있다.

EBS 볼륨의 스냅샷을 만들어서 특정 시점의 볼륨 컨텐츠를 관리할 수 있다. 스냅샷은 자동으로 S3에 저장되며 EC2에 의해 누적되는 방식으로 만들어진다. 볼륨의 첫 번째 스냅샷에는 전체 사본이 포함되지만 이후 스냅샷에는 변경된 부분만 저장된다. 현재는 Amazon Web Services 계정당 500개의 스냅샷만 허용되며 500개 이상이 필요한 경우에는 계정 제한을 늘려달라고 요청할 수 있다.


Listing 24. EBS 볼륨의 스냅샷 만들기
irb(main):007:0> @ec2.create_snapshot('vol-2f34d146')

=> {:aws_status=>"pending", :aws_volume_id=>"vol-2f34d146", 
:aws_started_at=>Mon Sep 08 00:49:15 UTC 2008, :aws_progress=>"", 
:aws_id=>"snap-13db3c7a"}

스냅샷은 EC2에서 백그라운드로 만들어진다. 모든 스냅샷을 주기적으로 표시하여 스냅샷이 성공적으로 만들어졌는지 확인할 수 있다.


Listing 25. EBS 스냅샷 표시하기
irb(main):008:0> @ec2.describe_snapshots()

=> [{:aws_status=>"completed", :aws_volume_id=>"vol-2f34d146", 
:aws_started_at=>Mon Sep 08 00:49:15 UTC 2008, :aws_progress=>"100%", 
:aws_id=>"snap-13db3c7a"}]

마지막으로 볼륨을 인스턴스에서 분리할 수 있다. 나중에 볼륨을 동일한 인스턴스나 다른 인스턴스에 다시 연결할 수 있다.


Listing 26. EBS 볼륨 분리하기
irb(main):006:0> @ec2.detach_volume('vol-2f34d146')

=> {:aws_instance_id=>"i-5a9d3a33", :aws_device=>"/dev/sdj", 
:aws_attachment_status=>"detaching", :aws_id=>"vol-2f34d146", 
:aws_attached_at=>Mon Sep 08 00:34:03 UTC 2008}




위로


결론

이 기사에서는 Amazon의 EC2 서비스를 소개하고 기본 개념에 대해 설명했다. EC2와 상호 작용하는 데 사용할 수 있는 오픈 소스 Ruby 라이브러리인 right_aws의 일부 기능도 살펴보았다. 많은 내용을 다루기는 했지만 EC2는 방대하고 복잡한 주제이므로 Amazon EC2 Developer Guide에서 더 많은 정보를 살펴보기를 권한다.

이 "Amazon Web Services를 사용한 클라우드 컴퓨팅" 시리즈의 Part 4에서는 클라우드에서 신뢰할 수 있는 메시징 기능을 제공하는 Amazon SQS(Simple Queue Service)에 대해 설명한다.



참고자료

교육

제품 및 기술 얻기
  • IBM 평가판 제품을 다운로드하여 DB2®, Lotus®, Rational®, Tivoli® 및 WebSphere®의 애플리케이션 개발 도구 및 미들웨어 제품을 사용하자.


토론


필자소개

Prabhakar Chaganti photo

Prabhakar Chaganti는 사용자의 전체 AWS 클라우드 컴퓨팅 환경(EC2, S3, SQS 및 SimpleDB 포함)을 설계, 관리 및 모니터링하는 단일 통합 인터페이스를 만들고 있는 신생 업체 Ylastic의 CTO이다. 최근에 Xen VirtualizationGWT Java AJAX Programming이라는 두 권의 책을 집필했으며, VMware Global Virtual Appliance Challenge에서 가장 혁신적인 가상 어플라이언스에 주어지는 커뮤니티 초이스 상을 수상하기도 했다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



 


 


 


이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us



IBM, IBM 로고, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli 및 WebSphere는 미국 또는 기타 국가에서 사용되는 International Business Machines Corporation의 상표 또는 등록 상표이다. 이와 함께 기타 IBM 상표가 기재된 용어가 상표 기호(® 또는 ™)와 함께 이 정보에 처음 표시된 경우, 이와 같은 기호는 이 정보를 발행할 때 미국에서 IBM이 소유한 등록 상표 또는 일반 법적 상표이다. 또한 이러한 상표는 기타 국가에서 등록 상표 또는 일반 법적 상표이다. 현재 IBM 상표 목록은 http://www.ibm.com/legal/copytrade.shtml에 있다. Intel 및 Intel Xeon은 미국 또는 기타 국가에서 사용되는 Intel Corporation 또는 자회사의 상표 또는 등록 상표이다. Java 및 모든 Java 기반 상표와 로고는 미국 또는 기타 국가에서 사용되는 Sun Microsystems, Inc.의 상표이다. Linux는 미국 또는 기타 국가에서 사용되는 Linus Torvalds의 등록 상표이다. Microsoft 및 Windows는 미국 또는 기타 국가에서 사용되는 Microsoft Corporation의 상표이다. 기타 회사, 제품 및 서비스 이름은 해당 회사의 상표 또는 서비스표이다. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의