AWS使用小记之EC2(Elastic Compute Cloud)

服务

全称

说明

URL

CloudFront Amazon CloudFront 延迟短、价格低的内容传递服务 http://aws.amazon.com/cloudfront/
CloudWatch Amazon CloudWatch 云资源监测,如CPU利用率、磁盘读写、网络流量等,用于EC2 http://aws.amazon.com/cloudwatch/
Amazon EC2 Amazon Elastic Compute Cloud 云计算 http://aws.amazon.com/ec2/
Amazon Elastic MapReduce Amazon Elastic MapReduce 基于EC2和S3的数据密集型应用服务 http://aws.amazon.com/elasticmapreduce/
Amazon RDS Amazon Relational Database Service 关系数据库服务 http://aws.amazon.com/rds/
Amazon SNS Amazon Simple Notification Service 云通知服务 http://aws.amazon.com/sns/
Amazon SQS Amazon Simple Queue Service 云队列服务 http://aws.amazon.com/sqs/
Amazon S3 Amazon Simple Storage Service 云存储服务 http://aws.amazon.com/s3/
Amazon SimpleDB Amazon SimpleDB 非关系数据存储服务 http://aws.amazon.com/simpledb/
Amazon SES Amazon Simple Email Service 电子邮件服务 http://aws.amazon.com/ses/
Amazon VPC Amazon Virtual Private Cloud 虚拟私有云服务 http://aws.amazon.com/vpc/
Auto Scaling Auto Scaling 服务适配,成本有效降低 http://aws.amazon.com/autoscaling/
AWS CloudFormation AWS CloudFormation AWS服务模板化配置使用 http://aws.amazon.com/cloudformation/
AWS Elastic Beanstalk AWS Elastic Beanstalk 快速云应用部署,PAAS(platform-as-a-service,平台即服务) http://aws.amazon.com/elasticbeanstalk/
AWS Import/Export AWS Import/Export 便携式存储设备的数据导入/导出 http://aws.amazon.com/importexport/
IAM AWS Identity and Access Management  多用户访问管理 http://aws.amazon.com/iam/
Elastic Load Balancing Elastic Load Balancing 弹性负载均衡 http://aws.amazon.com/elasticloadbalancing/


在十月中旬的时候,突然萌生了想法,建一个自己的网站,于是开始寻觅DNS,爷爷给推荐了name.com,很给力。对比了网上所谓的十大美国主机之后,我发现不如买个Linode来的实在,正当我纠结于一个月十几刀的价格的时候,爷爷又一次出现了。这次给我推荐了Amazon Web Services的EC2,又一次给力的推荐。

EC2,全名Elastic Compute Cloud,正如这个名字所说的一样,是为开发者们提供的一个弹性(即可控制可调整)计算的Web服务。我的主要需求是一台VPS,所以我只需要在EC2上运行一个实例就行了。幸运的是AWS在从2010年11月份开始推出一项推广措施,即AWS Free Usage Tier,主要包括以下内容(我友情翻译一下):

AWS免费层(每月):

  • Amazon EC2(亚马逊弹性计算云,云计算服务的核心即基础,提供非常弹性的实例管理)Linux微型实例750小时的使用权(613M内存且支持32位和64位平台)——(750h>31*24h,也就是说你可以整月都开着这个实例)*
  • Amazon Elastic Load Balancer(or Elastic Load Balancing,亚马逊弹性负载均衡,在EC2基础上实现的负载均衡服务)750小时使用加15GB的数据处理空间(这个没用过,所以不好评价)*
  • Amazon Elastic Block Storage(亚马逊弹性块存储,可以理解成EC2的硬盘)10GB空间,外加100万次IO、1GB快照空间、1万快照GET请求和1000次快照PUT请求*
  • Amazon S3 Storage(or Amazon Simple Storage Service,亚马逊简单存储服务,类似于网络硬盘,我用Gladinet把它变成了我的Dropbox之一,当然它的利用价值远不止这些)5GB空间,外加2万次GET请求和2000次PUT请求*
  • 贯穿于所有服务(除Amazon CloudFront服务外)的共30GB(包括15GB的流入流量和15GB的流出流量各半)的网络流量*
  • Amazon SimpleDB(亚马逊简单数据库服务,非关系型数据存储,提供了很多给力的特性如运行时修改数据模型且自动索引等,有点类似于nosql,但更像一个削除了繁杂的关系查询的精简版关系数据库,个人观点^^,有时间多研究研究)25机器小时(即一台机器运行一小时)以及1GB的空间**
  • Amazon Simple Queue Service(亚马逊简单消息队列服务)10万个请求**
  • Amazon Simple Notification Service(亚马逊简单通知服务,这个服务非常给力,想想以后只需要简单配置就可以实现各种“推”的场面,目前这个服务还处于beta阶段,有时间一定要试用下)10万个请求、10万个HTTP通知以及1000个邮件通知**
  • Amazon Cloudwatch (亚马逊云服务监控,这个应该是EC2上比较高级的一个功能,有针对性的监控并有警报响应)10次警报**

