EC2基础知识

  • EC2(弹性计算云)是AWS提供的最基本的云计算产品:虚拟专用伺服器。这些「实例」可以运行大多数Linux,BSD和Windows操作系统。在内部,他们已经使用了大量修改的Xen虚拟化。也就是说,新的实例类正在引入KVM衍生的管理程序。到目前为止,这仅限于C5实例家族。
  • 术语「EC2」有时用来指代伺服器本身,但是在技术上更广泛地指整个支持服务集合,例如负载平衡(CLB / ALB / NLB),IP地址(EIP),可启动映像( AMI),安全组和网路驱动器(EBS)(我们将在本指南中单独讨论)。
  • ?** EC2定价 **和成本管理是一个复杂的话题。它的范围可以从免费(在AWS免费层)到很多,这取决于您的使用情况。定价按实例类型(按秒或小时)进行,并根据AWS地区以及是否在现货市场或预购(预购实例)中按需购买实例。
  • 网路性能:对于某些实例类型,AWS使用「低」,「中」和「高」等通用术语来指代网路性能。用户已经完成了基准测试,以提供对这些术语意味著什么的期望。

EC2的选择和锁定

  • 运行EC2类似于运行一组物理伺服器,只要您不进行自动缩放或集群设置。如果您只是运行一组静态实例,迁移到另一个VPS或专用伺服器提供商应该不会太难。
  • ??EC2的替代方:直接的选择是Google Cloud,Microsoft Azure,Rackspace,DigitalOcean,AWS自己的Lightsail产品以及其他VPS提供商,其中一些提供类似的API来设置和移除实例。(见上面的比较)
  • 你应该使用Amazon Linux吗?AWS鼓励使用自己的Amazon Linux,它是从红帽企业Linux(RHEL)和CentOS发展而来的。它被许多人所使用,但其他人则持怀疑态度。无论你做什么,仔细想想这个决定。事实上,亚马逊Linux经过了严格的测试,并得到了更好的支持,但在EC2的操作系统和虚拟化方面存在更深层次的问题。但是总的来说,许多公司在使用标准的非亚马逊Linux发行版(如Ubuntu或CentOS)时可以做得很好。使用标准的Linux发行版意味著如果您使用其他托管提供商而不是AWS(或除此之外),则您拥有完全可复制的环境。如果您希望在运行相同标准Linux发行版的本地开发人员计算机上测试部署,这也是有帮助的(这种做法在Docker中也越来越常见了,现在Amazon支持Amazon Linux Docker官方镜像旨在协助当地的可持续发展,尽管这是足够新的,应该被认为是实验性的)。
  • EC2成本:请参阅此部分。

EC2提示

  • ??拣选区域:首次设置时,首先考虑要使用哪个区域。北美许多人自动在美国东部1区(北维吉尼亚州)自动建立,这是默认的,但是值得考虑的是这是否是最好的。您需要评估服务可用性(某些服务在所有地区都不可用),成本计算(基线成本也因地区而异,最高可达10-30%(为了比较目的,通常在我们的东1最低))以及合规性(例如,各国在数据隐私方面有不同的规定)。
  • 实例类型: EC2实例有多种类型,对应于CPU架构和速度,RAM,磁碟大小和类型(SSD或磁)以及网路带宽等虚拟机的功能。
    • 选择实例类型很复杂,因为有很多类型。此外还有不同的一代,多年来发布。
    • ?使用ec2instances.info列表来查看成本和功能。亚马逊自己的实例类型列表很难使用,并没有列出功能和价格,这使得它非常困难。
    • 价格差异很大,所以请使用ec2instances.info来确定符合您需要的机器组,并根据您所在地区的ec2price.com找到最便宜的机型。根据时间和地区的不同,价格可能会便宜得多租用比内存或CPU 更多的实例。

  • 关闭你的实例,当他们不使用。对于诸如测试或分级资源之类的许多情况,您可能不需要全天候的实例,并且在被暂停时不需要支付EC2的运行成本。鉴于成本是根据使用情况计算得出的,所以这是节省成本的简单机制。这可以通过使用Lambda和CloudWatch(像cloudcycler这样的开源选项)或像GorillaStack这样的SaaS提供商来实现。(注意:如果关闭临时根卷的实例,当实例关闭时,任何状态都将丢失,因此,对于有状态的应用程序来说,关闭EBS支持的实例是更安全的)。
  • 专用实例专用主机被分配硬体,而不是通常的虚拟实例。它们比虚拟实例更昂贵,但对于性能,合规性,财务建模或许可原因可能更可取。
  • 32位与64位:一些微型,小型和中型实例仍可用作32位体系结构。您现在将使用64位EC2(「amd64」)实例,尽管更小的实例仍然支持32位(「i386」)。使用64位除非你有传统的约束或其他好的理由使用32。
  • HVM vs PV: EC2,硬体虚拟机(HVM)和准虚拟(PV)有两种虚拟化技术。历史上,PV是通常的类型,但现在HVM正在成为标准。如果你想使用最新的实例类型,你必须使用HVM。详情请参阅实例类型矩阵。
  • 操作系统:要使用EC2,您需要选择一个基本的操作系统。它可以是Windows或Linux,例如Ubuntu或Amazon Linux。您可以使用AMI执行此操作,AMI在下面的章节中有更详细的介绍。
  • 限制:您不能创建任意数量的实例。每个帐户的EC2实例数量的默认限制因实例类型而异,如本列表中所述。
  • ? 使用终止保护:对于任何重要且寿命长的情况(特别是不是自动缩放的一部分),启用终止保护。这是防止用户错误的重要防线,例如由于人为错误而意外终止多个实例而不是一个实例。
  • SSH密钥管理:
    • 当你启动一个实例时,你至少需要设置一个ssh密钥对,以便引导,即允许你第一次使用ssh。
    • 除了引导之外,您还应该在实例上自己管理密钥,并根据需要将各个密钥分配给各个用户或服务。
    • 创建新实例时,请避免重复使用原始引导密钥(管理员除外)。
    • 避免共享密钥并为个人用户添加个人密钥。

  • GPU支持:您可以在EC2上租用支持 GPU的实例,以用于机器学习或图形渲染工作负载。
    • 有三代 GPU启用的实例可用:
      • 第三代P2系列提供NVIDIA K80 GPU,采用1,8和16个GPU配置,以机器学习和科学工作负载为目标。
      • 第二代G2系列提供NVIDIA K520 GPU,采用1或4个GPU配置,针对图形和视频编码。
      • 第一代CG1实例在一些配置NVIDIA M2050 GPU的配置中仍然可用。

    • ?AWS提供了大多数NVIDIA驱动程序和辅助软体(CUDA,CUBLAS,CuDNN,TensorFlow)的AMI(基于Amazon Linux),以降低使用障碍。但请注意,这会导致由于Amazon Linux而导致的锁定,以及您无法直接访问软体配置或版本。
    • ?与任何昂贵的EC2实例类型一样,当中断可以忍受时,竞价型实例可以显著节省 GPU工作负载。

  • 所有当前的EC2实例类型都可以利用IPv6定址,只要它们在启用了IPv6的VPC中分配了CIDR范围的子网中启动即可。

