原文: http://blog.csdn.net/xjtuse_mal/article/details/6098236
由于项目的需要,这几个月都在使用Amazon的EC2。这个东西对于国内的用户来说比较陌生,但是听国外的同事说,这在美国可是相当流行。这里简单介绍一下,大家有兴趣也可以试试。
什么是EC2
EC2全称Amazon Elastic Compute Cloud,是Amazon于2006年推出的新一代hosting服务,目前尚处于beta阶段,但是使用中没有发现什么问题,相当稳定。EC2的功能 介绍参见:http://www.amazon.com/gp/browse.html?node=201590011
要用EC2,有两个概念必须先了解。
Amazon Machine Image (AMI) - An Amazon Machine Image (AMI) is an encrypted file stored in Amazon S3. It contains all the information necessary to boot instances of your software. 一种储存在Amazon S3上的加密文件,里面包含了启动你的应用软件时所必须的所有信息。
Instance - The running system based on an AMI is referred to as an instance. All instances based on the same AMI begin executing identically. Any information on them is lost when the instances are terminated or if they fail.实例是指基于AMI上运行的系统。
从网上申请EC2服务
对EC2有个大概了解之后,就可以开始在网上申请使用此项服务了。
1. 首先必须先在Amazon Web Services上注册一个用户http://www.amazon.com/gp/browse.html?node=3435361
2. 注册完毕后,回到Amazon Web Services页面,点击左边Browse Web Services中的Amazon Elastic Compute Cloud (Beta),然后在EC2页面中,点击右边的Sign Up For This Web Service。这时系统会显示一个收费列表(如下)及要求你输入你的支付方式。
Instances
$0.10 per instance-hour consumed (or part of an hour consumed)
Data Transfer
$0.10 per GB - all data transfer in
$0.18 per GB - first 10 TB / month data transfer out
$0.16 per GB - next 40 TB / month data transfer out
$0.13 per GB - data transfer out / month over 50 TB
可以看到EC2完全按你的需要收费。如果需要多个实例,就可以多开几个,不需要了就关了,没有传统hosting的固定合同。
里面还提到Amazon的另一个服务Amazon Simple Storage Service ,简称Amazon S3,主要用于存贮数据。EC2是不负责储存的,每次instance关掉重启除/mnt外所有数据还原成VM镜像的初始状态,/mnt则被清空。储存由 S3 (Amazon Simple Storage Service)服务负责。可以看看我的帐单。
Instance基本硬件配置是是:Xen VM,2G CPU,1.7G RAM,文件系统Ext3: 10G /(镜像持久), 140G /mnt(每次重启被清空)。OS主要为Linux和Windows,可以从http: //developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=101 挑选自己需要的已经有的AMI。
用户注册后,准备使用它了,这里有几项前提条件:
1 下载并安装最新的Java Runtime Environment from http://java.sun.com/javase/downloads/index_jdk5.jsp
2 下载Amazon EC2 command-line tools from: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351&categoryID=88
"Resource Center"->”Amazon Elastic Compute Cloud (Beta) “->"Developer Tools".
3 下载PuTTY & PuTTYgen from http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
设置工具
1. 在C盘下创建一个文件夹来存储和EC2相关的东西,如c:/EC2(当然不一定要在C盘)
2. 创建并下载private key文件和X.509 certificate从
"Your Web Services Account"->" AWS Access Identifiers"
-> 在X.509 Certificate 里的"Create New", 保存他们到c:/EC2,命名为"privatekey.pem" and "509certificate.pem"
3. 在c:/EC2下创建一个bat文件
@echo off
set EC2_HOME=c:/EC2
set PATH=%PATH%;%EC2_HOME%/bin
set EC2_PRIVATE_KEY=c:/ec2/PrivateKey.pem
set EC2_CERT=c:/ec2/509certificate.pem
set JAVA_HOME=C:/Program Files/Java/jre1.6.0_02
"%JAVA_HOME%/bin/java" –version
4. 解压缩Amazon EC2 command-line tools工具并且将/lib和/bin文件夹移至c:/EC2下。这样在EC2目录下就有两个文件夹,一个bat文件和2个认证文件。
5. 在运行中输入CMD,切换至c:/EC2,然后运行
C:/EC2>ec2
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode, sharing)
运行实例
1. 运行‘C:/EC2/bin>ec2-describe-images -o self -o amazon’ 来查看所有公共的镜像
C:/EC2/bin>ec2-describe-images -o self -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
IMAGE ami-bd9d78d4 ec2-public-images/demo-paid-AMI.manifest.xml amazon
available public A79EC0DB
或者到这个页面选择一个适合的AMI:
http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=101
2. 运行‘C:/EC2/bin>ec2-add-keypair kiki-keypair’,然后创建一个名为 id_rsa-kiki-keypair的文件,粘贴从-----BEGIN RSA PRIVATE KEY----到-----END RSA PRIVATE KEY-----之间(包括它们本身)所有的内容。特别注意最后一行的换行。
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQBuLFg5ujHrtm1jnutSuoO8Xe56LlT+HM8v/xkaa39EstM3/aFxTHgElQiJLChp
HungXQ29VTc8rc1bW0lkdi23OH5eqkMHGhvEwqa0HWASUMll4o3o/IX+0f2UcPoKCOVUR+jx71Sg
5AU52EQfanIn3ZQ8lFW7Edp5a3q4DhjGlUKToHVbicL5E+g45zfB95wIyywWZfeW/UUF3LpGZyq/
ebIUlq1qTbHkLbCC2r7RTn8vpQWp47BGVYGtGSBMpTRP5hnbzzuqj3itkiLHjU39S2sJCJ0TrJx5
i8BygR4s3mHKBj8l+ePQxG1kGbF6R4yg6sECmXn17MRQVXODNHZbAgMBAAECggEAY1tsiUsIwDl5
91CXirkYGuVfLyLflXenxfI50mDFms/mumTqloHO7tr0oriHDR5K7wMcY/YY5YkcXNo7mvUVD1pM
ZNUJs7rw9gZRTrf7LylaJ58kOcyajw8TsC4e4LPbFaHwS1d6K8rXh64o6WgW4SrsB6ICmr1kGQI7
3wcfgt5ecIu4TZf0OE9IHjn+2eRlsrjBdeORi7KiUNC/pAG23I6MdDOFEQRcCSigCj+4/mciFUSA
SWS4dMbrpb9FNSIcf9dcLxVM7/6KxgJNfZc9XWzUw77Jg8x92Zd0fVhHOux5IZC+UvSKWB4dyfcI
tE8C3p9bbU9VGyY5vLCAiIb4qQKBgQDLiO24GXrIkswF32YtBBMuVgLGCwU9h9HlO9mKAc2m8Cm1
jUE5IpzRjTedc9I2qiIMUTwtgnw42auSCzbUeYMURPtDqyQ7p6AjMujp9EPemcSVOK9vXYL0Ptco
xW9MC0dtV6iPkCN7gOqiZXPRKaFbWADp16p8UAIvS/a5XXk5jwKBgQCKkpHi2EISh1uRkhxljyWC
iDCiK6JBRsMvpLbc0v5dKwP5alo1fmdR5PJaV2qvZSj5CYNpMAy1/EDNTY5OSIJU+0KFmQbyhsbm
rdLNLDL4+TcnT7c62/aH01ohYaf/VCbRhtLlBfqGoQc7+sAc8vmKkesnF7CqCEKDyF/dhrxYdQKB
gC0iZzzNAapayz1+JcVTwwEid6j9JqNXbBc+Z2YwMi+T0Fv/P/hwkX/ypeOXnIUcw0Ih/YtGBVAC
DQbsz7LcY1HqXiHKYNWNvXgwwO+oiChjxvEkSdsTTIfnK4VSCvU9BxDbQHjdiNDJbL6oar92UN7V
rBYvChJZF7LvUH4YmVpHAoGAbZ2X7XvoeEO+uZ58/BGKOIGHByHBDiXtzMhdJr15HTYjxK7OgTZm
gK+8zp4L9IbvLGDMJO8vft32XPEWuvI8twCzFH+CsWLQADZMZKSsBasOZ/h1FwhdMgCMcY+Qlzd4
JZKjTSu3i7vhvx6RzdSedXEMNTZWN4qlIx3kR5aHcukCgYA9T+Zrvm1F0seQPbLknn7EqhXIjBaT
P8TTvW/6bdPi23ExzxZn7KOdrfclYRph1LHMpAONv/x2xALIf91UB+v5ohy1oDoasL0gij1houRe
2ERKKdwz0ZL9SWq6VTdhr/5G994CK72fy5WhyERbDjUIdHaK3M849JJuf8cSrvSb4g==
-----END RSA PRIVATE KEY-----
3. 运行是实例。这个过程需要几分钟的时间
C:/EC2/bin>ec2-run-instances ami-25b6534c -k kiki-keypair
RESERVATION r-3e27c657 621657444030 default
INSTANCE i-c3f31eaa ami-25b6534c pending kiki-keypair 0
4. 通过以下命令查看状态
C:/EC2/bin>ec2-describe-instances i-c3f31eaa
RESERVATION r-3e27c657 621657444030 default
INSTANCE i-c3f31eaa ami-25b6534c ec2-72-44-51-222.z-1.compute-1.amazonaws.com domU-12-31-36-00-30-74.z-1.compute-1.internal running kiki-keypair 0
5. 给你的实例授以网络访问的权限。
C:/EC2/bin>ec2-authorize default -p 22
PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
C:/EC2/bin>ec2-authorize default -p 80
PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
C:/EC2/bin>ec2-authorize default -p 21
PERMISSION default ALLOWS tcp 80 21 FROM CIDR 0.0.0.0/0
6. 用PuTTY连接你的实例
7. 通过浏览器查看你的实例.Http://ec2-72-44-51-222.z-1.compute-1.amazonaws.com
8. 如果需要,安装VSFTPD
yum –y install vsftpd
passwd root
/sbin/service vsftpd start
创建一个镜像
9. 在实例中,下载ec2-ami-tools然后安装
bash-3.2# wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm.
rpm -Uvh ec2-ami-tools.noarch.rpm
注意:在有些实例中,你需要安装Ruby。
10. 复制private key和509 certificate文件于/mnt下
11. 运行
bash-3.2#ec2-bundle-vol -d /mnt -k /mnt/privatekey.pem -c /mnt/509certificate.pem –u < AWS account ID >
注意:account ID可以从Amazon网上的Account Activity地方得到。它显示在页面的左上方,格式象9999-9999-9999。不过要移除中间的连接符只留下12位数字。
12. 运行ls -l /mnt/image.* 查看生成的文件
13. 运行如下命令上传AMI到Amazon的S3上
bash-3.2#ec2-upload-bundle -b <your-s3-bucket> -m /mnt/image.manifest.xml -a <aws-access-key-id> -s <aws-secret-access-key>
14. 运行如下命令以注册你的AMI
C:/EC2/bin>ec2-register <your-s3-bucket>/image.manifest.xml
15. 运行如下命令产生一个实例基于你的AMI
C:/EC2/bin>ec2-run-instances ami-5bae4b32
Cleaning Up
16. 运行如下命令注销AMI
C:/EC2/bin>ec2-deregister <your-s3-bucket>
17. 运行如下命令从Amazon S3上移除你的AMI
bash-3.2#ec2-delete-bundle -b <your-s3-bucket> -p image -a <aws-access-key-id> -s <aws-secret-access-key>
18. 中止你的实例。一旦你的实例启动后,你就必须为它消耗掉的资源付钱。如果你决定不再使用它了,最好中止掉它
C:/EC2/bin>ec2-terminate-instances i-c3f31eaa
INSTANCE i-10a64379 running shutting-down
或直接关闭你的实例
bash-3.2#shutdown –h now
相关连接
? Amazon EC2 Getting Started Guide (API Version 2007-03-01)
http://docs.amazonwebservices.com/AWSEC2/2007-03-01/GettingStartedGuide/
? Setting up and Running Amazon EC2 from Windows
http://developer.amazonwebservices.com/connect/servlet/KbServlet/download/583-102-1043/ec2-tutorial-transcript-from-castingwords.html