Romennts 致力于成为最会弹钢琴的架构师

AWS EC2 超详细使用指南

2017-06-15
Romennts
aws
 

AWS作为业界领先的云服务提供商,提供多种多样的高可靠性服务。其中AWS EC2 作为一项web服务,向用户提供虚拟化服务器,虚拟计算环境被称为实例。它允许用户按需调整计算容量,例如可以对CPU数量、内存大小、存储大小与类型以及网络性能进行弹性缩放。

EC2不仅可以提供基于Linux和Windows的虚拟机,EC2 还可以和其他AWS产品集成在一起。例如,可以结合AWS 的负载均衡服务ELB和 Auto Scaling,自动进行计算资源的弹性缩放,以应对流量高峰的变化,无需猜测容量需求。

要跨多个实例自动分配应用程序的传入流量,可使用 Elastic Load Balancing。 要监控您的实例和 Amazon EBS 卷的基本统计数据,可使用 Amazon CloudWatch。 要监控对您的账户的 Amazon EC2 API 的调用 (包括由 AWS 管理控制台、命令行工具和其他服务进行的调 用),请使用 AWS CloudTrail

同时Amazon EC2 服务承诺为每个 Amazon EC2 区域提供 99.95% 的高可用性。

AWS 为您提供了实际动手的机会,新注册用户可以免费试用指定EC2实例类型一年。

我将从以下四个方面介绍AWS EC2服务。

1、什么是EC2

2、使用EC2实例的一些实践

3、关于EC2的相关概念

4、如何正确选择EC2

5、常见故障排查

Amazon EC2优势

DNS records

您可以灵活地根据业务需要启动一定数量的虚拟服务器,在不需要使用的时候,可以通过关闭服务器资源,减少服务器费用。与其他传统云计算提供商不同的是, EC2是按小时使用计费的。因此使用 Amazon EC2 可避免在数据中心运行和维护方面投入资金,您可以专注于开发和部署应用程序。除此之外,启动EC2只需要简单的几个步骤,或者使用API自动化启动。

AWS EC2可用区域与可用区数量

DNS records

那么EC2可以部署在哪些地方呢?目前AWS 云在全球 16 个地理区域内运营着 42 个可用区,我们从图上可以看到,每个区域是由多个可用区组成。五大洲中除了非洲均有可用区,而且明年还将会再上线5 个可用区和 2 个区域。您只需要单击几下,就可以在全世界的多个地区轻松部署您的应用程序。这意味着您可以以最低的成本轻松为您的客户提供更低的延迟和更好的体验。

Amazon 可用区域与可用区

DNS records

每个EC2区域之间都是完全隔离的,这样可以实现高容错性和稳定性。每个可用区是由一个或多个分散的数据中心组成。在一个区域内可用区与可用区之间是通过高速网络连接。每个可用区都拥有独立的配套设施,其中包括冗余电源、网络连接等,使其拥有比单个数据中心更高的可用性、容错性以及可扩展性。为了减少物理关联,增强服务可靠性,建议您把一组服务部署在不同的可用区内。值得注意的是AWS为了尽可能让不同用户平均分布在不同的可用区,一个账号所指的可用区编号,如us-east-1a与另一个账号选择的us-east-1a可能不是同一个可用区,但同一个账号选择的某个可用区编号前后是固定的。AWS后台会根据实际资源情况进行映射。

您只能通过AWS(中国)账户访问中国区域

如何启动一台EC2

DNS records

使用控制台启动一个EC2实例非常简单,通过四个步骤即可完成。首先选择需要部署EC2的区域,假如您的服务对象是在亚太地区,那么您可以选择新加坡或者东京的区域,然后选择合适的AMI,也就是系统映像,(后面会提到)再根据业务需要的计算能力,选择实例类型,EC2有非常广泛多样的实例,最后配置网络、安全组、存储卷、标签,一般这些配置都有默认的选项,方便用户启动使用。

