AWS Technical Essentials + Architecting on AWS 培训概要笔记

目录

 

一、AWS简介与历史

二、AWS Region、AZ、Edge Location

三、安全性、身份和访问管理IAM

1. AWS CloudTrail

四、AWS存储服务

1. Amazon S3

2. Amazon EBS

3.Amazon EFS

4.EC2实例存储

五、AWS数据库服务

1. 区别SQL和NoSQL数据库

2. Amazon RDS

3. Amazon DynamoDB

4. Amazon DynamoDB全局表

5. Amazon DynamoDB最终一致性读取和强一致性读取

6. RDS安全控制

7. 对比Amazon RDS和Amazon DynamoDB

8. Amazon DynamoDB Accelerator

9. Amazon ElastiCache

六、AWS架构完善的框架  WAF设计

1. Amazon EC2

八、数据库迁移

1. AWS DMS

2.AWS Snowball Edge

3.AWS Schema Conversion Tool

九、网络

 

2.Amazon Route53

十、弹性三剑客

1. Amazon Elastic Load Balancing

2. Amazon CloudWatch

3. EC2 Auto Scaling

4. AWS Trusted Advisor

4. CloudFront

十一、自动化部署

1. CloudFormation

2. Elastic Beanstalk

3. OpsWorks

十二、解耦架构

1. Amazon SQS

2. Amazon SNS

十三、微服务与无服务

1. Amazon ECS

2. AWS Fargate

3. API Gateway

4. Step Function

5. Storage Gateway


一、AWS简介与历史

Amazon在1995年作为网上书店开张,随着它的持续发展,在2006年正式推出了Amazon Web Service(AWS),它通过Web 服务平台也称之为“云”,为开发人员和企业这一新的客户群提供服务,以便他们使用该Web 服务平台构建可扩展的复杂应用程序。

AWS的客户:企业客户、初创公司客户、公共部门客户。

AWS核心基础设施与服务:存储和数据库、服务器、联网、安全性等

AWS云计算将基础设施、基础服务、平台服务、应用程序融为一体

AWS基础服务:计算、网络、存储、安全性和身份、应用程序

AWS平台服务:数据库、分析、应用程序服务、管理工具、开发人员工具、移动服务、物联网

AWS最先推出的服务   第一个:S3;第二个:SQS

二、AWS Region、AZ、Edge Location

AWS区域(Region)可分为三大类:中国区域(目前仅支持部分服务)、美国政府(AWS GovCloud)、全球区域(支持所有服务)

其中一个Region至少包括了两个AZ(Availability Zones),一个AZ由一个或多个可用区组成,Region外有着多大一百多个边缘站点(Edge Location),AZ与AZ延迟在0.2ms内,Region与Regiion在0.5ms~1ms 跨Region传输将会扣费

边缘站点(Edge Location)的作用

1)提高性能:CDN(CloudFront)缓存 + DNS(Route53)就近域名解析

2)提高安全性:防DDOS攻击(AWS Shield)+ 保护应用程序(AWS WAF)

Shield 防肉鸡、WAF拦截、过滤应用层流量攻击

Multiple Edge Locations:一个Multiple Edge Locations包含多个Edge Location

区域性边缘缓存(Region Edge Cache): 二级缓存(L2)

当您的内容不被频繁访问所以不足以保留在边缘站点内时,您可以使用区域性边缘缓存,该功能默认与Amazon CloudFront 结合使用。区域边缘缓存会保留这些内容,在用户必须从原始服务器获取内容时提供一份替代方案。

服务搭建时应注意区域选择:

1)选择离用户最近的区域,减少延迟对客户体验的影响

2)服务和功能可用性、成本效益(不同区域服务收费不同)

三、安全性、身份和访问管理IAM

AWS采用责任共担模型、物理安全性、SSL终端节点(安全传输)、AWS多层安全组(实例防火墙)、VPC网络控制(网络控制)

AWS IAM身份验证

AWS管理控制台:用户名、密码

AWS CLI或开发工具包 API:AK/SK(访问密钥/秘密密钥)

AWS IAM授权:策略(JSON文档),分配给用户、组或角色

AWS IAM策略元素

AWS IAM 角色:一个角色一个策略;角色没有相关联的凭证;用户、应用程序和服务可以担任IAM角色,IAM策略也可以分配给IAM角色

角色与实例配置文件

临时安全凭证 过期时间AWS STS 15m-36h

使用案例:跨账户访问、联合身份验证、移动用户、针对基于Amazon EC2的应用程序的密钥轮换

AWS IAM最佳实践:

删除AWS账户(根)访问密钥、创建单独的IAM用户、使用组为IAM用户分配权限、授予最小权限、配置强大的密码策略、为授权用户启用MFA、针对在Amazon EC2实例上运行的应用程序使用角色、使用角色而非共享凭证来委派访问权限、定期轮换凭证、删除不必要的用户和凭证、使用策略条件来提高安全性、监控您的AWS账户活动。

 

不要随便使用AWS的Root用户。

因为这样不安全。正常情况下,可以使用Root用户建立一个权限类似Root的用户来管理下面的用户。并且采取最小权限策略。

其次配合角色来进行使用,最好多使用角色,因为角色颁发的都是一些临时凭证,一般都有时间限制。而用户和组的权限一旦给定就有可能是很长时间了。

 

在aws中所有权限默认都是拒绝操作。除非有显式允许操作,否则不会判断。

策略可以附加到用户,组,角色。

可以决定控制:执行的操作。资源,条件。

策略类型:AWS托管,由客户托管,内联

一个IAM里可以由多个用户和组,策略可以给他们相应权限。

aws Organizations 是一项账户管理的托管服务,一个组织就是一个实体。

1. AWS CloudTrail

记录账户的AWS API调用、将日志文件和信息发送到Amazon S3存储桶、使用AWS管理控制台、AWS开发工具包、AWS CLI和较高级的AWS服务进行调用

AWS CloudTrail 是一项AWS服务,可帮助对您的AWS账户进行监管、合规性检查、操作审核和风险审核。

用户、角色或AWS服务执行的操作将记录为CloudTrail中的事件。事件包括在AWS管理控制台、AWS Command Line Interface 和 AWS 开发工具包和API中执行的操作。

可以将操作信息输出到Event history里。

工作原理:

在您创建AWS账户时,将对账户启用CloudTrail。当您的AWS账户中发生活动时,该活动将记录在CloudTrail事件中。

可以通过查看Event history 轻松查看CloudTrail控制台中的事件。

CloudTrail 日志存放:

可将记录存放在S3内,以.gz结尾,打开后为键值对形式,下载后可用Notepad++来进行修改与编辑。

四、AWS存储服务

1. Amazon S3

托管服务、软件交付、服务全球、对象存储、事件通知功能

桶Bucket 名称全球唯一、arn区分桶名称

对象无层级模式,folder是对象前缀

 

持久性:数据不丢失可能性(11个9)

可用性:服务的可达性即硬盘的损失性+AZ损失性(4个9)

 

存储桶访问控制

默认情况下,存储桶与对象都是私有的

桶—权限—公有访问设置—设置权限

通过设置 桶策略、ACL、权限、CORS(跨域资源共享) 可以控制访问桶和对象

版本控制无法关闭、只能挂起

