AWS 数据传输加速(八)
AWS CloudFront
概述
- 一个CDN服务,加快网页和其它下载全球分布式网络缓存服务器
- CloudFront通过全球性的边缘站点将内容缓存到世界各地实现CDN
- 在更邻近的位置提供更低的延迟,更好的用户体验和更小的基础设施压力
- 在架构中的多个层采用缓存,可以降低成本和延迟,并提高应用程序性能
- 使用缓存可以尽可能的减少冗余数据检索操作
- CloudFront不仅可以支持S3,EC2,ELB等AWS服务,
- 可以与外部非AWS服务器无缝集成
- 利用Cloudfront可以降低成本,因为第一个请求后就无需再为S3传输该文件而付费,且S3到Cloudfront 的传输是免费的
- 峰值限制 10Gbps 或 15000 RPS , 可以申请扩展
- 最多能支持20GB的单个文件传输
- 利用Cloudfront 缓存和和加速技术,可以支持所有的内容加速,包括
- 静态 - TTL较长的图像,js, html 等
- 视频 - rtmp 和 http流
- 动态 - 自定义项和无法缓存的内容
- 用户输出 - http操作,包括Put/Post
- 安全
- 虽然支持Http 和 Https访问,但是建议制定仅通过SSL(https)安全的提供内容
- Cloudfront不提供数据持久性,对象没有请求超时后会自动删除
- Cloudfront要求所有对其进行的管理和控制的API请求都需要经过身份验证,且仅能使用SSL端点访问
- CloudFront 支持与AWS平台的集成
- 与AWS资源集成,包括DNS、视频转码、存储、计算、负载均衡、Marketplace等
- 提高其他资源的扩展性
- 减轻EC2和S3的负载
- 支持自定义来源
- 与S3和ELB集成使用可以获得额外折扣
特性
- 针对网络路径实现TCP/IP优化
- 保持活动连接以缩短往返时间
- SSL/TLS 终端邻近受众
- POST/PUT 上传优化
- 基于延迟的路由
- 支持RTMP(Flash)和 HTTP传输
- 直播和VOD流处理
- 自适应比特率流处理
- HTTP/HTTPS 文件传输
- 私有内容
- 通过编程方式使内容失效
- 符合行业标准的详细访问日志
- 通过API实现完全控制
- 来源选择
- 典型应用场景: 静态网站、视频和富媒体、在线游戏、互动机构、软件下载,软件或大型文件分发,用户广泛分布的业务
配置CloudFront
- 边缘站点 (Edge Location)
- 用于内容缓存的地方
- 来源 Origin
- 分支指向的来源地址
- CloudFront 分配
- 在设置CloudFront时就需要创建分配
- DNS会指向该CloudFront分配,而分配会指向内容来源,实际就是用分发域名替代原域名,其余文件路径保持不变
- 支持通过DNS 的 CNAME 创建DNS别名
- Web分配
- 访问web内容,最多支持10个S3存储桶或自定义来源
- RTMP分配
- 媒体流,RTMP 始终来源于S3存储桶
- Cloudfront 还支持静态内容负载分流
- 如果使用Cloudfront缓存动态内容时,它仍然可以通过缓存S3上的静态内容实现分流,从而提高性能
- 静态资产需要存放在S3上,为静态资产创建绝对URL引用,针对一次写入多次读取优化
- CloudFront两种分配方式
- 方式一: 通过单独别名记录和缓存静态内容,动态内容直接从源读取,最高效但是需要额外的设置和管理
- 方式二:使用URL暂存动态内容,所有的内容都会经过边缘站点,最易管理
- 缓存控制
- 一旦资源被CloudFront被请求并提供服务,资源就会保留在缓存中,直到过期或者被删除
- CloudFront使用缓存控制标头来确定在来源中检查文件更新版本的频率
- 为文件设置缓存控制标头可以识别静态或动态的内容(默认未设置)
- Amazon CloudFront 支持分发用 HTTP cookie 自定义或个性化的动态内容。
- 使用单个CloudFront分配来传输所有内容有助于整个网站的性能优化
- 可以通过设置缓存控制标头来设置文件在边缘站点的有效期
- 缓存标头设置TTL时间来标记缓存过期,默认为24小时
- 通过延长缓存超期时间可以有效提高持续访问数据的性能
- 刷新缓存内容
- 最佳实践
- 使用版本标识符 v1v2v3 来作为文件路径的一部分,旧版本刻在TTL到期后自动删除
- CloudFront向来源发送GET请求会使用If-Modified-Since标头,让来源在内容没有更改的情况下发出提示,表明可以继续使用该缓存
- 更改对象名称
- 比较复杂的解决方案,更改对象名称后会强制刷新CloudFront
- 如果使用相同名称更新,则要等到下一次GET才能刷新到边缘站点
- 手动使对象失效
- 虽然可以手工调用API删除缓存文件,但是正常情况不建议这么做
- 系统必须与所有边缘站点强制交互
- 是效率非常低,成本非常高的最后的解决方案
- 无效对象请求
- 利用每个分配最多可以一次处理3000个对象的无效请求,以及一个对象最对能够处理3000个请求
- 通过发送无效对象请求使得额外的请求失效
- 仅在意外情况下使用
- 最佳实践
高级功能
- 利用Geo Restriction 进行国家/地区列表访问策略执行
- 支持返回4xx 5xx等各种错误信息,以及支持自定义错误信息
- 动态内容、多种来源、缓存行为策略
- 缓存行为
- 缓存内容指定哪些请求由哪个来源提供服务
- 缓存行为可以基于以下条件判断
- 基本路径模式
- 将请求转发到哪个源
- 是否将查询字符串转发至某个源
- 访问指定文件是否需要签名URL
- 是否需要HTTPS访问
- 文件保留在CloudFront缓存的时间量
- 每个请求需要逐条匹配条件,最后一条需要匹配*
- 缓存行为
- 整个网站缓存
- 利用缓存行为和多个来源提供整个网站服务,并支持不同客户端设备的不同行为
- 私人内容缓存
- CloudFront只服务于限定的请求者,可以利用多个机制识别
- 已签名的URL - 仅在特定时间段有效的URL,指定特定的URL
- 签名Cookie - 使用公钥和私钥验证
- 源访问标识OAI - 利用S3访问限制绑定AWS CloudFront用户,确保所有的S3访问必须通过CloudFront
- 支持基于地理位置的限制
- CloudFront只服务于限定的请求者,可以利用多个机制识别
- 流式处理
- 通常情况下,流式处理指的通过 Internet 向最终用户分发音频和视频,而无需在播放前下载媒体文件。
- 流式处理让查看者能够更多地控制观看体验。
- 流式处理让您能够更好地控制内容,因为在查看者看完视频之后,其客户端或本地驱动器上不会留存任何文件。
- 流式处理能够帮助您降低成本,因为它只分发查看者实际观看的那部分媒体文件。
- Amazon CloudFront 支持视频点播 (VOD) 流式处理协议
- Amazon CloudFront 支持将实时流传输到多个平台
安全特性
- 保护数据安全
- CloudFront 自定义SSL支持,可以让用户自定义域名和证书
- SNI 自定义SSL
- 默认开启无需额外付费,允许多个域通过同一个IP地址提供SSL流量,老浏览器可能不支持
- 服务器名称指示 (SNI) 是安全传输层 (TLS) 协议的延伸。该机制识别相关 SSL 请求相关的域(服务器名称)以便在 SSL 握手时使用适当的证书。这允许单个 IP 地址用于多个服务器。
- 专用IP自定义SSL
- CloudFront分配专用IP地址在边缘站点提供SSL内容,可以支持所有浏览器,需要单独申请。
- 使用备用的HTTPS域名
- 需要特殊的权限申请,将两个及以上的自定义SSL证书与CloudFront分配相关联,且仅当多个分配且需要轮换证书时,才会临时使用第二个证书。
- 创建CloudFront分配时,必须使用同一个AWS账户上传IAM证书,必须以/cloudfront/开头,以路径/结尾
- 高级SSL功能支持
- 高安全性密码,
- 在SSL过程中,CloudFront和客户端自动商定一个密码,该密码可以和Elliptic Curve签名和密钥交换等功能结合,提高HTTPS的安全性
- 完美前向保密
- 通过唯一的随机会话密钥进一步防范对加密数据的窃听
- 字段级加密
- 字段级加密是 CloudFront 的一项功能,使您可以安全地将用户提交的数据(如信用卡号)上传到您的来源服务器。使用此功能,您可以在将 PUT/POST 请求转发到您的源之前,使用特定于字段的加密密钥(由您提供)对 HTTPS 表单中的敏感数据进行进一步加密。这可确保敏感数据只能被应用程序堆栈中的某些组件或服务解密和查看
- OCSP Stapling
- 通过迁移在线证书状态协议(OCSP)检查来减少每次SSL/TLS 握手花费的时间,利用OCSP Stapling 功能,客户端无需再次处理证书验证,从而提高性能
- 会话票证
- CloudFront会加密SSL会话信息并将其存储到一个票证中,客户端每次通过票证恢复安全连接,而不是重复SSL握手过程,从而减少重启SSL/TLS会话花费的时间
- PCI/HIPPA 合规性满足
- 需要手工启用CloudFront log
- 同时还需要捕获发送到CloudFront的API请求
- 可回溯过去一年
- 将内容设置为私有
- 限制对S3中的对象访问
- 要求用户使用签名URL
- 为可信签署人创建CloudFront密钥对
- 编写可生成签名URL的代码
- 也可以通过使用Cookies实现
- 将可信签署人添加到分配中,则必须使用签名才能访问内容
- 签名URL能够帮助访问内容提供更多的控制,如到期日期时间等,
- 通过标准策略限制对单个对象访问
- 通过自定义策略进行模式匹配访问,限制对一个或多个对象访问
- 使用OAI(来源访问标识)限制访问
- 利用Cloudfront的OAI来代表用户从S3中读取对象
- 拒绝直接通过S3 URL访问对象
- 用IAM控制对CloudFront资源的API访问
- 在IAM中,可以指定CloudFront提供任何及所有API操作
AWS Elastic Cache
概述
- 一项完全托管的分布式内存缓存环境的web服务
- 支持Memcached 或者 Redis 协议的缓存引擎
- ElastiCache 支持缓存故障自动检测和恢复的高可用架构
- 本身是高速缓存
- 可用于存储会话缓存
- 可用于Pub/Sub Model 消息缓存
- 可用于有序集合 (Sorted Set)
- 典型拓扑 - 旁路缓存架构
- 数据访问模式
- 从内存中检索会始终比从数据库中检索快
- 缓存请求数量最大的项目,而不缓存不被经常请求的项目
- 节点和集群
- T2适用于偶尔爆发的小规模应用,M3是能够适应大多数场景,R3是特别对内存密集型工作进行了优化的
- 设计时应更多的使用多个较小容量节点而不是几个较大容量节点来避免缓存节点故障的影响
- 缩放
- 支持水平和垂直缩放
- 水平缩放可以轻松扩展节点
- 垂直缩放不能直接调整缓存大小,但是可以创建新的更大的集群然后直接将流量重定向
- 访问控制
- 利用IAM安全组实现对ElastiCache的入站流量控制
- 当部署在VPC内部时,只能发布私有地址,永远不能被互联网或者VPC外的主机访问
- 子网ACL可以更精细的控制网络访问
Memcached引擎
- 通过简单接口在内存中读取和写入数据(key/value)
- Memcached支持API调用
- 支持弹性扩展Memcached集群
- 可以对集群进行分片支持并行操作
- 将数据视为blob块使用unique key进行检索
- 不支持数据加密
- 自动发现
- 对于跨节点分区的Memcached群集,支持使用在各个客户端实现自动发现
- 无需在应用程序设计时考虑集群架构细节。
- 缩放
- Memcached 支持对数据进行分区扩展到最大20个节点(或更多)
- 利用自动发现实现对集群节点的添加和删除
- 复制和恢复
- Memcached集群初始化始终为空
- Memcached是独立内存服务,不支持复制,不支持快照,没有任何冗余保护服务
Redis引擎
- 主要功能与Memcached类似
- 特性
- 支持对数据根据热度排序,并充当高速消息代理
- 利用发布和订阅消息抽象使得应用和消息组件分离从而提升灵活性
- 支持静态和传输中加密,3.2.10不支持
- 复制和多可用区
- Redis始终是单节点,但是可以将多群集组成一个复制组
- 所有复制组有只有一个节点处理写入,但是可以有5个副本处理读取请求
- 支持五个只读副本来分流读取请求,并支持在故障时成为新的主节点
- 支持多可用区复制组,提供更高的可用性
- 集群之间的复制是异步的,所有数据可以前存在一个小的时延
- 备份和恢复
- 支持将内存数据保存到磁盘,可以备份数据快照然后从备份中恢复
- 快照会影响缓存性能,最佳实践是对一个只读副本执行快照而不是对主节点快照
- Redis 集群可以从备份中初始化
- Redis快照文件会被存在S3中
- 支持自动快照或者手动快照,自动快照可以设置保留时间,手动快照必须手工删除
安全性
- 通过设置缓存安全组来控制对缓存集群的访问
- 默认关闭所有的网络访问,任何允许都需要显式声明,
- 需要明确指定允许访问EC2主机或EC2安全组
- 暂不支持对IP地址的支持
AWS Storage Gateway
概述
- 用于关联企业内部IT与AWS存储服务的集成软件
- 在本地缓存频繁访问的数据、同时在S3或者Glacier中加密存储所有数据来提供低延迟性能
- Storage Gateway 是一个安装在数据中心的VM,它向AWS控制台注册,并且关联内部的iSCSI设备
- Storage Gateway也可以作为一个硬件提供,安装在R640服务器上
- 使用SSL进行传输,采用SSE-S3 服务器端AES 256 对称加密在S3中存储数据
- 仅发送更新数据以减少Internet负载
- 可以与Direct Connection 配合使用
- 按照存储、请求和数据传输进行计费
文件网关 (File Gateway)
- 通过 NFS 连接直接访问存储在 Amazon S3的数据 ,并且本地进行缓存。
- 数据在S3上可以被直接访问。
- 需要通过S3生命周期策略将文件移动到 Amazon Glacier上,但应用程序如果尝试访问Glacier上的数据会报通用IO错误,只能通过S3 Console 访问
- 已配置好的 S3 存储桶将可以作为网络文件系统 (NFS) 挂载点或服务器消息块 (SMB) 共享文件使用。您的应用程序通过 NFS 或 SMB 对文件及目录执行读写操作,从而作为文件服务器与网关交互。
- 网关会将这类文件操作转换为针对 S3 存储桶的对象请求。您最近使用的数据会缓存在网关上以实现低延迟访问,并且您的数据中心和 AWS 之间的数据传输由网关完全托管并优化
- 通过文件网关写入是先将数据存储到本地然后再异步写入S3,对于一个存储桶,不建议有多个网关写入
- 要跨账户访问文件可以采用共享文件方式,每个存储桶共享文件不限,但每个网关最多10个共享文件
- 单个文件最大5TB(也是S3的限制),文件网关总量为8EB (S3虽然本身没有上限)
- 不支持去重和压缩
- 卷网关 (Volume Gateway)
- 利用iSCSI挂载卷,数据预先压缩
- 虽然数据被存储在S3中,但是不能用其他方式访问,仅仅能通过Storage Gateway 访问
- 支持SSE-S3数据加密存储和 SSL加密传输
- 支持对网关卷进行EBS快照,快照恢复为AWS Storage Gateway 或者 EBS 卷
- 快照计划可以是每1、2、4、8、 12 和 24小时
- 网关缓存卷 (Gateway-Cache)
- 将本地容量扩展到S3,所有存储在网关缓存卷的数据都被转移到S3,热数据会驻留在本地存储中提供低延迟访问
- 每个卷最大容量32TB,但每个网关最大支持32个卷,即最大容量是1PB
- 采取时间点快照进行增量备份
- 网关存储卷 (Gateway-Stored)
- 利用iSCSI挂载卷,数据预先压缩
- 数据存储都存储在本地,并异步备份到S3,可以提供低延迟访问所有数据,将S3作为持久性异地备份
- 单卷最大支持16TB,每网关32个卷,即512TB
- 数据使用EBS快照进行增量备份存储在S3中,可以从Gateway-Stored备份创建EBS卷进行恢复
网关虚拟带库(Gateway-VLT)
- 将数据归档到AWS,用Glacier替代现有磁带库。
- 支持数据压缩
- 可以支持的磁带容量为 100G/200G/400G/800G/1.5TB/2.5TB
- 单个网关最多包含1500个虚拟磁带,总计容量最大 1PB,可部署多个磁带网关进行扩容
- VLT使用虚拟磁带托架VTS在Glacier中进行管理,每个区域最多配置1个VTS,多个网关可以共享一个VTS
AWS 数据导入导出
概述
- 主要应对大量数据在本地和云端传送的挑战
- 利用物理存储设备物理运输数据并复制到目标
Snowball
- PB级数据导入导出服务
- 支持导入导出到S3
- Snowball受KMS保护
- 支持50TB和80TB两种尺寸
- AWS提供所有硬件及其运输
- 用户利用Snowball控制台管理任务
- Snowball Edge
- 支持 100 TB 的存储容量
- 能编写 Lambda 函数并在创建 Snowball Edge 设备任务的时候将其与 S3 存储桶关联起来
- Snowball Mobile
- AWS Snowmobile 是一种用于将海量数据移动到 AWS 中的 EB 级数据传输服务。
AWS Import/Export Disk
- 用户自己提供存储设备,利用AWS内部的高速网络进行传输
- 加密可选
- 支持导入导出S3, 支持从 Glacier 和 EBS导出
- 最大支持16TB
VM Import/Export
- 可以让您轻松将虚拟机映像从现有环境导入到 Amazon EC2 实例中,然后再将导出回本地环境。
- 此产品允许您将用于满足 IT 安全、配置管理和合规要求的虚拟机纳入 Amazon EC2 中作为随时可用的实例,从而充分利用其中的现有投资。您还可以将导入的实例导出回本地虚拟化基础设施,从而部署跨 IT 基础设施的工作负载。
AWS Database Migration Service
- AWS Database Migration Service 可帮助您快速并安全地将数据库迁移至 AWS。
- 源数据库在迁移过程中可继续正常运行,从而最大程度地减少依赖该数据库的应用程序的停机时间。
- WS Database Migration Service 可以在广泛使用的开源商业数据库之间迁移您的数据。
AWS Server Migration Service (SMS)
- AWS Server Migration Service (SMS) 是一种无代理服务,可以让您更加轻松快速地将成千上万的本地工作负载迁移到 AWS。
- 借助 AWS SMS,您可以自动执行实时服务器卷的增量复制、对其制定计划以及进行跟踪,从而能够更轻松地协调大规模服务器迁移。