最佳实践:启动Web Apache服务器

还没录制~XD

对于 Amazon Linux AMI,用户名为 ec2-user。
• 对于 RHEL AMI,用户名称是 ec2-user 或 root。
• 对于 Ubuntu AMI,用户名称是 ubuntu 或 root。
• 对于 Centos AMI,用户名称是 centos。
• 对于 Fedora AMI,用户名称是 ec2-user。
• 对于 SUSE,用户名称是 ec2-user 或 root。

命令行启动EC2

DNS records

当然您也可以通过AWS命令行工具启动一个实例。AWS CLI是用于管理 AWS 服务的统一工具。让您通过命令行就可以控制多个 AWS 服务,如图使用AWS CLI启动一个EC2实例大致逻辑和控制面板的一样,首先使用aws configure 命令设置您的访问密钥 ID 和私有密钥,这从IAM服务中可以获取(具体的操作后面会说到)。然后设置默认操作区域,这里设置东京,东京的的区域代码是ap-northeast-1,然后通过命令设置安全组,以及创建密钥对,再指定AMI编号,通过安全组以及密钥对创建EC2实例。如图返回一行实例id则说明实例启动成功

什么是AMI

DNS records

再看回刚刚启动过程中几个重要的概念,AMI作为EC2启动模板,不同的AMI内含有不同的操作系统,服务器,应用程序,您可以选择 AWS或用户社区或提供的 AMI,您也可以使用自己制作的AMI来启动EC2 。AMI给管理带来很大的便捷,如果想跨区域部署,或者在别的可用区部署相同的实例,可以先根据实例创建一个AMI,然后跨区域复制AMI,以保证全球部署的EC2一致性。如果您想把AMI分享给别的账户使用,可以改变AMI的访问权限。在选择AMI的时候您可以从地区,适用的实例,操作系统类型和架构这几方面的特性去选择,特别是在选择根设备存储类型时需要注意区别实例存储和EBS。

如何选择合适的存储卷(1)

DNS records

实例存储卷上的数据在实例终止时或是失败时会被删除,而且该实例被删除后不能被恢复。如果您打算使用由实例存储支持的实例,建议您将数据跨多个可用区分配到实例存储中。而且还应该定期将您的实例存储卷上的关键数据备份至S3。对于EBS支持的实例,在默认情况下,当实例终止时,EBS根设备卷虽然也会被删除。但是您可以通过更改默认操作,将块储存设备DeleteOnTermination 属性设置为 false,就算实例删除了,EBS上面的数据会被保留。AWS建议您定期为EBS制作快照以确保数据存储安全性。

如何选择合适的存储卷(2)

一般不是实例要求使用实例存储,都推荐使用EBS作为实例的根存储卷,因为它们启动速度更快,而且EBS提供更好的性能和更大的容量,更易于升级实例类型。EBS计费规则与EC2有所不同。每次从停止状态转换到运行状态,即使您在一小时内进行多次状态转换,依然都只按一个小时收费。要明白收费标准,先从EC2的实例生命周期说起。

EC2实例生命周期

一个EC2实例生命周期从AMI开始,AWS处理完启动请求之后就可以正常运行,提供实例给用户使用,当客户执行重启操作时,正在运行状态的实例状态会转化为正在重启状态,重启之后,实例会释放公有IPV4地址,并在重启之后会分配新的IPV4地址。这过程不会重新产生一小时实例费用,而终止操作则会产生一个计费周期。一旦终止了实例,实例将会被销毁,您无法重新启动一个已终止的实例,而执行停止操作之后在您需要时依然可以执行启动操作,每次启动都会产生一次计费周期。前面也有说到,您可以停止由 EBS 支持的实例,但不能停止由实例存储支持的实例。

DNS records

举个栗子:

