AWS的强大在于它包含丰富的组件,且相互之间可以方便的集成。AWS的总体服务等级服务承诺的可用性是99.99%。可扩展性和高可用性是AWS所有组件的共同特点。
计算类
Amazon Elastic Compute Cloud (Amazon EC2)
1. 快速扩展或缩减计算容量(auto-scaling)
Amazon EC2 将获取并启动新服务器实例所需要的时间缩短至几分钟,这样一来,在您的计算要求发生变化时,您便可以快速扩展或缩减计算容量。
您还可以使用 Amazon EC2 Auto Scaling 确保 EC2 队列的可用性并根据其需求自动扩展和缩减该队列,以最大限度提高性能和降低成本。 EC2 Auto Scaling 的动态和预测扩展功能可以添加或删除 EC2 实例。动态扩展响应不断变化的需求,预测扩展会根据预测的需求自动安排正确数量的 EC2 实例。动态扩展和预测扩展可结合使用。
Auto scaling工作原理
队列管理
Auto Scaling可以检测有问题的EC2实例和运行状况不佳的应用程序,并自动完成实例替换,确保应用程序获得预期的计算容量。基于以下三个函数实现:
1)监控正在运行的实例的运行状况:通过定期health check识别运行状况不佳的实例。
2)自动替换受损实例:对于health check失败的实例,Auto Scaling 会自动将其终止并替换为新实例。
3)均衡可用区之间的容量:Auto Scaling 可跨区域自动均衡实例,并始终启动新实例以便它们跨整个队列尽可能均匀地分布在各个区域。
动态扩展
使用目标跟踪扩展策略来选择应用的负载指标,如CPU使用率。或者用 Load Balancer 中的新“每个目标的请求计数”指标 (即一种适用于 Elastic Load Balancing 服务的负载均衡选项),来设置目标值。Auto Scaling将自动调整 EC2 实例的数量以维持目标。
预测性扩展
使用机器学习预测即将出现的流量变化,来安排正确数量的 EC2 实例。其机器学习算法可检测每日和每周模式的变化,自动调整预测结果。
2. 收费方式
Amazon EC2 按您实际使用的容量收费。
3. 有多种实例类型、操作系统和软件包可选
项目中使用的示例类型是t3.medium和部分t2:T3 实例是下一代可突增的通用实例类型,它提供基准级别的 CPU 性能,并能够根据需要随时突增 CPU 使用率。T3 实例提供均衡的计算、内存和联网资源,适用于 CPU 使用率中等但使用量可能临时突增的应用程序。
Elastic Load Balancer(ELB)
ELB在多个目标(EC2实例、容器、IP 地址和 Lambda 函数)之间自动分配传入的应用程序流量。支持单个可用区和跨可用区的负载均衡。
ELB支持同一负载均衡器在 AWS 资源和本地资源之间进行负载均衡,轻松实现本地应用程序迁移、突增或故障转移至云端。
ELB提供容器支持,可以在同一个EC2 实例上的多个端口之间进行负载均衡。
ELB避免将流量交到有问题的节点,提高应用程序的容错能力。
ELB与auto scaling集成,并在任何EC2实例的延迟超过预先配置的阈值时,触发 Auto Scaling。
AWS Batch
专用于批处理应用
AWS Lambda
无须考虑服务器即可运行代码。
数据库
Amazon Relational Database Service (Amazon RDS)
在项目中应用RDS,就不需要安装和维护数据库软件;RDS使得数据库具有高度可扩展性。RDS提供六种常用的数据库引擎供您选择,包括 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle Database 和 SQL Server。您可以使用 AWS Database Migration Service 轻松将您现有的数据库迁移或复制到 Amazon RDS。
其中,当前项目中用的是Postgresql。Postgreslq是一种开源关系数据库RDS 可管理复杂而耗时的管理任务,例如 PostgreSQL 软件安装和升级、存储管理、为获得高可用性和高读取吞吐量而进行的复制,以及为灾难恢复而进行的备份。
RDS对PostgreSQL数据库引擎功能的支持,意味着项目中原有的数据库代码、应用程序和工具也可以用于 Amazon RDS。
管理与监督
AWS CloudWatch
CloudWatch提供监控和管理服务。CloudWatch可以监控应用程序、了解和响应性能变化、优化资源利用率,并在统一视图中查看运营状况。CloudWatch以日志、指标和事件的形式收集监控和运营数据,让您能够在统一视图中查看AWS资源以及在AWS和本地服务器上运行的应用程序和服务。CloudWatch支持设置高精度警报、日志和指标显示、自动化排查问题,提出优化措施。
现代应用具有分布式特点(微服务架构)并且会以指标、日志等形式生成大量数据。CloudWatch从这些孤立的数据来源(服务器、网络、数据库等)收集整理数据,从而有效地监控应用程序和基础设施资源,打破数据孤岛,获得整个系统的可见性。
CloudWatch提供统一的运营视图、实时的粒度数据和历史参考内容,以便优化性能和资源利用率。CloudWatch支持粒度为1秒的增强监控,并将指标存储和保留长达15个月。还可以利用指标数学等原生 CloudWatch 功能来计算指标数据。例如汇总整个EC2实例队列的使用数据,以获得运营和利用率见解。
AWS CloudFormation
AWS CloudFormation提供了一种通用语言来描述和预配置云环境中的所有基础设施资源,也就是我们所说的基础设施即代码。
CloudFormation使用简单的文件以自动化的安全方式对应用程序需要的所有资源建模并对其进行预配置。该文件是云环境的单一信任源。 这有助于基础设施组件标准化,从而实现配置合规性并加快故障排除速度。
AWS CloudFormation以安全、可重复的方式预配置您的资源,使您可以构建和重新构建您的基础设施和应用程序,而不必执行手动操作或编写自定义脚本。
AWS CloudTrail
AWS CloudTrail是对AWS 账户进行监管、合规性检查、操作审核和风险审核。它可以记录日志、持续监控并保留与整个 AWS 基础设施中的操作相关的账户活动;并保留事件历史记录,包括通过AWS管理控制台、AWS开发工具包、命令行工具等各种途径执行的操作。这一事件历史记录可以简化安全性分析、资源更改跟踪和问题排查工作。
联网和内容分发
Amazon Virtual Private Cloud (Amazon VPC)
Amazon VPC用于配置一个逻辑隔离的虚拟网络。
安全是VPC的首要目的。利用安全组和网络访问控制列表等安全层,可在实例级别和子网级别启用入站和出站筛选功能,对各个子网中EC2示例的访问进行控制;在Amazon S3中存储数据并限制访问,只能从VPC中的实例访问这些数据;启动专用实例,在单个客户的专用硬件上运行,作为额外的隔离。
VPC支持以下类型的连接:
1. 连接Internet的公有子网,公有子网中的实例可以发送和接收来自Internet的流量。
2. 连接Internet的私有子网,私有子网中的实例无需暴露其私有 IP 地址即可访问 Internet,具体方法是在公有子网中通过网络地址转换 (NAT) 网关路由其流量。
3. 安全地连接到公司数据中心 – 所有进出流量都可以通过标准的加密 IPsec 硬件。
4. 以私有方式连接到其他 VPC(对等 VPC)实现跨虚拟网络分享资源。
5. 通过 VPC 终端节点以私有方式连接到 AWS 产品,而无需使用 Internet 网关、NAT 或防火墙代理。可用的 AWS 产品包括 S3、DynamoDB、Kinesis Streams、Service Catalog、AWS Systems Manager、Elastic Load Balancing (ELB) API 和 Amazon Elastic Compute Cloud (EC2) API 和 SNS。
Amazon CloudFront
CloudFront 是一项快速内容分发网络 (CDN) 服务,可以安全地以低延迟和高传输速度向全球客户分发数据、视频、应用程序和 API。
存储
Amazon Simple Storage Service (Amazon S3)
S3是一种对象存储服务,可用于存储和保护各种用例(如网站、移动应用程序、备份和还原、存档、企业应用程序、IoT 设备和大数据分析)的任意数量的数据。S3还提供访问控制的管理功能。
通过自动创建和存储跨多个系统的所有S3对象的副本,S3可达到 99.999999999%(11 个 9)的数据持久性。