- 云计算那些事儿:从IaaS到PaaS进阶
- 陈晓宇
- 2747字
- 2020-08-27 18:35:30
1.8 AWS
读者可能比较诧异为什么我总喜欢以AWS举例,这是因为目前它是公有云里面体量和技术层面的领头羊。实际上,它的某些技术和方法已经成为当前云的一种规范,可以说是AWS开创了公有云,我们谈论到的S3、VPC、RDS等词汇都是AWS创造的。截至2018年第一季度,云厂商的规模排名如下:AWS独占33%,微软占13%,Google占6%。AWS超过了微软、IBM和Google的总和,当然微软和Google也在加速追赶。2018年第二季度AWS占34%,微软占14%,IBM占8%,谷歌占6%,还有中国的阿里云占4%。在短时间内,AWS的地位将很难撼动。下面我将给大家介绍AWS相关的一些服务。
1.8.1 IAM
IAM(Identity and Access Management)是AWS(Amazon Web Services)的权限管理服务,负责AWS的认证和授权。可以通过IAM创建和管理AWS的用户和用户组,并设置各种权限来允许或拒绝用户对AWS资源的访问,从而保证资源的隔离和安全。
1.8.2 EC2
EC2(Amazon Elastic Compute Cloud)在AWS(Amazon Web Services)云中提供可扩展的计算服务。通俗来说,即提供虚拟机服务。本书中虚拟机和实例通常是一个概念,不加以区分。通过虚拟机的镜像可以创建出不同类型(CPU、内存、数据盘、IP)的虚拟机实例,实例的类型主要包括通用性(平衡的计算、内存和网络资源,可用于多种工作负载)、计算优化(高性能处理,如媒体转码、高性能计算HPC、机器学习等)、内存优化(处理内存中大型数据集的工作负载,实现快速性能,例如Redis缓存、Spark内存迭代计算等)、存储优化(高性能顺序读、写访问的工作负载,提供每秒上万次低延迟性随机I/O操作,例如Hadoop、日志系统等)等类型,分别能够适应不同的业务场景需要。本质上,他们的区别是在CPU、内存、磁盘和网络上面特定的配置,例如存储优化可能使用的是SSD数据盘,而其他类型可能只是普通的SAS盘。
虚拟机安全服务安全组(Security Group)起着虚拟防火墙的作用,可以控制一个或多个实例的流量。在启动EC2实例时,将一个或多个安全组与该实例关联,并且为每个安全组添加规则,规定上行(流出)和下行(流入)的流量规则。当修改完安全组的规则后,新规则会在经过一小段时间之后自动应用于与该安全组关联的所有实例中。EC2实例的每次数据包的发送和接收,会匹配与该实例关联的所有安全组中的所有规则。如果熟悉iptables规则设置的话,对此应该容易理解,安全组定义了协议,如TCP、UDP或ICMP等。端口针对TCP或者UDP开放一个或者一段端口范围。源和目标网段,采用CIDR的形式表示一个地址范围。
除此之外,虚拟机还可以挂数据盘及其他关联服务。
1.8.3 AMI
AMI(Amazon Machine Images)是Amazon系统镜像服务,提供启动虚拟机所需的启动模块。Amazon系统镜像(AMI)是一种包含软件配置(例如,操作系统、应用程序服务器和应用程序)的模板,可以从单个AMI启动多个虚拟机,是虚拟机的镜像管理服务。反过来,也可以将运行的虚拟机实例或者虚拟机快照导出成虚拟机镜像上传到AMI中。这样就可以基于这个新的虚拟机镜像创建其他虚拟机。还可以将AMI与其他人共享,但安全方面需要谨慎。
AMI启动虚拟机有两种方式,如图1-6所示。一种是本地系统盘启动,这种方式是将AMI保存在S3中,每次启动虚拟机的时候都会从S3中下载镜像到本地,然后基于这个本地镜像启动虚拟机。如果基于相同镜像的虚拟机,则可以复用本地AMI。
图1-6 AMI启动虚拟机的两种方式
另一种方式是AWS更加推荐的做法,即通过EBS启动虚拟机,即远端系统盘。使用EBS作为根文件系统。这种方式启动虚拟机更快,而且能够保证更快的数据访问和更加可靠的数据存储。
1.8.4 EBS
EBS(Amazon Elastic Block Store)为EC2实例提供块存储服务,它是高可用的块存储,并且可以加载到同一个AZ的任何一个实例中,即使虚拟机销毁,这些EBS的数据仍然会被保持,特别适高I/O类型的需求,例如文件系统或数据库存储。EBS也有很多规格,通用型SSD(10000 IOPS和160MB/s的吞吐量),预配置IOPS SSD(最高可支持32000 IOPS和500 MB/s吞吐量。因此,通过将EC2实例挂载到该类型的卷从而达到数万IOPS)。吞吐优化HDD,该类型提供低成本的磁性存储,吞吐量优先,而非IOPS,高达500MiB/s,非常适合大型顺序工作负载(如日志系统),还有一种更加低廉以吞吐量优先的存储Cold HDD,其吞吐量为250MiB/s。每个实例都可以挂载多个EBS卷,但一个EBS卷只能挂载到一个EC2的实例上面,这些EBS卷都是多副本的,保证了数据的可靠性。在安全方面,EBS支持AES-256加密,并且加密是在EC2实例上面完成的,保证了传输的安全。EBS还支持弹性扩容(在服务不间断的条件下,修改卷的类型、容量和IOPS)和快照(通过增量的快照保存到S3中,用户备份恢复)功能。
1.8.5 VPC
Amazon VPC(Amazon Virtual Private Cloud)是在AWS上创建隔离的私有虚拟网络。可以在VPC中启动实例。一个VPC与传统数据中心的一个网络相似,提供了动态变更和扩展的能力。在VPC中可以设定IP地址段,创建子网,并配置路由表、网关和安全设置。绑定浮动IP能够为VPC的实例提供公网服务,甚至可以将VPC连接到自己企业的数据中心,并利用AWS云扩展数据中心。
弹性IP地址是专为动态云计算设计的静态IPv4地址,弹性IP地址可以快速地将地址重新映射到用户账户中的另一个实例中,从而屏蔽实例故障。
1.8.6 S3
S3(Simple Storage Service)是AWS的对象存储服务,保证99.999999999%的存储可靠性。S3使用HTTP的方式提供服务,计价方式通过存储用量和HTTP请求次数综合定价。S3存储分为两级:bucket(对象桶)和object(对象)。对象桶是一组对象的集合,在创建对象之前必须先创建对象桶,每个对象可以是一个视频或者一个文本文档。S3还定义了一套存储的API(https://docs.aws.amazon.com/AmazonS3/latest/API/s3-api.pdf),目前这套API已经被当作对象存储的接口规范。为了保障资源的安全访问,API接口的调用需要先通过IAM创建Access Key和Secret Access Key。
除了我上面介绍的一些常用服务,AWS还提供了:①RDS关系数据库服务,主要是MySQL、Oracle、PostgreSQL、Sql Server、Mariadb等关系型数据库服务,并且AWS开发了一款具有容错和自我修复能力的分布式关系数据库Aurora,官方宣传能够达到5倍MySQL和3倍PostgreSQL的性能;②对于键值数据的存储,AWS提供了DynamoDB,DynamoDB读写性能非常高,可以达到每秒2000万个请求;③Serverless的理念呼之欲出,AWS早在2014年就提供了Lambda服务,它是一种纯粹的无服务器编程方式,通过事件触发预先定义的代码,按照触发的次数计费,当资源不足时能够自动完成动态伸缩;④机器学习和人工智能是近几年最流行的概念,云计算的普及为人工智能的落地提供了计算支持,AWS的SageMaker为开发人员和数据科学家提供快速构建、训练和部署机器学习模型的能力,涵盖了整个机器学习工作流程:标记和准备数据、选择算法、训练算法、调整和优化、预测等,从而降低机器学习成本,简化机器学习流程,提高学习速度;⑤物联网这几年快速发展,为此AWS还提供了一套IoT组件,包括部署在边缘节点的FreeRTOS微控制操作系统、Greengrass本地计算和数据发送组件,以及部署在云中的Core、Analytics、Device Management等设备管理和数据分析组件,AWS可以提供一整套物联网解决方案。
AWS一直保持云计算的领先地位,不仅得益于其敏锐的市场洞察能力,更得利于其有效的面向服务价格。AWS中每个服务都是以接口的方式(主要是HTTP)暴露服务,服务之间通过接口交互数据,这就是现在大家所说的微服务的概念,不得不说,AWS在很早就实践了这个理念,从而为服务的快速上线和迭代奠定了架构基础。