几点补充说明:

  1. AWS Management Console是这些Web服务的统一管理界面,免费的,哈哈。
  2. 后面带*的项适用于该层发布后新注册的用户且有效期为2010.11到2011.11共12个月。
  3. 后面带**的项相当于已有收费机制的调整,没有有效期限制和用户限制。
  4. 所有的指标均是覆盖四大服务区域(US – N. Virginia, US – N. California, EU – Ireland, and APAC – Singapore)的,即这四个区域的使用的所有指标一起计算后去除免费使用层后再按标准收费。以第一条为例,免费一个实例,就是说你只能在四个区域中选择一个新建一个实例使用,而不是每个区域各一个。

下面详细介绍一下我的EC2的使用过程:

Step 1. Sign Up and Sign In,即注册一个Amazon Account并登陆

这里不是很复杂,直接到EC2的界面上注册(Sign Up)就是了,值得注意的是你需要有一张支持visa或者是mastercard的信用卡,来作为支付手段。注册结束之后信用卡里面会被扣掉$2(EC2和EBS各一刀,确认你这个人存在用的,好像过后又还回来了),注册完了之后就登录到AWS Management Console上的EC2管理界面上了。

Step 2. New an instance,即新建一个实例。

先来看看我们现在的AWS Management Console的EC2界面。熟悉一下这个界面。大概了解一下每个块显示的是什么内容。下图是Dashboard的一个截图。

新建分为几个小的步骤:

  1. 选择好区域,我选择的是亚太地区,即新加坡机房。然后点击Launch Instance,弹出一个窗口,开始新建实例。
  2. 第一步、选择AMI,即亚马逊机器镜像,通俗点说就是选个已经配置好的GHOST,主要有三类:AMI(Quick Start,官方提供的AMI)、My AMIs(我自己的镜像)、Community AMIs(社区里的镜像,也就是别人公开出来的镜像),按需选择,我个人选择的是社区里的某人公开出来的Cent OS 5.5 x86。
  3. 第二步、选择你需要运行实例的个数,个人用户一个就够了。然后是实例类型,免费层范围内的是Micro(微型),值得注意的是不同的AMI对应的机器的类型是不一样的,某些是没有微型的,系统总是有个适用范围的。见图。
  4. 第三步、选择CPU和内存,就是选出一个你可用的序列号,没什么特别的意思。在这里可以启用Cloudwatch(如果你有钱的话)。不上图了,下一步。
  5. 第四步、加标签,简单说就是给你的这个实例贴上一些方便识别的标签,就像运维在机房里做的那样,也不上图了。
  6. 第五步、非常重要,选择密钥对。这个密钥的主要功能是SSH登录主机时候使用。取名之后创建,下载妥善保存该PEM文件。该文件其中包含了公私钥信息。可根据不同的客户端使用。
  7. 第六步、配置防火墙。即配置iptables规则。默认已经有一个配置了。这里的注意点一些经常使用的端口要打开,比如你要远程SSH用的22端口,HTTP用的80端口之类的。当你发现你配置的应用无法访问的时候不妨查看一下这里的配置,粗心的我就经常犯这样的错误。比较简单,不上图了。
  8. 第七步、确认之前所有的配置信息,确定没有错误之后,ready to go,点Launch。
  9. done。你可以在Instance面板上看到你自己的实例了已经。

使用过程中的TIPs:

SSH登录

在实例管理的页面上右击你的实例,点选Connect就会有Linux下SSH连接该实例的方法了。个人用的电脑系统是WIN7,懒得天天到虚拟机里去SSH,搞了个SecureCRT,然后在SSH的连接选项里面配置了这个PEM文件就可以练上去了,一般默认的用户名是root,当然有些实例如果root不允许登陆的话会提示你应该用什么用户登录。putty也有类似的功能,但是需要用putty自带的工具从pem文件中导出私钥,我懒得搞。上张SecureCRT中会话选项的配置图。

登录上去之后想干嘛干嘛。

Elastic IP的配置

连接SSH的提示中用的是一个amazom的三级域名,即该实例的Public Dns,这个地址通常不会变,特殊情况(实例停止后重新启用)下会发生变动,针对这种情况,可以去到Elastic IP面板中,新建一个Elastic IP,并且分配给你需要使用的实例。这样你就可以把自己的域名解析到这个IP上,坚挺而稳定。Allocate New Address——分配IP地址。Associte——把分配的IP地址与实例关联。

创建AMI和Snapshot

其实这两个东西不是一样东西,但是功能和操作方法都很类似,且有所关联,所以放到一起说一说。

先说AMI,当你的应用配置完毕之后,你可以方便别人或者方便自己,把当前的实例做出一个镜像,留待以后使用或者在社区中共享(把Permission设置为Public就可以了)。在实例上右击->Create Image(EBS AMI)->按需填写。AMI创建成功之后可以直接用这个镜像起更多的实例(还是那句话,如果你有钱)。