EC2局限性

  • ?不要使用ssh密码。只是不要这样做; 他们太不安全了,妥协的后果太严重了。改用钥匙。仔细阅读,通过确保/ etc / ssh / sshd_config文件中的「PasswordAuthentication no」完全禁用ssh伺服器的ssh密码访问许可权。如果你仔细地管理ssh私钥存放在任何地方,这是基于密码的认证安全性的一个重大改进。
  • ?对于所有较新的实例类型,在选择使用的AMI时,请确保选择了HVM AMI,否则它将不起作用。
  • ?创建实例并使用新的ssh密钥对时,请确保ssh密钥的许可权是正确的。
  • ?有时,某些EC2实例可能会被AWS计划退休,原因是「检测到底层硬体退化」,在这种情况下,您有几个星期才能迁移到新实例
    • 如果您的实例根设备是EBS卷,您通常可以停止然后启动将其移动到健康主机硬体的实例,从而控制此事件的时间。但请注意,如果实例类型具有实例存储卷,则将丢失任何实例存储卷数据(临时驱动器)。
    • 实例公共IP(如果有的话)可能会更改,除非您使用弹性IP。如果其他系统依赖于IP地址,这可能是一个问题。

  • ?定期地,您可能会发现您的伺服器或负载均衡器正在接收(可能是)与您现在分发的IP地址上运行的以前的EC2伺服器的流量(这可能无关紧要,或者可以通过迁移到另一个新实例)。
  • ?如果EC2 API本身是您的基础架构的关键依赖(例如,用于自动更换伺服器,自定义缩放演算法等),并且您正在大规模运行或进行多个EC2 API调用,请确保您了解何时可能失败(呼叫是速率有限的,限制不公布和可能会改变),编码和测试的可能性。
  • ?许多较新的EC2实例类型是仅EBS的。确保计划使用EBS时的性能和成本。
  • ??实例有两种类型:固定性能实例(例如M3,C3和R3)和可突发性能实例(如T2)。T2实例连续接收CPU信用,其速率取决于实例大小。T2实例闲置时产生CPU积分,当它们处于活动状态时使用CPU积分。但是,一旦实例用完,您将注意到性能严重下降。如果您需要一致的高CPU性能的应用程序,如视频编码,大量网站或HPC应用程序,建议使用固定性能实例。
  • 实例用户数据被限制为16 KB。(此限制适用于原始格式的数据,不适用于base64编码格式。)如果需要更多数据,可以通过用户数据脚本从S3下载。
  • 非常新的帐户可能无法启动某些实例类型,例如GPU实例,因为最初施加的「软限制」为零。这个限制可以通过提出支持请求来提高。有关提出支持请求的方法,请参阅AWS服务限制。

推荐阅读:

相关文章