Bài đăng blog này được viết bởi Jagdeep Phoolkumar, Senior Specialist Solution Architect, Flexible Compute and Peter Manastyrny, Senior Product Manager Tech, EC2 Core.
Amazon EC2 Spot Instances là khả năng chưa sử dụng của Amazon Elastic Compute Cloud (Amazon EC2) trong AWS Cloud có sẵn với mức giảm giá lên đến 90% so với giá On-Demand. Một trong những thực tiễn tốt nhất để sử dụng EC2 Spot Instances là linh hoạt qua một loạt các loại instances để tăng khả năng nhận được khả năng tính toán tổng hợp. Amazon EC2 Auto Scaling và Amazon EC2 Fleet làm cho việc cấu hình yêu cầu với một bộ các loại instances linh hoạt cùng với sử dụng chiến lược phân bổ Spot để xác định cách thức đáp ứng khả năng Spot từ các nhóm Spot Instance bạn cung cấp trong yêu cầu của mình trở nên dễ dàng.
Các chiến lược phân bổ hiện có trong Amazon EC2 Auto Scaling và Amazon EC2 Fleet được gọi là “lowest-price” và “capacity-optimized”. Chiến lược phân bổ lowest-price phân bổ các nhóm Spot Instance nơi giá Spot hiện tại thấp nhất. Khách hàng cho biết trong một số trường hợp, chiến lược lowest-price chọn các nhóm Spot Instance không được tối ưu hóa cho khả năng khả dụng về dung lượng và dẫn đến việc gián đoạn Spot Instance thường xuyên hơn. Như một cải tiến hơn chiến lược phân bổ lowest-price, vào tháng 8 năm 2019, AWS đã ra mắt chiến lược phân bổ capacity-optimized cho Spot Instances, giúp khách hàng tiếp cận các nhóm Spot Instance sâu nhất bằng cách phân tích các chỉ số dung lượng. Kể từ đó, khách hàng đã thấy tỷ lệ gián đoạn Spot Instance đáng kể thấp hơn với chiến lược capacity-optimized so với chiến lược lowest-price. Bạn có thể đọc thêm về các câu chuyện khách hàng này trong bài đăng blog Capacity-Optimized Spot Instance Allocation in Action tại Mobileye và Skyscanner. Chiến lược phân bổ capacity-optimized chọn chặt chẽ các nhóm sâu nhất. Do đó, đôi khi nó có thể chọn các nhóm giá cao ngay cả khi có các nhóm giá thấp có dung lượng thấp hơn một chút. Khách hàng cho biết, để có trải nghiệm tối ưu, họ muốn một chiến lược phân bổ cân bằng tốt nhất giữa chiến lược lowest-price và capacity-optimized.
Hôm nay, chúng tôi rất vui mừng chia sẻ với các bạn chiến lược phân bổ mới “price-capacity-optimized allocation strategy” cho EC2 Spot Instances, giúp đưa ra quyết định phân bổ dựa trên cả giá và sức chứa của Spot Instances. Chiến lược phân bổ price-capacity-optimized nên được ưu tiên đầu tiên và là chiến lược phân bổ mặc định cho hầu hết các công việc Spot.
Bài đăng này sẽ minh họa cách chiến lược phân bổ price-capacity-optimized lựa chọn Spot Instances so với lowest-price và capacity-optimized. Ngoài ra, bài đăng cũng thảo luận về một số trường hợp sử dụng phổ biến của chiến lược phân bổ price-capacity-optimized.
Tổng quan
Chiến lược phân bổ tối ưu giá và khả năng chứa của Spot (price-capacity-optimized) đưa ra quyết định phân bổ dựa trên sự sẵn có của khả năng chứa và giá Spot. So với chiến lược phân bổ giá thấp nhất (lowest-price), chiến lược tối ưu giá và khả năng chứa không luôn cố gắng khởi động trên bể Spot Instance có giá thấp nhất tuyệt đối. Thay vào đó, chiến lược tối ưu giá và khả năng chứa cố gắng đa dạng hóa càng nhiều càng tốt trên nhiều bể giá thấp với khả năng chứa cao. Kết quả là, chiến lược tối ưu giá và khả năng chứa trong hầu hết các trường hợp có cơ hội cao hơn để có được khả năng chứa Spot và cung cấp tỷ lệ gián đoạn thấp hơn so với chiến lược giá thấp nhất. Nếu bạn tính toán chi phí liên quan đến việc thử lại các yêu cầu bị gián đoạn, thì chiến lược tối ưu giá và khả năng chứa trở nên hấp dẫn hơn từ quan điểm tiết kiệm chi phí so với chiến lược giá thấp nhất.
Chúng tôi khuyến nghị sử dụng chiến lược phân bổ tối ưu giá và khả năng chứa cho các công việc đòi hỏi tối ưu hóa tiết kiệm chi phí, khả năng cung cấp khả năng chứa Spot và tỷ lệ gián đoạn. Đối với các công việc hiện có sử dụng chiến lược giá thấp nhất, chúng tôi khuyến nghị sử dụng chiến lược tối ưu giá và khả năng chứa để thay thế. Chiến lược phân bổ tối ưu khả năng vẫn phù hợp với các công việc sử dụng các loại máy ảo có giá tương tự nhau hoặc các công việc mà chi phí gián đoạn quá đáng kể đến nỗi bất kỳ tiết kiệm chi phí nào cũng không đủ so với sự tăng lên đáng kể về gián đoạn.
Hướng dẫn chi tiết
Ở phần này, chúng tôi minh họa cách chiến lược phân bổ giá-công suất tối ưu triển khai dung lượng Spot so với hai chiến lược phân bổ khác. Cấu hình ví dụ sau đây cho thấy làm thế nào dung lượng Spot có thể được phân bổ trong một nhóm tự động co dãn sử dụng các chiến lược phân bổ khác nhau:
JSON
{
“AutoScalingGroupName”: “myasg “,
“MixedInstancesPolicy”: {
“LaunchTemplate”: {
“LaunchTemplateSpecification”: {
“LaunchTemplateId”: “lt-abcde12345”
},
“Overrides”: [
{
“InstanceRequirements”: {
“VCpuCount”: {
“Min”: 4,
“Max”: 4
},
“MemoryMiB”: {
“Min”: 0,
“Max”: 16384
},
“InstanceGenerations”: [
“current”
],
“BurstablePerformance”: “excluded”,
“AcceleratorCount”: {
“Max”: 0
}
}
}
]
},
“InstancesDistribution”: {
“OnDemandPercentageAboveBaseCapacity”: 0,
“SpotAllocationStrategy”: “spot-allocation-strategy”
}
},
“MinSize”: 10,
“MaxSize”: 100,
“DesiredCapacity”: 60,
“VPCZoneIdentifier”: “subnet-a12345a,subnet-b12345b,subnet-c12345c”
}
Trước tiên, Amazon EC2 Auto Scaling cố gắng cân bằng khả năng chứa đựng đồng đều trên các Khu vực Khả dụng (AZ). Tiếp theo, Amazon EC2 Auto Scaling áp dụng chiến lược phân bổ Spot bằng cách sử dụng hơn 30 phiên bản được chọn bằng cách dựa trên thuộc tính loại phiên bản, trong mỗi Khu vực Khả dụng. Các kết quả sau khi thử nghiệm các chiến lược phân bổ khác nhau như sau:
- Chiến lược tối ưu giá-trị-sức chứa (price-capacity-optimized) phân tán đa dạng trên nhiều nhóm Spot Instance giá rẻ nhưng tối ưu hóa sức chứa có sẵn.
- Chiến lược tối ưu sức chứa (capacity-optimize) xác định các nhóm Spot Instance chỉ tối ưu hóa cho sức chứa có sẵn.
- Chiến lược giá thấp nhất (lowest-price) mặc định phân bổ cho hai nhóm Spot Instance giá thấp nhất mà không tối ưu hóa sức chứa có sẵn.
Để tìm hiểu cách mỗi chiến lược phân bổ xử lý vấn đề tiết kiệm chi phí và sức chứa Spot, chúng ta so sánh “Chi phí của nhóm EC2 Auto Scaling” (số lượng phiên bản x giá Spot/giờ cho mỗi loại phiên bản) và “Tỷ lệ gián đoạn Spot” (số lượng phiên bản bị gián đoạn / số lượng phiên bản khởi chạy) cho mỗi chiến lược phân bổ. Chúng ta sử dụng các số ảo cho mục đích đăng bài viết này. Tuy nhiên, bạn có thể sử dụng Cloud Intelligence Dashboards để tìm hiểu Spot Saving thực tế và Amazon EC2 Spot interruption dashboard để đăng nhập gián đoạn Spot Instance. Kết quả ví dụ sau một khoảng thời gian 30 ngày như sau:
| Chiến lược phân bổ | Phân bổ Instance | Chi phí của Auto Scaling group | Tỷ lệ gián đoạn Spot |
| Chi phí-công suất-tối ưu hóa | 40 c6i.xlarge20 c5.xlarge | $4.80/hour | 3% |
| Tối ưu hóa | 60 c5.xlarge | $5.00/hour | 2% |
| Chi phí thấp nhất | 30 c5a.xlarge30 m5n.xlarge | $4.75/hour | 20% |
Theo bảng trên, với chiến lược phân bổ tối ưu giá và khả năng chứa của giá cả (price-capacity-optimized), chi phí của nhóm Auto Scaling chỉ cao hơn 5 cent (1%), trong khi tỷ lệ gián đoạn Spot thấp hơn sáu lần (3% so với 20%) so với chiến lược giá thấp nhất (lowest-price strategy). Tóm lại, từ bài tập này, bạn đã học được rằng chiến lược phân bổ tối ưu giá và khả năng chứa của giá cả (price-capacity-optimized) cung cấp trải nghiệm Spot tối ưu nhất, là tốt nhất của cả hai chiến lược phân bổ là giá thấp nhất và tối ưu khả năng chứa.
Các trường hợp sử dụng phổ biến của chiến lược phân bổ tối ưu giá và khả năng chứa của giá cả (price-capacity-optimized)
Trước đây, chúng tôi đã đề xuất rằng chiến lược phân bổ tối ưu giá và khả năng chứa của giá cả (price-capacity-optimized) được khuyến nghị cho hầu hết các khối lượng công việc Spot. Để làm rõ hơn, trong phần này chúng tôi sẽ khám phá một số khối lượng công việc phổ biến này.
Các khối công việc không lưu trạng thái và có khả năng chịu lỗi tốt
Các khối công việc không lưu trạng thái và có khả năng hoàn thành các yêu cầu đang diễn ra trong vòng hai phút sau khi nhận thông báo gián đoạn Spot, và các khối công việc có khả năng chịu lỗi tốt với chi phí thử lại thấp nhất là lựa chọn phù hợp nhất cho chiến lược phân bổ tối ưu giá – dung lượng. Loại này bao gồm các khối công việc như các ứng dụng container không lưu trạng thái, các dịch vụ micro, các ứng dụng web, các công việc dữ liệu và phân tích, và xử lý hàng loạt.
Các khối công việc có chi phí gián đoạn cao
Các khối công việc có chi phí gián đoạn cao kèm theo chi phí thử lại đắt đỏ nên triển khai checkpointing để giảm chi phí gián đoạn. Bằng cách sử dụng checkpointing, bạn có thể làm cho chiến lược phân bổ tối ưu giá – dung lượng là lựa chọn phù hợp cho các khối công việc này, vì nó phân bổ dung lượng từ các nhóm Spot Instance giá thấp cung cấp tỷ lệ gián đoạn Spot thấp. Loại này bao gồm các khối công việc như việc tích hợp liên tục dài, các khối công việc phân tích hình ảnh và đa phương tiện, học sâu và khối công việc tính toán hiệu năng cao.
Kết luận
Chúng tôi khuyến khích khách hàng sử dụng chiến lược phân bổ tối ưu giá – dung lượng là tùy chọn mặc định. Chiến lược phân bổ tối ưu giá – dung lượng giúp các nhóm Auto Scaling của Amazon EC2 và Amazon EC2 Fleet cung cấp dung lượng mục tiêu với trải nghiệm tối ưu. Cập nhật sang chiến lược phân bổ tối ưu giá – dung lượng cũng đơn giản như cập nhật một tham số duy nhất trong một nhóm Auto Scaling của Amazon EC2 và Amazon EC2 Fleet.
Để biết thêm thông tin về các chiến lược phân bổ cho các Spot Instances, hãy truy cập trang tài liệu chiến lược phân bổ Spot.