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,您可以自動執行實時服務器卷的增量復制、對其制定計划以及進行跟蹤,從而能夠更輕松地協調大規模服務器遷移。