REL 7: 如何設計工作負載以適應需求變更?
可擴展工作負載提供自動新增或移除資源的彈性,以便隨時盡可能符合目前需求。
資源
AWS Auto Scaling: How Scaling Plans Work
What Is Amazon EC2 Auto Scaling?
Managing Throughput Capacity Automatically with DynamoDB Auto Scaling
What is Amazon CloudFront?
Distributed Load Testing on AWS: simulate thousands of connected users
Telling Stories About Little's Law
AWS Marketplace: products that can be used with auto scaling
APN Partner: partners that can help you create automated compute solutions
最佳實務:
-
取得或擴展資源時使用自動化: 替換受損的資源或擴展工作負載時,請使用 Amazon S3 和 AWS Auto Scaling 等受管的 AWS 服務進行自動化程序。您還可以使用第三方工具和 AWS 開發套件來自動調整規模。
-
在偵測到工作負載受損時取得資源: 在可用性受到影響時視需要主動擴展資源,以還原工作負載可用性。
-
偵測到工作負載需要更多資源時取得資源: 主動擴展資源以滿足需求並避免可用性影響。
-
對工作負載執行負載測試: 採用負載測試方法來衡量擴展活動是否滿足工作負載要求。
改進方案
取得或擴展資源時使用自動化
What is AWS Auto Scaling?
- 在 Amazon EC2 執行個體和 Spot Fleets、Amazon ECS 任務、Amazon DynamoDB 表和索引、Amazon Aurora 複本和
AWS Marketplace 設備上設定 Auto Scaling (如適用)。
Managing throughput capacity automatically with DynamoDB Auto Scaling- 使用服務 API 操作來指定警示、擴展原則、準備時間和冷卻時間。
What is Elastic Load Balancing?
- Application Load Balancer 可以按路徑分配負載。
What is an Application Load Balancer?- 設定 Application Load Balancer,以根據網域名稱下的路徑將流量分配到不同的工作負載。
- Application Load Balancer 可用於以與 AWS Auto Scaling 整合的方式分配負載,以管理需求。
Using a load balancer with an Auto Scaling group
- Network Load Balancer 可以透過連線分配負載。
What is a Network Load Balancer?- 設定 Network Load Balancer,以使用 TCP 將流量分配到不同的工作負載,或為您的工作負載分配固定的 IP 地址集。
- Network Load Balancer 可用於以與 AWS Auto Scaling 整合的方式分配負載,以管理需求。
- 使用 Amazon Route 53 或受信任的 DNS 供應商
What is Amazon Route 53? - 使用 Route 53 來管理您的 CloudFront 分發和負載平衡器。
- 確定要管理的網域和子網域。
- 使用 ALIAS 或 CNAME 紀錄建立適當的紀錄集。
Working with records
- AWS Global Accelerator 是一種可改善具備當地或全球使用的應用程式可用性和效能的服務。它提供靜態 IP 地址,做為單一或多個 AWS 區域 (例如
Application Load Balancer、Network Load Balancers 或 Amazon EC2 執行個體) 應用程式端點的固定進入點。
What Is AWS Global Accelerator?
What is Amazon CloudFront?
- 為您的工作負載設定 Amazon CloudFront 分發,或使用第三方 CDN。
- 您可以限制對工作負載的存取,使其只能透過在端點安全群組或存取政策中使用 CloudFront 的 IP 範圍從 CloudFront 存取。
在偵測到工作負載受損時取得資源
- 使用擴展計畫,也就是 AWS Auto Scaling 的核心元件。您可以在其中設定一組指示來擴展資源。如果您使用 AWS CloudFormation 或將標籤新增至
AWS 資源,則可以針對每個應用程式的不同資源集設定擴展計畫。AWS Auto Scaling 為針對每個資源自訂擴展的策略提供建議。建立擴展計畫之後,AWS Auto
Scaling 會將動態擴展和預測擴展方法結合在一起,以支援您的擴展策略。
AWS Auto Scaling: How Scaling Plans Work - Amazon EC2 Auto Scaling 可協助您確保您擁有正確的 Amazon EC2 執行個體數量來處理應用程式的負載。您可以建立稱為 Auto Scaling
群組的 EC2 執行個體集合。您可以在每個 Auto Scaling 群組中指定執行個體的最小數量,而 Amazon EC2 Auto Scaling 可確保您的群組大小永遠不會低於此值。您可以在每個
Auto Scaling 群組中指定執行個體的最大數量,而 Amazon EC2 Auto Scaling 可確保您的群組大小永遠不會超過此值。
What Is Amazon EC2 Auto Scaling? - Amazon DynamoDB Auto Scaling 使用 AWS Application Auto Scaling 服務代替您動態調整佈建的輸送容量,以回應實際的流量模式。這可讓資料表或全域次要索引增加其佈建的讀取與寫入容量,以在不需調節的情況下處理突然增加的流量。
Managing Throughput Capacity Automatically with DynamoDB Auto Scaling
偵測到工作負載需要更多資源時取得資源
- 計算處理指定請求率所需的運算資源 (運算並行)
Telling Stories About Little's Law - 當您有使用的歷史模式時,請設定 Amazon EC2 Auto Scaling 的排程擴展
Scheduled Scaling for Amazon EC2 Auto Scaling - 使用 AWS 預測擴展
Predictive Scaling for EC2, Powered by Machine Learning
對工作負載執行負載測試
Distributed Load Testing on AWS: simulate thousands of connected users
- 識別請求混合: 您可能會有不同的請求混合,因此您應該在識別流量混合時查看各種時間範圍。
- 實作載入驅動程式: 您可以使用自訂程式碼、開放原始碼或商業軟體實作載入驅動程式。
- 最初使用小容量的負載測試: 您將負載驅動到較小容量 (可能和單一執行個體或容器一樣小),看到一些立即的影響。
- 針對較大容量的負載測試: 在分散式負載上的效果會有所不同,因此您必須盡可能在接近產品環境的條件下進行測試。