假设您的实例每小时的实例收费为 0.10 美元。如果您要运行该实例一小时,中途不停止,您将被收取 0.10 美元。如果您在一小时内停止并重新启动该实例两次,您将因该使用小时被收取 0.30 美元 ,最初 0.10 美元,加上 两次停止后重新启动 ,每次0.10 美元。这就是前面说的,为什么您在一小时内停止并重新启动该实例两次,您将被收取 0.30 美元的原因。但无论是停止还是终止实例,都会停止收取小时使用费。

DNS records

了解EC2的使用方法之后,最重要选择一款合适的EC2实例类型。AWS利用英特尔至强处理器提供高性能和价值的服务。EC2实例针对不同的使用案例进行优化。根据业务需求选择不同计算能力的实例类型。在选择实例类型时,建议先启动一个实例,并使用自己的基准测试应用程序。由于实例按小时使用付费,因此您能够在做出决策前方便而经济地测试不同的实例类型。关于购买方式,在后面的计费方式会提及。

EC2实例类型OR系列

DNS records

您可以根据这个表格选择您大概需要的实例进行基准测试,在九大实例家族中,Invent 2016主要更新了七大实例服务,其中包括EC2内存优化、计算优化、高I/O实例,并且新增了两个硬件加速服务。对于各类型或者系列,均提供各种大小,large,Xlarge,2Xlarge。在选择实例类型时应该考虑各系列的一些不同属性,例如核心数量,内存大小,存储大小和类型,以及网络性能等。

DNS records

Amazon通过不断的更新实例类型以符合市场需要,提供多种经过优化,可让您灵活选择适当的资源组合。例如新出的P2实例含有GPU加速使用非常便捷,可有效的提高机器学习、高性能数据库等业务性能。而新出的X1更是拥有高达2TB内存和100Vcpu,特别有利于提高大数据处理引擎以及高性能计算应用程序性能,并且X1实例每 GB 内存是EC2实例中最便宜的。

关于EC2的一些硬件技术

DNS records

不同的实例使用不同的英特尔处理器,这里介绍一些关键技术,这些技术对某些工作负载的性能有显著影响,熟悉这些性能将有利于您选择合适的实例类型。不同的技术从不同的需求角度提供了优化,给您的程序提供更好的性能优化。

选择最适合的购买方式

DNS records

通过以上介绍您已经能选出自己需要的实例类型,再结合业务需求,选择合适的EC2购买选项。AWS EC2提供了多种多样的计费方式。 按需实例这种方式的预付成本最低,且灵活度最高,您可以每次支付一小时的费用,无需预付费用。对于不可预料的工作负载应用程序:如秒杀系统服务器,根据流量洪峰,按需增减实例数量等,这种计费方式非常合适。

相比按需实例定价,预留实例可以提供大幅度折扣。预留实例不是物理实例,也不是传统意义上的年付方式。而是预付一定费用,然后得到一个折扣。对账户中使用的按需实例进行打折。几个实例需要打折,就需要买几个预留实例。这些按需实例必须匹配特定属性才能享受账单折扣,特定的属性在您购买的时候已经设置好了。例如,如果您购买了预留实例,实例在一个小时内停止后重新启动,并持续运行了两个多小时,则在重新启动前第一个实例小时按折扣后的预留实例费率收费。重新启动后下一个实例小时以按需费率收费,下两个实例小时按折扣后的预留实例费率收费。这适合使用率较高,且使用期限较长的实例,例如数据库服务器需要长期使用的服务。

而竞价实例是EC2最有特色的购买选项,同样是按需付费,但是每个小时的价格是浮动的。只要你的出价高于当时的实例价格,那么实例就可以一直运行,否则就会终止。在竞价的时候,可以设定一个自己可接受的最高价,启用、终止时间、实例配置等信息。不过在一次竞价之后是无法再次修改价格的,一旦AWS的价格高出您竞价时设定的标价,实例就有可能被终止。实例在终止前两分钟会发送通知,让您保存好数据。当然,为了尽量不使实例被停止,也可以设置一个高出很多的价格,但这就要自己承担部分时间段的高价格。所以如果您能灵活控制应用程序运行时间,并且应用程序可以中断运行,那么竞价型实例非常合适您。例如批处理、编码、渲染等程序。