Snapshot,就是EBS的快照,其实每一个AMI的创建都要求给出一个EBS的快照。我们也可以自己创建EBS的快照。在Snapshot的界面选择Create Snapshot->选择你要创建快照的Volume->确认就可以了。

值得注意是在创建AMI或者Snapshot的时候机器都是会停掉的,会对使用造成一定的影响。当然,如果你拥有一个自己的集群,这些也就不是问题了。

以上就是我使用的时候遇到的一些比较实用的内容。下面介绍一下EC2的具体资费,这个应该是大家最关心的东西。

EC2资费指南

按需运行实例(On-Demand Instances)

这种实例的收费方式最简单,就拿我的实例(Linux Micro in Singapore,新加坡的Linux微型实例)来讲,如果过了明年十一月份,免费层过期。按需运行:

运行一年的价格应该是:365d/y*24h/d*$0.025 per hour=$219=¥1457.445(今日汇率6.655

运行三年的价格应该是:$219*3=$657=¥4372.335

这种实例的优势是用多少算多少,按需来用,灵活性好,相对来说较贵。

保留定制实例(Reserved Instances)

不知道这样翻译会不会有问题,呵呵。这种收费模式就是说你的需求相对固定的时候,可以先花一笔钱,买下这个实例的使用权,然后要用的时候费率就相对打了一个比较大的折扣,因为需求的相对固定节约了运维的成本,自然总体的价格也就便宜下来了,还是以我的实例为例。在保留定制实例情况下的收费:

运行一年的价格应该是:365d/y*24h/d*$0.01 per hour+$54=$141.6=¥942.348

运行三年的价格应该是:3*365d/y*24h/d*$0.01 per hour+$82=$344.8=¥2294.644

这种实例需要在一开始就定好你需要的实例类型,一旦确定使用时就不能更改。比较适合我这种小用户使用。

现货竞价实例(Spot Instances)

这个翻译可能更加惊悚,不过如果了解这个实例的话就会知道其实这个翻译还是比较恰当的。这个实例有点像竞价的模式,价高者得,你可以设置一个你对你的实例的要求和你能接受的每小时最大费率,然后把这个请求投入“拍卖场”,市场的价格是在供需平衡的原则基础上波动的,一旦你是同等条件下的最最高出价人,那个阶段你的实例就会被运行。个人感觉这个有点像去青楼找红牌,你掏出你这个月仅剩的一点点工资,去竞价,说不定什么时候其他人对XXOO的要求减少的时候,市场供求关系发生变动,供多求少的时候,价格跌下来,你一夜春风的机会就来了。。囧一个。这个显然不适合我这样对持久性和稳定性要求比较严格的人(不要想歪了,我说的是网站的运营),它的适用范围是:

  • Image and video processing, conversion and rendering (图像和视频的处理、转换及渲染)
  • Scientific research data processing(科学研究数据的处理)
  • Financial modeling and analysis(金融建模及分析)

官方还给出了一个例子,我顺手也翻译成中文,有助于理解这种示例的使用模式:

假设你决定发起一个Spot请求——部署一个标准的小型(m1.small)实例在美国东北弗吉尼亚地区。你可以在AWS的管理控制台或使用亚马逊的EC2 API看到最近1-2小时的现货价格在0.030美元/小时到0.060美元/小时间波动,目前为0.050美元/小时。你决定要把0.045美元/小时设置为你能接受的最高价格。你通过使用亚马逊的EC2 API或通过AWS的管理控制台发起了该Spot请求。因为您的设置的最高价格比目前现货价格低,所以没有实例被启动且您的请求仍然处于挂起状态。

两个小时后,现货价格下降到0.045美元/小时。在这个时间点上,您的请求可能会、也有可能不会被接受。这是因为您的最高价格恰好等于目前现货价格,而这个价格可能请求的人比较多,你没排上号。假设你的实例没有启动。三十分钟后,现货价格下降到0.039美元/小时。因为这低于您的最高价,现货竞价实例将即时启动,你的实例运行的第一个小时的价格就是0.039美元。

继续我们的例子,三个小时后,现货价格上涨至0.043美元/小时。现在,如果你继续运行实例,需要支付的价格0.043美元/小时。你的实例不会被关闭,因为亚马逊的EC2现货价格仍低于您的最高价格。

一个小时后,现货价格上涨至0.045美元/小时。在这一时间点上,您的实例可能会、也可能不会被终止(跟上面的情况差不多,由供求情况决定),在这种情况下,实例继续运行了,你将被收取0.045美元/小时。

最后,四个小时后,现货价格上涨至0.055美元/小时。因为这比您的最高价高,亚马逊EC2将终止你的实例。系统运行多出的不满整小时的部分不会收费,因为它是被亚马逊EC2终止的。

PS:我是在Google翻译的基础上改得通顺了些,所以请原谅这里面出现那么多“您”。

你可能感兴趣的:(负载均衡,service,ssh,存储,processing,web服务)