Amaon EC2 Spot Fleet Design Patterns and Best Practice 筆記
2 月 7 日 參加 Amaon EC2 Spot Fleet Design Patterns and Best Practice
由 AWS User Group 台北小小聚主辦的活動
是我第一次踏入 AWS 的社群聚會。平常沒什麼機會直接接觸 AWS 服務使用,最近在看文件的時候也不是這麼有感覺
於是今天來聽 @Pahud Hsieh 分享關於 AWS EC2 Spot 的相關知識
以下紀錄我於議程中記錄到的筆記,把一些基本知識做清楚的理解,以及補充一些講者提到的最佳實踐筆記。
Fundamentals
Spot is legit.
同樣的 Workload 比別人便宜 90%,而不是全部都用 On-demand
-
On-demand
: 要機器的時候點或用 SDK 開,隨需的主機 -
Reserved
: 運行一段時間後,Reserved Instance (RI) 可以跟 AWS Sales 買,什麼都不用做結帳的時候會自動幫你打折- Pay by month
- 可以互換 Family 或者跨 Region
-
Spot
: 閒置的資源用競標的方式讓大家取得,有市場價格。簡言之用標價得到 On-demand 的機器
以前是出的價格不等同於實際要付的費用,會以當時市場機制當作付費的金額
現在是不用出價,被踢走不會反應在價格上,價格跟供需不是直接相關
被踢走可以選擇把 EBS Volume 保留,等 Spot 回來之後可以重啟(但 Reboot 會 Memory lost,重要資料要定期備份到 S3)
拿的 Instance 的時候最好拿跨 AZ、跨家族避免同一個 Spot pool 裡面都被拿光你就 GG 了
- AZ
- Instance Size
- Instance Family
這樣可以讓你的 Spot instance 保有 Flexibility …
- Instance flexible
- Time flexible
- Region flexible
可以選擇更便宜的 region
不同訂價可能取決於當地環境,像東京用電較貴所以費用較高
New Feature
-
Spot Fleet: Support tag propagation.
-
Encrypt EBS volumes at launch. (可以保證從 memory 回到 EBS 的過程也是加密的)
- Spot Fleet load balancer integration
如果是 TCP 應用用 NLB,如果是 HTTP 應用用 ALB
-
Spot Fleet support capacity zero. (現在可以改成 0 了 XD)
-
Spot Fleet support
Target tracking
. (可以設定平均的 CPU rate 的標準,自動調整 instance)- Target tracking 現在被用在很多服務中, e.g. DynamoDB
-
Spot Fleet support T2 Instances.
-
Spot interruption to CloudWatch Events
- 以前當 Spot 要被收回的時候,要趕快上 Spot Clean up 自己的資料
- 現在可以自動送到 CloudWatch (事件中心) 通知
- What can you do with that?
- SSM run commands (Clean up 的 script)
- Lambda (用 Lambda 來調度,5 mins 限制)
- Step Functions (當機器要關機時,觸發某個 Step Function ‘‘workload’’)
- ECS Tasks. (自包的 Container,執行一次性工作讓 ecs 幫你帶起來)
-
Spot Region availability
New Pricing Model
- Predictable price
- 預設出 On-demand 價格,但機器還是有可能會被收走,只是你不見得會付到 On-demand 的錢
- Default 是 On-demand 的價格,但還是可以自己出價
以前只能 Terminate
現在可以選擇要 Stop 還是要 Hibernate (目前只能由 Spot fleet 決定什麼時候觸發)
Stop/Start
Spot fleet with maintain option: 如果 Spot 被收回了,打開這個 Option 他會在下一次有資源時幫你 on 回來
- Use case
- Workloads needing lengthy provisioning (e.g. software setup, networking)
- Stateful applications that persist date to durable storage for user across session.
- 開發測試、工作機都很適合
Hibernate/Resume
- 把 Memory 的資料自動寫回 EBS Volumes
- EBS size must greater than Memory size.
- Use case
- Long running task that keep state in memory
Best Practices and Design Pattern.
EC2 spot with ECS
現在可以在 ECS console就可以開 Spot,其中 allocation 策略還可以選
- Diversified(盡可能分散組合)
- Lowest price. (雞蛋有可能放在同一個籃子裡)
實作
- 建議用 Diversified 得來做最小化 Distribution
- Lowest allocation 可以給 dev/testing/staging 環境使用
- Create CloudFormation template 用你的模板就可以讓別人起跟你一樣的環境 (Infra as code)
- Spot Fleet with ALB integration. (主機長起來自動往 Load balancer 註冊)
- Set size to 0 for cost saving (假日下班關機)
- Design your Spot Fleet auto scaling policies. (某些 Alarm 出現的時候,想要怎麼長機器)
- 考慮 hybrid(Spot Fleet + On-demand/RI) for production. (註冊到同一個 ECS groupd)
- Container Draining with cloudWatch Events
- ECS 有 Draining API, 可以讓你的主機通知要關機前,先讓 ELB 不會再把 connection 送進來,讓舊的做完再結束 instance