arn:aws:s3:::bucket/*

arn:aws区域:服务:region-ID:count-ID:控制的对象

 

Get、put

先写后读

不启用版本控制再上传相同名称对象,旧对象被覆盖,有几率读到老副本

Region存储S3副本

S3+CloudFront+Route53 保障静态网站访问,降低成本

 

S3用途

存储、发布静态Web内容和媒体

 

移动数据到S3

控制台、AWS命令行界面(CLI)、API传输

 

当上传数据过大时可选择分段上传

提高吞吐量、从网络问题快速恢复、暂停和恢复对象上传

 

Amazon S3 Transfer Acceleration 提高大量数据跨洲传入S3存储桶的效率

AWS Snowball PB级  AWS Snowmobile EB级 海量数据传入S3

Amazon Glacier 极少检索数据、重要但不经常访问的数据

6)S3存储类

S3标准、S3低频率访问(IA)、S3低冗余存储(RSS)

 

对象生命周期

S3 Stand  30天转至 S3 Stand-IA  60天转至  Glacier  365天后删除

对象键

 

S3存储桶:默认上传的对象为私有的,EC2实例无权限访问

Etag:唯一标识桶

S3静态网站防盗链设计

通过AK/SK来访问CLI S3

当存储体中对象过多时,做操作会影响其性能

Amazon Athena可直接对S3存储桶内的对象进行分析

s3 select 对存储桶进行检索

s3 sync 批量上传(数据备份)

Glacier默认加密,三种加密方式(KMS、SSE)

存储桶一个区域内只有一个,对象在多个可用区内存在副本

Glacier档案和文件库

档案是您存储在文件库中的对象(例如照片、视频或文档)。它是Amazon Glacier 中的基本存储单位。每个档案都有独一无二的 ID 和可选的描述。

文件库是用来存储档案的容器。在创建文件库时,您可以指定文件库名称以及 您要创建的文件库所在的AWS 区域。

文件库锁定功能通过可锁定的政策来执行合规性。

检索Glacier费用昂贵

 

S3单对象最大5TB(多线程上传)单个文件上传最大5GB,最小为0,对于对象数目没有限制,每个AWS账号下最多100个存储桶。存储桶名全球唯一(特别说明中国区存储桶可以和中国区外的存储桶重名,因为中国区存储桶的arn为arn-cn…,国外为arn…),S3版本控制默认不开启。

 

可用ACL,和策略控制桶和对象的访问。存储桶策略文件大小限制在20KB。

S3提供11个9的持久性:数据不丢失可能性(11个9)

S3提供4个9的可用性:对象级存储,可以作为上传和下载等动作事件被lambda接收。

S3存储和分发静态Web内容和媒体 S3桶名唯一~~~~URL

S3存副本在Region  S3     Etag 1W个分片 多线程上传 自己的虚拟机无法访问S3

访问S3两种途径          1) 通过Internet             2) 通过调用API

Arn缺省原因:   url全球区内名字唯一  S3可以在一个桶内放图片

使用url调用图片或者数据时  S3会防止盗链  

为什么托管S3 : 没有带宽的负担 S3版本控制 转移加速度

DNS解析过程  无缓存,通过节点转移

Put 先写后读一致性   Delate 最终一致性

 

S3三种加密方式: SSE-KMS(使用KMS托管密钥的服务器端加密) 

                               SSE-S3(使用S3托管密钥的服务器端加密)

                               SSE-C(使用客户托管密钥的服务器端加密)

 

S3适用于一次写多次读操作

可用区随机分配,看AZ number(每一个用户获得可用区的编号有可能和别人是不一样的,A的1区域可能是B的2区域)

 

默认情况不带版本控制

性能上一般不会影响,在特别大的数据时,使用类似 aws list等命令时由于S3底层是硬盘,会同时对几个盘进行检索,影响性能。

 

CORS信任边界

S3良好存储非结构化数据

数据湖概念

S3底层具有计算能力

可使用Select筛选数据

元数据

 

S3  Glancier 冰川服务

冷备份

Glacier 必须加密

Glacier 是成本极低的存储服务,用于为数据存档和备份提供具备安全功能的持久性存储。

将有三种检索方式:

 1.加速检索通常需要 1 到 5 分钟     0.03美元/GB

 2.标准检索通常需要 3 到 5 小时 

 3.批量检索通常需要 5 到 12 小时    0.0025美元/GB

2. Amazon EBS

Amazon EBS生命周期

AZ存储EBS副本

IOPS:非顺序 每次数据的交互量  吞吐量:HDFS

SSD:固态硬盘,应用于非关系数据、实例根卷

HDD:机械硬盘

EBS并非作为服务,而是作为硬盘

EBS卷类型:通用SSD、预配置的IOPS SSD、吞吐优化HDD、Cold HDD

 

EBS优化性实例

  1. 经过配置优化的堆栈
  2. 用于Amazon EBS I/O额外的专用容量
  3. 将Amazon EBS和其他流量之间的争用降到最低
  4. 介于425Mbps和14000Mbps之间的选项

 

一个EBS不能供两个EC2使用,同时EC2使用EBS不能跨AZ

若EC2想使用其它AZ或Region的EBS,可先将EBS保存为快照,再附加到相应EC2上

 

1)EBS使用案例

操作系统、数据库、企业应用程序、商业连续性、应用程序

2)

Amazon EBS提供了块级存储卷以用于 EC2 实例,相比S3、EFS速度是最快的,具有高可用的特性。

EBS有通用型 SSD (gp2)、预配置 IOPS SSD (io1)、吞吐优化 HDD (st1) 和 Cold HDD (sc1) 卷。gp2适用于引导卷、中小型数据库以及开发和测试环境,大小为1G-16T。Gp2 卷最高可支持 16,000 IOPS 和 250 MiB/s 的吞吐量,大小为4G-16T。io1性能最高,专为关键型应用程序设计,大小为500G-16T。st1为频繁访问的吞吐量密集型工作负载设计的低成本HDD卷。sc1为不常访问的工作负载设计的成本最低的HDD卷,大小为500G-16T。

我们都知道当EC2创建的时候会分配1块EBS存储卷,这块EBS存储卷就是这台EC2实例的根卷。1个EBS只能被一台EC2实例挂载,但一台EC2实例可以挂载多个EBS。

EBS卷特别适合用作文件系统和数据库的主存储,例如经常在数据集内进行大量随机读写操作的数据库应用程序。它是存储并对你的操作系统、数据库存储和小于1T的数据集块级访问的理想根卷。

3.Amazon EFS

Amazon Elastic File System

EFS适用于多个实例使用同一存储

EFS文件存储服务  传输速度:EBS > EFS > S3

Amazon EFS

  1. 完全可扩展的共享网络文件存储
  2. NFSv4文件系统
  3. 提供了EFS File Sync 以便将现有文件系统轻松同步到Amazon EFS中

 

EFS是一种弹性文件系统

可同时被多个实例访问

这项服务在可扩展性、可用性和持久性方面都十分出众。

其次EFS底层也是block存储。

所以速度上要比S3快速。

 

Amazon EFS 中的数据一致性

Amazon EFS 提供了应用程序期望从 NFS 获得的关闭后打开一致性语义。

在 Amazon EFS 中,写入操作在以下情况下将持久存储在可用区中:

应用程序执行同步写入操作 (例如,使用带 open 标记的 O_DIRECT Linux 命令或使用 fsync Linux 命令)。

应用程序关闭文件。

根据访问模式,Amazon EFS 提供了比关闭后打开一致性语义更强大的一致性保证。执行同步数据访问和执行非附加写入的应用程序将具有写入后读取数据访问一致性。

 

4.EC2实例存储

EC2 Instance Storage

免费、高性能、EC2实例停止、发生故障或终止会自动删除数据

EMR+S3+ Instance Storage 低成本大数据分析

 

五、AWS数据库服务

1. 区别SQL和NoSQL数据库

添加数据库层:可扩展性、总存储要求、对象大小和类型、持久性

数据库类型:关系、非关系

选择关系数据库:

  1. 遵循严格的Schema规则与数据录入质量
  2. 需要ACID合规性
  3. 数据库不需要极端的读/写容量

ACID指的是原子性、一致性、隔离和持久性

SQL 数据库用行和列存储数据,架构固定:必须先确定列,才能输入数据,通过增加硬件纵向扩展SQL数据库

写少读多、保持一致性、针对应用程序、一个写入点

 

选择非关系数据库:

  1. 可横向扩展
  2. 不适合传统架构
  3. 传统SQL数据库无法以经济划算的方式支持您的读取/写入速率

NoSQL 数据库使用很多存储模型(包括键值对、文档和图形)中的一种来存储数据。,NoSQL架构是动态的,可通过服务器进行水平扩展

 

 

非托管数据库:需负责所有安全备份、数据库调整和复制

AWS托管数据库:只需负责应用程序优化,“确保数据库层尽可能适用于与您的应 用程序”

 

1)数据存储注意事项

数据格式、数据大小、查询频率、数据访问速度、数据保留时间

2)AWS托管数据库服务 Amazon RDS 

轻松、快速地部署;管理常见数据库管理服务;与应用程序兼容;

快速、可预测的性能;轻松、快速地扩展;安全;经济高效

3)数据库实例

Amazon RDS的基本构建块、云中的独立数据库环境、可包含多个由用户创建的数据库

4)Amazon RDS备份的工作原理

自动备份、手动快照   建议同时使用,以确保数据的不丢失性

5)跨区域快照

存储在不同AWS区域的数据库快照的副本、提供用于灾难恢复的备份、不同区域的迁移的基础

6)数据仓库与数据库的区别

数据仓库 RedShift  数据库迁移 AWS DMS

如何进行数据库迁移?

先停止数据库实例,再将主数据库服务迁移至从数据库,先迁移主数据库,再将数据迁移至主数据库,最后迁移从数据库,将数据同步至主数据库

2. Amazon RDS

通过RDS访问MySQL、MariaDB、Microsoft SQL Service、Oracle或PostgreSQL数据库的完整功能。还包含了Amazon Aurora ,Amazon Aurora是兼容 MySQL 的关系数据库引擎。

 

RDS自动备份默认开启默认保留1天,最多选择保留35天,可以将数据库恢复到某个时间点;手动快照则存储在S3中长期保留。当我们选择配置了多可用区实例时,RDS会自动将数据同步复制到其他AZ中的备用数据库实例中,主数据库实例故障时,RDS自动切换到备用数据库实例。

 

1)Amazon RDS安全性

在Amazon VPC中运行数据库实例;在IAM策略授予对Amazon RDS资源的访问权限;

对数据库实例使用安全套接字层(SSL)连接;使用RDS加密保护静态实例和快照的安全;使用安全组;使用数据库引擎的安全功能控制对数据库实例的访问

对Oracle数据库实例和Microsoft SQL Server实例使用网络加密和透明数据加密(TDE)

2)多可用区RDS部署(Multi-AZ)

实现数据库的高可用性和持久性

3)Amazon RDS最佳实践

监控CPU、Memory和Storage的使用情况

使用多可用区部署在不同可用区自动预置和维护同步备用实例

启用自动备份、学会手动快照

设置备份时间段,以在每天写入IOPS比较低的时间进行备份

提高数据库实例的I/O容

4)迁移到具有较高I/O容量的数据库实例雷

从标准存储转换为预置的IOPS存储,并使用已针对预置IOPS进行优化的数据库实例

使用预配置IOPS存储需预置额外的吞吐容量

5)若客户端应用程序正在缓存数据库实例的DNS数据,则将TTL设置为小于30秒的值

6)针对您的数据库实例对故障转移进行测试

 

Amazon Aurora 完全托管且与MySQL和PostgreSQL兼容的关系数据库引擎

  1. 最多可将MySQL吞吐量增加至5倍
  2. 最多可将PostgreSQL吞吐量增加至3倍
  3. 跨三个可用区以六种方法复制数据
  4. 只需对现有应程序进行非常少的更改

可一键添加只读(RO)副本

RDS 参数值的修改、子网组(主从备份)

ServerlessDB 无服务器数据库(Aurora Serverless)

数据库复制(可跨Region) 软复制、硬复制

3. Amazon DynamoDB

无数据量限制、无服务器计算

Amazon DynamoDB 是一项快速的NoSQL 数据库服务,它能让用户以简单且经济 有效地方式存储数据。它的吞吐量以及只有几毫秒的延迟让它成为适合游戏、 广告技术、移动以及很多其他应用程序的服务。DynamoDB 通过 API 和易于使用 的管理控制台交付无缝的吞吐量和存储扩展能力,让您能够根据自身需求轻松 地扩展或降低容量。许多AWS 客户只是按动几个按钮,便在几分钟内完成了 DynamoDB 的部署,然后便可以每年应付数万亿次的数据库请求。

DynamoDB 表没有固定的结构,每一个项目可以拥有不同数量的属性。您可以添 加二级索引以提升执行的查询的灵活性,而不会影响性能。具有与生俱来的性 能、可靠性和安全性,同时提供固态硬盘 (SSD) 存储和自动化三向复制。 DynamoDB 采用经过验证的加密方法,能安全地验证用户身份,防未经授权的数 据访问。

4. Amazon DynamoDB全局表

全局表是全部由单个AWS 账户拥有的一个或多个副本表的集合。副本表(简称 副本)作为全局表的一部分运行的单个DynamoDB 表。每个副本存储相同的一 组数据项。任何给定的全局表在每个区域只能有一个副本表,每个副本具有相 同的表名和相同的主键架构。

Amazon DynamoDB 全局表为部署多区域、多主机数据库提供了完全托管的解决 方案,而不必构建和维护您自己的复制解决方案。在创建全局表时,指定要在 其中提供表的AWS 区域。DynamoDB 执行所有必要的任务,以在这些区域中创 建相同的表并将后续的续数据更改传播到所有这些表。

5. Amazon DynamoDB最终一致性读取和强一致性读取

读取一致性表示的是某个数据项目的成功写入或更新会在何时、以何种方式反映在该数据项的后续读取操作中

Dynamo DB在一个Region下存三个副本

强:1s——4K——一个操作      终:1s——4K*2——一个操作

强一致性 丢失部分容错性、最终一致性 丢失部分容错性

最终一致性读取

当您DynamoDB 表读取数据时,响应反映的可能不是刚刚完成的写入操作的 结果。响应可能包含某些陈旧数据。如果您在短时间后重复读取请求,响应将 返回最新的数据。

强一致性读取

当您请求强一致性读取时,DynamoDB 会返回具有最新数据的响应,从而反映来 自所有已成功的之前写入操作的更新。如果网络延迟或中断,可能会无法执行强一致性读取。

除非您另行指定,否则DynamoDB 将使用最终一致性读取。读取操作(如 GetItem、Query 和 Scan)提供了一个 ConsistentRead 参数。如果您将此参数设 置为 true,DynamoDB 将在操作过程中使用强一致性读取。

 

用户读到老版本数据无影响可选择NoSQL

W(写) 以最后一个写操作为准

Partion-key分区键作为落盘依据,当一个盘不够时,进行拆盘操作

 

6. RDS安全控制

访问控制、静态加密、传输加密、事件通知

Dynamo DB安全控制

可定义的访问权限、静态加密、SSL/TLS

7. 对比Amazon RDS和Amazon DynamoDB

传统数据库架构支持复杂的查询,可以通过硬件纵向拓展SQL数据库。

 

选择关系数据库:   

  1. 遵守严格的schema规则与数据录入质量
  2. 需要ACID合规性
  3. 不需要极端的读/写容量

选择非关系数据库:   

  1. 可采用键值对,文档,图形中的一种来存储数据
  2. 每行拥有的属性可以不相同
  3. 可以水平拓展数据库
  4. 以经济划算的方式支持您的读取/写入速率

筛选数据库时首先要对自己的数据清晰明了,是否每个属性在每一行都需要。

是想要一次写入多次读取,还是多次写入多次读取。

例如:SQL数据库用行和列存储数据,必须确定列才能输入数据。如果要修改架构则需要数据库下线才能进行修改。

 

非关系数据库  分区键:简单主键、排序键作为第二个项目标识

分区键+排序键:复合主键

指定读取和写入所需的预置吞吐量,确保一致的低延迟性能

读取 Max 4kb/s 执行一次强一致性读取(或执行两次最终一致性读取)

写入 Max 1kb/s 执行一次写入操作

支持的操作:查询、扫描

查询:分区键和可选排序键、二级索引键

扫描:读取每个项目进行比对、二级索引键

扫描会消耗大量资源,选择合适时使用

 

RDS 基于PaaS平台,无法进行二次优化,RDS实例存在但无法看见

Dynamo DB 无服务器结构,适合应用程序,托管服务,可手动备份(按表备份)

 

8. Amazon DynamoDB Accelerator

Amazon DynamoDB Accelerator是为了提高服务器与DynamoDB之间的会话响应速度的产品,可以将原来的数毫秒降低为数微秒。

9. Amazon ElastiCache

Amazon ElastiCache 是一种Web 服务,可用于在云中部署、操作和扩展内存缓存。

ElastiCache 允许你从快速的托管型内存数据存储中检索信息,而不是依赖速度 较慢的基于磁盘型数据库,从而提高Web 应用程序的性能。只要有可能,应用 程序都将从 ElastiCache 中检索数据,如果缓存中找不到数据,再转向数据库。

六、AWS架构完善的框架  WAF设计

安全性、可靠性、成本优化、性能效率、卓越运维

安全性:身份机制、实现可追踪性、在所有层确保安全性、风险评估与缓解策略

可靠性:动态获取计算资源以满足需求;迅速从基础设施或服务故障中恢复;缓解中断(配置错误、暂时性网络问题)

成本优化:衡量效率、消除不必要的支出、考虑使用托管服务

卓越运维:能够运行和监控各种系统、持续改进支持流程和程序

性能效率:选择有效的资源并在需求变化时保持资源效率、普及先进技术、了解技术

1. Amazon EC2

首先它并非是AWS第一个服务,AWS虽然是公有云计算,但是计算服务并不是它第一个服务,其次EC2的一个实例可以类比成VM中一个虚拟机。

它提供了虚拟的计算资源(例如instance自带的存储,RAM,CPU,GPU...)

它可以进行水平的弹性伸缩资源以及垂直的弹性伸缩资源。   

水平伸缩资源:利用Auto Scanling(弹性)的方式增加/减少计算资源。

垂直伸缩资源:对单个实例进行性能上的升级或者下降。(需要关机进行,注意需要将重要数据放在安全的位置,不能放在Instance Storage)

一般来说最新类型实例都是性价比极强。不存在版本越老越便宜的说法,一般来说版本老旧的实例是为那些还在云中使用的客户服务。

而如果选择新开实例,最好使用较新版本的实例。除非有特殊要求,再去参考老旧类型实例。

一台EC2开机时间大概1.5分钟到3分钟之间,当设置启动EC2实例时,最好带着User Data(用户数据)进行启动,这样就会减少EC2实例开启后手动配置的步骤。

远程SSH一台EC2实例时需要验证密钥,如果是ppk结尾可以直接使用工具进行登录,如果是pem结尾,则需要先转为ppk结尾。或者使用SSH -i进行方式验证。

在启动时需要选定 AMI(映像)来决定它的OS。EC2的位置是在VPC中的子网内。

当EC2在公有子网内时,且在创建公有子网时勾选了默认分配公有IP的话,那么EC2会有公有DNS和一个公有IP地址。

如果当创建公有子网时没有勾选默认分配公有IP的话,你需要将一个弹性公有IP与其相连。否则这个实例将不具备公有子网内的特性(即与Internet访问)。

另外弹性公有IP默认是一个账户有五个免费的申请量。当不使用时,会计费。因为占有了AWS的资源,所以需要计费。 当使用时,不会产生费用。如果弹性公有IP数量觉得不足,可以提case,花额外的美金即可申请更多。

你可以使用EC2实例作为一个服务器。

在公有云中,安全组负责实例层的进出控制,相当于传统架构的防火墙一职。在实例内并没有防火墙,你使用命令是查不到相对应的命令的。

此外EC2可以附加EBS卷。EBS卷负责存储部分。EBS有几种类型。 

通用型 SSD (gp2)、预配置 IOPS SSD (io1)、吞吐优化 HDD (st1)Cold HDD (sc1) 

SSD适合用作根卷,另外通用型可保持良好性能和性价比。卷信息可以快照和还原到时间节点。所有类型EBS实例都支持加密。

[ec2-user ~]$ sudo rsync -avh --progress /mnt/source/ /mnt/destination/

可以作为复制命令

类型:

 

Amazon EC2实例是Amazon数据中心的一种虚拟化服务,旨在让开发人员轻松进行Web及计算。

不同的EC2实例类型针对不同的业务场景,在我们的实验环境使用最多的是t系列,t系列应对的是需要短时间突增性能要求的场景,t系列的实例实行的是cpu利用率积分制,及cpu在低于20%利用率多久时间加1分,当我们的实例处理需要高性能支持的事件时消耗积分,使cpu利用率到达100%,积分为0时cpu利用率自动下降到低于20%,直到下一个时间段增加积分。我们应该对应实际环境选择对应环境的EC2实例类型。

实例又可分为5种:按需实例按小时为启动的实例付费。预留实例以大幅折扣购买一年期到三年期的始终可用的实例。计划实例以一年为期限购买按指定重复计划始终可用的实例。Spot实例请求未使用的 EC2 实例,这可能会显著降低你的 Amazon EC2 成本。专用主机为完全专用于运行你的实例的物理主机付费,让你现有的按插槽、按内核或按 VM 计费的软件许可证降低成本。

当EC2实例处于运行状态中,通过停止操作EC2实例释放计算资源(公共IP、cpu、内存等),再次开启EC2实例时重新得到计算资源,EC2实例上的数据也会消失,我们可以把数据放在EBS中这样数据就不会消失。重启不释放计算资源并且实例存储的数据不会消失。终止释放全部包括EBS系统根卷。

使用EC2实例跟我们使用虚拟机一样,通过连接工具连接到一台具有公共IP地址的EC2实例,就能实现对这台EC2实例的管理。如果EC2实例没有公共IP地址则无法通过Internal直接连接到该EC2实例。

 

可用区:实际可用区在EC2实例中的Description中可以看见

解决需求:Web托管、数据库、身份验证、服务器可以做的任何事情

提供帮助:

可重复性:通过同一个AMI 启动的实例彼此完全相同。

可重复使用性:AMI 将 EC2 实例的整个配置和内容都打成了一个包,因此可以重复使用,还保证了效率和准确性。

可恢复性:AMI 非常适合用通过同一个AMI 创建的新实例来替换出故障的机器。

Marketplace:如果您想从特定供应商那里寻求一个软件解决方案,或许可以在 市场上找到一个AMI,您可以启动这个AMI,在EC2 实例上实施该解决方案。

备份:AMI 提供了备份完整 EC2 实例配置的理想方式,在发生故障时,您可以 用该备份来启动替代实例。

 

Meta-data   EC2称IAC

IAC:基础设施及代码服务

实例状态    Stop-Hit

EIP关联到EC2实例时会替换原有的Public IP

实例无Public IP时只有通过EIP获取Public IP

 

Hadoop三种类型节点

Cold HDD 低成本、不常访问   HDD 吞吐优化

 

EC2实例类型

M5.large   m是系列名称  5是世代号  large实例大小

M5.2xlarge = 2倍 M5.xlarge = 4 倍 M5.2xlarge

高性能Database运行在运存(内存)上, R实例类型适用

T2 实例是突发性能实例,能够提供基准水平的 CPU 性能,还能够突增至基准水 平以上。

 M5 实例是最新一代的通用型实例。这个系列在计算、内存和网络资源方面实现 了平衡,对很多应用程序来说都是不错的选择。

C5 实例针对计算密集型工作负载进行了优化,能够提供非常经济高效的高性能, 每个计算比率的价格也很低。

X1e 实例针对高性能数据库、内存数据库和其他内存密集型企业应用程序进行了优,X1e 实例提供的每 GiB RAM 的价格在Amazon EC2 实例类型中属于最低水平

R4 实例针对内存密集型应用程序进行了优化。

P3 实例专用于通用型GPU 计算应用程序。

F1 实例通过现场可编程门阵列 (FPGA) 提供可自定义的硬件加速

H1实例具备高达 16TB、基于HDD 的本地存储,实现高磁盘吞吐量以及计算和内存的平衡

I3:这个实例系列可以提供支持非易失性存储器快速 (NVMe) SSD 的实例存储, 它经过优化,具有低延迟、极高的随机 I/O 性能和高顺序读取吞吐量,还能以低 成本提供高 IOPS

D2实例具备高达 48TB、基于HDD 的本地存储,能够实现高磁盘吞吐量,还能 提供Amazon EC2 上最低的磁盘吞吐量性能单位价格

G3实例针对图形密集型应用程序进行了优化

 

实例选择:选择一个认为合适的最小实例类型 —— 启动后,CloudWatch观测 —— 选择是否修改实例类型    Stopped后再更换实例类型,数据不丢失

实例选择五个维度

专用主机:实例容量完全供您专用的物理 EC2 服务器

专用实例:在单一客户专用硬件上的VPC 中运行的Amazon EC2 实例

使用标签作为最佳实践:CloudTrial、AWS Config、Lambda 可通过标签进行跟踪实例

 

架构注意事项:

  1. Cluster Placement Groups 是单个可用区中的实例的逻辑分组。这种分组方式能够提供可能范围内的最低延迟和最高网络性能(每秒包数)
  2. 分布置放群组是一组有意放在不同底层硬件上的实例。这种分组方式可降低在 共享底层硬件的情况下,实例同时发生故障的风险

八、数据库迁移

1. AWS DMS

AWS DMS 支持在最广泛使用的数据库(Oracle、PostgreSQL、Microsoft SQL Server、Amazon Redshift、Amazon Aurora、MariaDB 和MySQL)之间进行迁移。 它还支持同构(相同引擎)和异构(不同引擎)迁移

可用于在Amazon EC2、Amazon RDS 和本地数据库之间进行迁移。

  • 这包括从Amazon EC2 或RDS 数据库迁移到本地
  • 目标或源数据库必须位于Amazon EC2 中(不能在两个本地数据库之间迁移)

它会自动处理源数据的格式,以供目标数据库使用

它不会执行架构或代码转换

  • 对于同构迁移,您可以使用本机工具执行这些转换
  • 对于异构迁移,则可使用AWS Schema Conversion Tool

 

迁移选项:一次性迁移、持续迁移

 

2.AWS Snowball Edge

数据库太大、连接太慢、隐私和安全问题,建议使用AWS Snowball Edge+AWS DMS

 

3.AWS Schema Conversion Tool

异构SQL迁移、数据仓库迁移、本地数据库迁至AWS或AWS云上数据库迁至本地

 

九、网络

 

VPC:全虚拟化软协议

VPC 在创建对等连接时应注意:

如果 VPC 有重叠的 IPv4 CIDR 块,或者账户 ID 和 VPC ID 不正确或彼此不对应,则 VPC 对等连接的状态将立即变成 failed。

在AWS云中预置专用、隔离的虚拟网络

注:绝大数AWS服务都不在所构建的VPC之内

VPC切分:有且只有一个维度(EC2实例能否直接被Internet访问)

1)判断Public Subnet

  1. Public ip
  2. Route 0.0.0.0/0  IGW
  3. IGW 唯一的联网出入口
  4. SG/NACL

2)判断Pravite Subnet

  1. NGW  Nat GW存在于Public Subnet
  2. Route 0.0.0.0/0  NGW(可不要)

 

VPC中的安全性

安全组、网络访问控制列表、密钥对

 

VPC不能跨Region   Subnet不能跨AZ

VPN连接      IPsec VPN

安全组 状态防火墙(保护实例)    NACL 无状态防火墙(保护子网)

VPN连接、DX

区分公、私子网,区分公、私路由

 

VPC不能跨Region,可跨AZ,支持全栈IPV6,不支持组播、广播

CIDR块:无类地址路由(无类别域间路由)

ip/16 ~ ip/28  ip地址不足,解决:vpc plus

placement group 发挥网络最大性能

单账户  多VPC模式;多账户  单VPC

每个账户5个VPC  可扩展

VPC内共251个子网

子网划分:例子

10.1.0.0/16 CIDR块   10.1.0.2  “DNS”

10.1.38.0/24  子网IP段

10.1.38.1  “HCP、GW”

10.1.38.2  “DNS-Block”

10.1.38.3  “Resever”保留

256-2-3=251

 

EC2+Lambda+Route53   可自定义本地域名解析

判断public subnet

  1. IGW 2. Public ip 3. Route 0.0.0.0/0 — IGW(Target) 4. Port:Allow

主路由表尽量为空,每个子网单独创建一个路由

NAT Gateway必须得有一个公有IP,NAT Gateway建立在public subnet基础上

同一VPC内,子网不隔离,由于本地路由

  目标位置          目标                D            T

公 10.0.0.0/16        local          私  10.0.0.0/16      local

0.0.0.0/0         IGW               0.0.0.0/16      NAT

NAT(0.0.0.0/0)分为:NAT Gateway、NAT Insance

NAT Gateway 10G宽带,AWS托管,每个AZ对应一个NAT Gateway

NAT Insance EC2网络限制,高可用麻烦

 

ENI 弹性网络接口

相当于EC2实例的另一张网卡

移动实例保留公私IP,Mac地址

一个实例最多有八个网络接口

 

EIP绑定EC2实例,重启EC2,EIP不变

EIP绑定NGW

 

ACL位于子网边界

执行规则 从1——100 , *最低,100其次

入站——ACL——SG ; SG——ACL——出站

VGW 虚拟专用网关 可以有多个  一个VGW两个endpint 两个IP地址高可用

CGW 客户端网关,通过客户端上传

 

VPC对等连接

连接两个VPC,使其内部子网可以通信

 

VPCE分为:Interface Endpoint、Gateway Endpoint(S3、DynamoDB)

 

如果把公有云比作一个几层楼的大房子的话,Region可以看成是一个楼层。

那你的VPC可以看成楼层里一个房间。

 

默认情况下,你的房间只会有一个门。这个门就是Internet网关。

如果你想与房间外的人进行联络,只能通过Internet网关的这个方式。

 

而S3,Dynamodb这种服务就像每个楼层的特殊区域。

默认在Region内的VPC都可以访问使用。但是如果你不进行特殊的方式,那必定要经过Internet网关。

这样是不安全的。所以我们可以采用特殊方式,在你的VPC房间内开一个特殊的门,可以直接连到你想要去的S3这样在Region内的服务,而不通过你与外界连通的门。也就是endpoint gateway。

 

每个VPC内又有公有子网和私有子网。

公有子网内的实例因为具有公有IP所以可以与外界进行互联。

私有子网内的实例需要通过nat的方式才可以互联。因为本身不具备公有IP。

 

实例的保护需要安全组。

而子网的保护需要ACL。ACL是单向,安全组是双向。

另外0 1 2 3 255(广播地址)的私有IP不可用。

所以可用地址则是2的(32(4B 4*8bit)-/后面的数字也就是从左数,32bit里出现了多少个连续的1)- 5 个地址

另外设置nat实例或是网关时需要考虑nat损坏时应该如何进行处理。必要情况下需要做冗余。实例并不推荐。

VPC与VPC对等连接时,一般情况是一个子网的路由条目上写明跳到对方子网的上必须要经过。

 

VPC对等连接时必须保证CIDR块不能重叠。否则不能进行VPC对等连接。

 

VPC peering connection 这个类似路由器的东西进行中转。且两个子网的路由条目都必须表明对方的子网CIDR块。否则只能单向。

 

另外需要审查所有的ACL和安全组规则。确保最小权限放行。

 

VPN连接则是在默认情况下,您在VPC中启动的实例无法与您自己的网络通信。

可以将虚拟私有网关(VGW)附加到VPC、创建自定义路由表,更新安全组规则并创建AWS托管的VPN连接,从而通过VPC启用对远程网络的访问。

 

一种情况可以使用硬件VPN连接,将VGW附加到想创建VPN连接的VPC上。

可以只使用一个VPN连接多个远程客户端。

 

DX   Direct Connect

 

通过云服务商和AWS提供的中转站来连接远程云服务商。

1.适合传输大型数据集

2.用于连接本地以及云数据库

3.降低网络传输成本(不走internet)

4.提升应用程序性能

 

DX还可以连接你的远程VPC上。

 

 

2.Amazon Route53

概念

是一个高可用和可扩展的DNS服务器,专门用来做域名解析的服务器(nameserver)

优势

当你使用AWS的其他service(EC2、ELB、S3)时契合度很高

可以使用基本的load balancing服务,方便一定程度的scale

用法

通常使用自己的域名分成两个步骤:

域名注册:购买了某一个域名

域名解析:用户在访问这个域名时,请求应该被发送到哪个ip地址的服务器

因此当你已经注册了一个自己的域名,此时这个域名必须有nameserver解析成正确的IP地址,此时你就可以购买Route53上的域名解析服务。

然后:

给你的域名配置Route53的nameserver的地址

直接在route53上为不同的子域注册不同的AWS service

 

DNSDomain Name System)介绍

概念

是一个分布式数据库,用于提供域名和IP地址之间的转换。

作用

通过DNS,用户访问某些地址的时候 ,可以直接使用便于记忆的、有意义的域名,而由网络中的DNS服务器将域名解析为正确的IP地址。

DNS服务器

用来将域名翻译成IP地址的服务器,因此当你想要访问任何域名的时候,必须知道DNS服务器的IP地址,否则请求就不会成功,常见的公网DNS服务器:Google的8.8.8.8

对于域名的服务一般由各地的ISP服务商提供2-4个Dns域名服务器,供本地的上网者使用

 

 

Route 53主要功能:域注册、DNS路由和运行状况检查。

Route 53基于简单轮询和权值轮询。可用做全局负载均衡。

可以配合主从数据库以及主备服务器进行迁移。

通过DNS 故障转移,Amazon Route 53 可以帮助检测网站中断,并将最终用户重 定向到应用程序正常运行的备用位置。启用此功能后,Amazon Route 53 运行状 况检查代理将监控应用程序的每个位置/终端节点,以确定其可用性。您可以利 用此功能来提高面向客户的应用程序的可用性。

 

 

十、弹性三剑客

Auto Scaling + ELB + CloudWatch

1. Amazon Elastic Load Balancing

ELB 分配应用程序的传入流量,无法实现UDP流量分布,需自己安装或使用相应AMI

ELB分为:Classic Load Balancer、Application Load Balancer、Network Load Balancer

使用ELB:AWS管理控制台、命令行界面、AWS开发工具包、查询API

Classic Load Balancer 工作原理

Application Load Balancer 工作原理

Network Load Balancer 工作原理

ELB可跨AZ,容错性、高可用性

在云中尽量使用同构,本地环境异构不可避免

支持的协议:HTTP、HTTPS(安全HTTP)、TCP、SSL(安全TCP)

侦听器:负责检查连接请求的程序

请求路由:

客户端在向负载均衡器发送请求之前,会先使用域名系统 (DNS) 服务器来解析该负载 均衡器的域名。由于您的实例位于amazonaws.com 域中,因此DNS 条目由Amazon 控制。Amazon DNS 服务器会向客户端返回一个或多个 IP 地址。这些地址是负载均衡 器节点的 IP 地址。由于传入您应用程序的流量会随时间不断变化,因此 Elastic Load Balancing 会扩展您的负载均衡器并更新DNS 条目。请注意,DNS 条目还将生存时间 (TTL) 指定为 60 秒,这样可以确保 IP 地址能够在流量变化时快速重新映射。

客户端使用DNS 轮询来确定使用哪个 IP 地址向负载均衡器发送请求。接收请求的负 载均衡器节点使用路由算法来选择运行正常的实例。它对 TCP 侦听器使用轮询路由算 法,对HTTP 和HTTPS 侦听器使用未完成请求最少路由算法(优先选择未完成请求最 少的实例)。

    跨可用区负载均衡设置还可以确定负载均衡器选择实例的方式。如果禁用了跨可用区 负载均衡,那么负载均衡器节点会从其所在的可用区中选择实例。如果启用了跨可用 区负载均衡,负载均衡器节点会从所有可用区中选择实例。负载均衡器节点会将客户 端请求路由到所选实例。

 

面向 Internet 的负载均衡器:面向 Internet 的负载均衡器通过 Internet 接受来自客户 端的请求,并在注册到负载均衡器中的 EC2 实例之间分配这些请求。

内部负载均衡器:内部负载均衡器会将流量路由到您在私有子网中的 EC2 实例。客户 端必须有权访问私有子网。

HTTPS 负载均衡器:您可以创建对加密连接使用 SSL/TLS 协议 (又称为 SSL 卸载) 的负 载均衡器。利用这一功能,您可以对负载均衡器和发起HTTPS 会话的客户端之间的流 量进行加密,也可以对负载均衡器和后端实例之间的连接进行加密。使用前务必检查引文的准确性。

 

ELB后端实例:

创建负载均衡器之后,您必须将 EC2 实例注册到该负载均衡器中。您可以从该负载均 衡器所在地区内的一个或多个可用区中选择 EC2 实例。Elastic Load Balancing 会定期对 注册的 EC2 实例进行运行状况检查,并在运行正常的注册 EC2 实例之间自动分配传入 请求 (分配到负载均衡器的DNS 名称)。 运行状况检查的实现方式是负载均衡器向 EC2 实例定期发送 ping 命令、发起连接尝 试或发送请求,以便检查 EC2 实例是否可用。负载均衡器会对所有注册实例执行运行 状况检查,无论其是否处于正常状态。负载均衡器仅会将请求路由到运行正常的实例。 如果负载均衡器确定实例运行不正常,就会停止向其路由请求。当该实例恢复正常后, 负载均衡器会继续向其路由请求。

安全组发挥防火墙的作用,用于控制传入和传出一个或多个实例的流量。在启动 EC2 实例时,您可以将一个或多个安全组与该实例相关联。您可以为每个安全组添加一项 或多项流量控制规则。您可以随时修改某个安全组的规则;新规则会自动应用于与该 安全组相关联的所有实例。您必须确保实例的安全组允许负载均衡器通过监听器端口 和运行状况检查端口与后端实例通信。在VPC 中,您的安全组和网络访问控制列表 (ACL) 必须允许流量进出这两个端口。 在您将子网挂载到负载均衡器时,Elastic Load Balancing 会在可用区中创建一个负载均 衡器节点。负载均衡器节点可以接受来自客户端的流量,并将请求转发到一个或多个 可用区中运行正常的注册实例。对于VPC 中的负载均衡器,我们建议您在每个可用区 (至少两个)挂载一个子网。这样可以提高负载均衡器的可用性。请注意,您可以随时修改挂载到负载均衡器的子网。 注册 EC2 实例表示将其添加到负载均衡器中。负载均衡器会持续监控其注册实例的运 行状况,并将请求路由到运行正常的已注册实例。如果对实例的需求增加,您可以将 更多实例注册到负载均衡器以满足需求。 取消注册 EC2 实例表示将其从负载均衡器中删除。实例取消注册后,负载均衡器会停 止向其路由请求。如果需求降低或者您需要对实例进行维护,您可以将实例从负载均 衡器中取消注册。取消注册的实例仍在运行,但不再接收来自负载均衡器的流量。您可以随时再次将其注册到负载均衡器。

2. Amazon CloudWatch

作用:监控其他AWS资源(查看图形和统计数据)、设置警报

CloudWatch不会监控实例的内存使用情况

CloudWatch是一个指标存储库,针对突发事件或计划事件

3. EC2 Auto Scaling

通过CloudWatch设置警报触发Auto Scaling 实现EC2实例的可伸缩性、高可用性和可靠性

概念:启动配置、Auto Scaling组、扩展计划、Auto Scaling生命周期、Auto Scaling限制

优势:提高容错能力、提高可用性、加强成本管理

动态扩展:

创建扩展策略,通过CloudWatch警报确定Auto Scaling组何时扩展、收缩;

使用警报来监控,自定指标

 

4. AWS Trusted Advisor

最佳实践和推荐引擎

五个维度:成本优化、安全性、容错能力、性能提升和服务限制

状态:红色   建议执行操作、黄色   建议开展调查、绿色  未发现问题

AWS Well-Architected tool 良好架构工具

 

存储技术:直接连接存储(DAS)、网络连接存储(NAS)系统、存储连接网络(SAN)架构

数据块级存储:这是指使用长度预先确定好的字节序列向磁盘写入或从其读取数据。

文件级存储:在文件级存储中,可以通过存储系统访问和管理文件和文件夹,但是不 能直接控制组成文件和文件夹的较小存储数据块。

4. CloudFront

Amazon CloudFront 是一个 Web 服务,它加快将静态和动态 Web 内容(如 .html、.css、.js 和图像文件)分发到用户的速度。CloudFront 通过全球数据中心网络传输内容,这些数据中心称为边缘站点。当用户请求您用 CloudFront 提供的内容时,用户被路由到提供最低延迟 (时间延迟) 的边缘站点,从而以尽可能最佳的性能传送内容。

CloudFront在region外,当用户第一次访问网站时会引入到网站的ip,但是这时边缘站点会缓存这个网站的信息,等二次访问时则不会再去访问这个网站的ip,直接访问离你最近的边缘站点。

CloudFront 通过 AWS 主干网络将每个用户请求传送到以最佳方式提供内容的边缘站点,从而加快分发内容的速度。通常,这是向查看器提供传输最快的 CloudFront 边缘服务器。使用 AWS 网络可大大降低用户的请求必须经由的网络数量,从而提高性能。用户遇到的延迟(加载文件的第一个字节所花的时间)更短,数据传输速率更高。——

还会获得更高的可靠性和可用性,因为您的文件(也称为对象)的副本现在存储(或缓存)在全球各地的多个边缘站点上。

在 CloudFront 边缘站点上将您的对象保留默认 24 小时持续时间

当修改网站后,想让用户立刻看到,而非原来的缓存时,有两种解决方式:1.删除原来的网站文件,重新命名一个文件。2.将存在边缘站点的缓存的TTL,让缓存尽快失效。3.还有一种不推荐使用(使对象失效)。

借助多值应答,如果要将流量近似随机地路由到多个资源(例如Web 服务器), 您可以为每个资源创建一个多值应答记录,并可选择将Amazon Route 53 运行状 况检查与每个记录相关联。举个例子,假设您管理着一项使用 12 个Web 服务 器的HTTP Web 服务,且每个Web 服务器都有自己的 IP 地址。没有一个Web 服 务器可以处理所有流量,但如果您创建了十几个多值应答记录,则Amazon Route 53 可响应具有最多八个正常记录的DNS 查询,从而能够响应每个DNS 查 询。Amazon Route 53 可为不同的DNS 解析程序提供不同的应答。如果解析程序 缓存响应后Web 服务器变得不可用,客户端软件可以尝试响应中的其他 IP 地址

 

Amazon CloudFront可与其他AWS产品集成

轻松向最终用户发放内容,实现低延迟、高数据传输、且无最低消费承诺

如何配置CloudFront以分发内容

CloudFront如何向用户分发内容

十一、自动化部署

1. CloudFormation

可以使用JSON或者YAML格式书写代码。

实质:键值对套键值对,包裹了无数层,类似python的字典,java的map

作为CloudFormation模板。

基础设施即代码(IaC)

AWS CloudFormation可以充当一个类似语言的编译器的角色

当你使用了你的代码,放入CloudFormation后,会生成一个堆栈,这个堆栈包含你想要运行的架构所有内容。

堆栈可以直接更新,在原有堆栈上,点击动作,选择更新堆栈,将你想要更新的地方进行更新。

所有服务的基础都是CloudFormation。

 

包含三个内容:

模板: .json、.yaml、.template 或 .txt四种文件类型

堆栈: 在您使用 AWS CloudFormation 时,可将相关资源作为一个称为“堆栈”的单元进行管理。您可通过创建、更新和删除堆栈来创建、更新和删除一组资源。堆栈中的所有资源均由堆栈的 AWS CloudFormation 模板定义。假设您创建了一个包括 Auto Scaling 组、Elastic Load Balancing 负载均衡器和 Amazon Relational Database Service (Amazon RDS) 数据库实例的模板。要创建这些资源,您可通过提交已创建的模板来创建堆栈,AWS CloudFormation 将会为您配置所有这些资源。

您可通过使用 AWS CloudFormation 控制台、API 或 AWS CLI来使用堆栈。

更改集: 如果您需要更改堆栈中运行的资源,则可更新堆栈。在更改资源之前,您可以生成汇总您要进行的更改的更改集。利用更改集,您可以在实施更改之前,了解更改可能会对运行的资源(特别是关键资源)造成的影响。

2. Elastic Beanstalk

AWS Elastic Beanstalk 的目标是帮助开发人员在云中部署和维护可扩展的Web 应用程序和服务,同时让他们无需担心底层基础设施。

使用AWS Elastic Beanstalk 时,你可以选择两种类型的环境。单实例环境允许你启动单个 EC2 实例,且不包含负载均衡或Auto Scaling。另一类环境可以启动多 个EC2 实例,且包含负载均衡和Auto Scaling 配置。

AWS Elastic Beanstalk 会针对我们的应用程序环境为我们提供一个唯一域名。

3. OpsWorks

AWS OpsWorks 是一种配置管理服务,可利用Chef配置和操作各种类型和规模的应用程序。

可以定义应用程序的框架和每个组件的规格,包括软件包安装、软件配和存储资源。

包括基于时间或负载的应用程序自动化扩展,以及根据环境扩展 情况编排更改的动态配置。

适用于 Puppet Enterprise 的AWS OpsWorks 提供了一个托管的 Puppet Enterprise 服务器和一套自动化工具,让你可以针对编排、自动预置和可追踪性可视化实现工作流程自动化。

可以使用AWS CloudFormation创建模版,再将模板通过AWS OpsWorks部署实现自动化管理。

十二、解耦架构

1. Amazon SQS

SQS Simple Queue Service

简单的队列服务,提供安全、持久且可用的托管队列。

标准队列 :无限吞吐量,至少传送一次,最大努力排序

先进先出队列:高吞吐量,仅传输一次处理,先进先出传递

创建者 (Component 1) 将 Message A 发送到一个队列,该消息在 Amazon SQS 服务器间冗余分布。

 使用者 (Component 2) 准备好处理消息时,就从队列使用消息,然后返回 Message A。在处理 Message A 期间,它仍保留在队列中,并且在可见性超时期间不返回至后续接收请求。

 使用者 (Component 2) 从队列中删除 Message A,以阻止该消息在可见性超时过期后被再次接收和处理。

 

消息的过期始终基于其原始排队时间戳。当邮件移动到死信队列时,排队时间戳保持不变。例如,如果消息在移动到死信队列之前在原始队列中花费了 1 天,并且死信队列的保留期设置为 4 天,则在 3 天后,邮件将从死信队列中删除。因此,最佳做法是始终将死信队列的保留期设置为长于原始队列的保留期。

Amazon Simple Queue Service (SQS) 是一项可靠、可扩展、完全托管的消息队列服务。Amazon SQS支持标准队列和 FIFO 队列,中国区目前仅支持标准队列。

 

Amazon SQS 的主要优势:

安全性 – 可以控制谁能向Amazon SQS队列发送消息以及谁能从队列接收消息。利用服务端加密 (SSE),可以通过使用在 AWS Key Management Service (AWS KMS) 中管理的密钥保护队列中消息的内容来传输敏感数据。

持久性 – 为确保消息的安全,Amazon SQS 将消息存储在多个服务器上。

可用性 – Amazon SQS 使用冗余基础设施来支持生成和消费消息的高并发访问和高可用。

可扩展性 – Amazon SQS 可独立处理各个缓冲的请求,并可透明扩展以处理任何负载增加或峰值,无需任何预配置指令。

可靠性 – Amazon SQS 在处理期间锁定消息,以便多个生成者可同时发送消息,多个消费者可同时接收消息。

自定义 – 队列不必完全相同,例如,您可以设置队列的默认延迟。可以使用 Amazon Simple Storage Service (Amazon S3) 或 Amazon DynamoDB 存储大于 256 KB 的消息内容,Amazon SQS 保留指向 Amazon S3 对象的指针,您也可以将一个大消息拆分为几个小消息。

死信队列 (DLQ) 指的是无法处理的消息队列。它会在处理尝试次数达到最大值后接收消息。可以设置尝试次数最大值为多少次。

可见性超时指的是某个应用程序组件从队列中获取消息后,该消息对应用程序的其余部分“不可见”的这个时间段。在可见性超时期间,接收消息的组件通常会先处理消息,然后将其从队列中删除。这可以防止多个组件处理同一消息。当应用程序需要更多时间进行处理时,可以修改“不可见”超时。

长轮询是一种从Amazon SQS 队列中检索消息的方法。短轮询会立刻返回默认值, 即使正在轮询的消息队列为空。但是,长轮询只有在消息进入消息队列或长轮询超时时才会返回响应。只要消息可用,长轮询就可以很方便地从Amazon SQS 队列中检索消息。

2. Amazon SNS

SNS Simple Notification Service

简单来说SNS是一个消息分发的服务。配合lambda这样处理事件的服务对用户进行邮件发送消息或者传递。

主要的模型为发布者和订阅者,也称为生产者和消费者。

一般来说一个主题可以同时发布给多用户,也就是一对多的模型。

如下图的样子:

图片为AWS官网文档内容,仅学习参考,不得用于商业。

单一的使用SNS的情况很少,一般在无服务架构中会时常出现,例如和S3,EC2,lambda来联合使用。

例如,当S3创建对象时触发lambda函数,lambda函数内编写发送消息到订阅者邮箱或者手机号中。

这样以便查看消息的分发和传送,使用户第一时间处理AWS上的服务与业务。

也可以使用lambda触发,将内容返回给lambda进行多次传递。

因为SNS是生产者与消费者模型。

 

十三、微服务与无服务

1. Amazon ECS

Amazon Elastic Container Service是一种高度可扩展的高性能容器管理服务,其支持Docker 容器,让你能够在托管的Amazon EC2 实例集群上轻松运行应用程序。

Amazon ECS 是一种可扩展的集群服务,用于托管容器,可以:扩展到数千个实例、监控容器的部署、管理集群的完整状态、使用内置的计划程序或第三方计划程序(例如 Apache Mesos、Blox)对容器进行计划

使用API 来扩展群集可以使用 Spot 实例和预留实例

 

2. AWS Fargate

AWS Fargate 是一种用于Amazon ECS 和Amazon Elastic Container Service for Kubernetes (Amazon EKS) 的工具,使我们无需管理服务器或集群就可以运行容器。借助AWS Fargate,我们无需再预置、配置和扩展虚拟机集群就可以运行容器。这样,我们就不需要选择服务器类型,不需要决定在什么时候扩展集群,也不需要优化群集包装。

AWS Fargate 使我们无需考虑服务器或集群,也无需与之交互。使我们能够专注于设计和构建你的应用程序,而不是管理运行应用程序的基础设施。

Lambda

AWS Lambda利用它无需预置或管理服务器即可运行代码。该服务在高度可用的计算基础设施上运行你的代码,并且执行计算资源的所有管理工作。

AWS Lambda被称作服务与服务之间的粘合剂,通过事件触发Lambda函数,一个Lambda函数的执行时间最多为15分钟。同时它也是一个“温状态”,就是需要使用Lambda是可以在极短时间内启动,;不需要时处于“休眠状态”此时不收取费用。

服务与服务之间的粘合剂,使用代码来响应组件中的事件,不跑代码的时候不会计费,一次任务最多只能运行15分钟。当15分钟之后,Lambda会停止。并且可重复被调用以及触发。

且Lambda是高度可用的组件。

 

接受类似json一类的数据,作为event字典,通过键进行定位与筛选。

首先引入boto3的包将你所需要的资源进行引入

引入格式为

s3=boto3.resource('s3') 

dynamodb=boto3.resource('dynamodb')

类似 s3的bucket可以如下的书写格式 

bucket=event['Records'][0]['s3']['bucket']['name']

接收的event在python里相当于字典。

使用多个键来查找你想要的桶或者key或者S3。

之后进行相应的编程即可。

可以写入数据库,或是触发另一个事件。

只要使用boto3调到合适的资源即可。

以及确定event后每个键所对应的内容。

剩下的就可以编程实现了。

 

 

AWS Lambda 资源限制
资源  默认限制
临时磁盘容量(“/tmp”空间) 512MB
文件描述符数 1024
过程和线程数(合并总数量) 1024
每个请求的最大执行时长 300 秒
Invoke 请求正文有效负载大小 (RequestResponse) 6MB
Invoke 请求正文有效负载大小 (Event) 128 K
Invoke 响应正文有效负载大小 (RequestResponse) 6MB

                                                     

每个区域的 AWS Lambda 账户限

 

资源    默认限制

并发执行数(请参阅Lambda 函数并行执行)    100

 

3. API Gateway

Amazon API Gateway 是一项 AWS 服务,能让您创建、发布、维护、监控和保护您自己的任何规模的 REST 和 WebSocketAPI。您可以创建可靠、安全且可扩展的 API,用以访问 AWS、其他 Web 服务以及存储在 AWS 云中的数据。您可以创建 API 以在您自己的客户端应用程序(应用)中使用。或者,您可以将您的 API 提供给第三方应用程序开发人员。

REST API更适合进行币币交易或者资产提现等操作。(一次)

WebSocket API更适合获取市场行情和买卖深度等信息。建立一次连接,后续服务器有任何变动,都会实时推送到当前客户端,适合高频交易。

创建成功后可以直接到页面使用API调用你的程序或者数据。

而API Gayway是管理这些功能的。

 

API Gateway让你创建API,用于充当应用程序“前门”。能够处理搞到十万个并发的API调用。API Gateway可以防止暴露终端节点、防护DDOS攻击和注入攻击。

Amazon API Gateway 具备下列优点:

支持有状态 (WebSocket) 和无状态 (REST) API

与 AWS 服务(如 AWS Lambda、Amazon Kinesis 和 Amazon DynamoDB)集成

能够使用 IAM 角色和策略、AWS Lambda 授权方或 Amazon Cognito 用户池来授权对你的 API 的访问

用于将 API 作为 SaaS 销售的使用计划和 API 密钥

用以安全地推出更改的金丝雀版本部署

API 使用情况和 API 更改的 CloudTrail 日志记录和监控

CloudWatch 访问日志记录和执行日志记录,包括设置警报的能力

能够使用 AWS CloudFormation 模板以支持创建 API

支持自定义域名

4. Step Function

AWS Step Functions 是一项 Web 服务,让你能够使用可视化工作流来协调分布式应用程序和微服务的组件。你可通过能执行离散函数(或称为任务)的各单独组件构建应用程序,这样你能够快速扩展和更改应用程序。

Step Functions 提供可靠的方法来协调组件和逐步执行应用程序的函数。

Step Functions 提供图形控制台,以一系列步骤展示应用程序的组件。它可以自动触发和跟踪各个步骤,并在出现错误时重试,因此你的应用程序每次都能够按照预期顺序执行。

Step Functions 记录每个步骤的状态,这样在出现错误时,你能够迅速诊断并调试问题。

Step Functions 是一种状态机,状态机是一种具有一定数量的操作条件的对象,根据前一个条件来确定输出。

Amazon States Language 是一种基于 JSON 的结构化语言,用于定义状态机,而 状态机是一组状态,可以执行工作(任务状态)、确定下一步进入哪个状态 (选择状态)以及在出错时停止执行(失败状态)等。

5. Storage Gateway

AWS Storage Gateway 可将本地软件设备与基于云的存储连接起来,在你的本地 IT 环境和AWS 的存储基础设施之间提供

无缝且高度安全的集成。使用此服务, 你可以将数据安全地存储在AWS 云中,以实现可扩展且经济高效的存储。

Storage Gateway 支持现有应用程序适用的行业标准存储协议,同时可确保将所 有加密数据安全地存储在Amazon S3 或Amazon Glacier 中。

借助AWS Storage Gateway,你可以在本地获得AWS 管理服务的扩展;该服务还可与Amazon CloudWatch、AWS CloudTrail、AWS KMS、AWS IAM 等集成。

AWS Storage Gateway 支持三种存储接口:文件、卷和磁带。你拥有的每个网关都可以提供一种接口类型

 

发布了83 篇原创文章 · 获赞 188 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_40791253/article/details/89500830
AWS
今日推荐