计划预留实例,为期一年,在计划时间内可用。值得注意的是,只有几个高性能的实例类型支持该购买方式,且每年使用不得少于1200小时,需提前三个月购买 EC2还为提供专用主机和专用实例提供购买选项。专用实例是在单一客户专用硬件上运行的 Amazon EC2 实例。专用主机与专用实例在在性能、安全性或物理方面没有区别。不同的是,使用专用主机,您可以查看和控制实例在服务器中的放置。

总的来说:

购买实例从突发性、伸缩性、时效性考虑。

按需实例:突发性强,例如秒杀活动,用完即可停止

预留实例:刚需一定数量的服务器,日常网站服务器

竞价型实例 :时效性不强,用于科学计算,或者某些运算

如何更好的使用EC2资源

DNS records

在公司里面每个人都有不同的职责,测试部门与开发部门需要用到不同的实例,那么如何做到资源的权限管理,避免管理上的混乱呢。

AWS IAM服务就是解决这种问题,您可以在 IAM 中创建角色并为角色分配合适的资源使用权限,以便控制该角色可以执行哪些操作。IAM服务几乎与AWS所有服务无缝贴合。例如您可以通过组管理,设置一个测试用户组,并为该组分配可以自由的使用EC2服务权限,而不能使用其他AWS服务。借助 IAM,您的用户能够控制对 AWS 服务 API 和特定资源的访问。您也可以使用 IAM 添加特定的条件 (例如时间),以控制用户使用 AWS 的方式、来源 IP 地址、是否使用 SSL,或是否通过多重验证设备进行身份验证。

DNS records

DNS records

DNS records

对于EC2,您可以创建一个特定的角色,把它绑定在EC2实例上,图中的Role 是角色, 需要被委托给 User 或者 AWS 服务, 使得被委托的实体有对应的权限。在这过程甚至不用明文 AWS Key就可以完成授权。需要注意的是一个EC2 实例不能有多个角色,但一个角色可以被多个EC2 实例共用。 如图打开到控制面板,选择需要附加角色的实例,设置添加IAM Role ,然后下拉菜单指派特定的IAM角色,这样就完成了一次授权。使用完之后可以通过这个方法撤销授权。

Amazon EC2 FAQ

综合以上,您已经熟悉EC2 的使用,这里提一些比较常见的故障。

AWS推荐当一台EC2实例出现异常,它应该被自动杀死并自动替换掉,而不是修复。

常见问题一:

实例已经处于running状态,却发现无法对实例执行 Ping 操作。这是因为ping命令是一种ICMP流量。要对实例执行ping操作,你必须在入站安全组规则添加回显请求ICMP规则。如图我到控制台设置对应设置之后,ping命令已经可以使用。同样的,如果是使用EC2实例部署一台DNS服务器,一样需要确保TCP和UDP流量可以通过您的DNS服务器。

DNS records

常见问题二:

我不小心丢失了私有密钥了怎么办?如果根设备是实例存储卷,将不能连接到实例了。如果丢失私有密钥的实例根设备是EBS,可以使用两种方法连接实例。一使用其他实例修改根卷EBS上authorized_keys 文件,另外一种则可以根据丢失密钥对的实例制作AMI,从AMI启动一个实例,这个实例里面的内容和您之前的内容没有差别。

DNS records

最后列出一些常见的EC2服务限制,如果你在使用AWS 服务提供的SDK遇到exception问题,不妨考虑使用量是否已经超过限制,AWS为了保护用户权益,预设了一些服务限制。你可以通过提交工单申请提高限制数量。

DNS records

以上是我对EC2的简介以及见解,转载前请发邮件到:[email protected] 知会。


Comments