Cùng Sunny Cloud tìm hiểu Attribute-based instance là gì và Spot Instance Best Practices để tính tiền dễ dàng hơn.

Attribute-based instance tính là gì?

Thuộc tính của EC2 Instance được định nghĩa như sau:

Định nghĩa các thuộc tính của EC2 Instance

Loại instance được thể hiện một cách duy nhất thông qua sự kết hợp của instance family, thế hệ, thuộc tính và kích thước.

Trong ví dụ trên, “a” được hiểu là thuộc tính.

Spot Instance Best Practices

Đây là best practices khi sử dụng Spot Instance được giới thiệu trong Black Belt.

  1. Kết hợp nhiều loại instance khác nhau, xác định trước các loại instance (ví dụ: nếu m6i.large không đủ, vẫn có thể khởi chạy r6i.large hoặc c6i.large để giảm thiểu tác động lên dịch vụ).
  2. Sử dụng nhiều Availability Zone: xác định nhiều Availability Zone để tăng Spot Pool có thể sử dụng.
  3. Chuẩn bị cho việc gián đoạn của Spot Instance.

Nếu có dấu hiệu gián đoạn, gửi “thông báo Rebalance” sớm hơn 2 phút.

  1. Sử dụng nhóm Auto Scaling hoặc tính năng Fleet.

Nhóm Auto Scaling (ASG) sẽ tự động duy trì số lượng EC2 Instance để chuẩn bị cho sự gián đoạn.

  1. Sử dụng chiến lược phân bổ “price-capacity-optimized”.

Khởi chạy Spot Instance dựa trên sự kết hợp giữa tính sẵn sàng khởi chạy và giá Spot, ưu tiên khởi chạy những instance có giá thấp.

  1. Sử dụng Capacity Rebalancing.

Thêm sẵn Spot Instance để duy trì dung lượng trong trường hợp gián đoạn Spot Instance trong nhóm Auto Scaling hoặc Fleet.

Ưu điểm của bản cập nhật

Khi loại instance thế hệ mới nhất được phát hành, bạn có thể tự động sử dụng chúng. Do vậy, ta có thể sử dụng nhiều loại EC2 hơn trên toàn bộ các loại instance.

Hơn nữa, khi sử dụng tính năng Price Protection của ASG, bạn có thể xác định giới hạn giá theo loại instance dựa trên thuộc tính khi chọn loại instance cho ASG.

Do giá của Spot Instance thay đổi theo thời gian, nên bản cập nhật này giúp bạn tận dụng các tính năng Price Protection Spot Instance để tiết kiệm chi phí hơn.

Price Protection là gì

Price Protection là ngăn không cho giá giữa các loại instance trong nhóm Auto Scaling có sự chênh lệch quá lớn.

Khi sử dụng Price Protection, bạn có thể chỉ định giá tối đa mà bạn sẵn lòng trả cho các EC2 Instance được khởi chạy bởi nhóm Auto Scaling. Price Protection ngăn không cho nhóm Auto Scaling sử dụng các loại instance có giá quá cao, ngay cả khi chúng phù hợp với các thuộc tính đã chỉ định.

Price Protection được kích hoạt mặc định, và có các ngưỡng giá riêng biệt được thiết lập cho cả instance theo yêu cầu (on-demand) và Spot Instance.

Khi bạn tạo ASG mới hoặc cập nhật ASG hiện có bằng cách chọn loại hình instance dựa trên thuộc tính, Price Protection sẽ được kích hoạt mặc định.

Baseline được xác định dựa trên giá của loại instance thế hệ hiện tại có chi phí thấp nhất với các thuộc tính đã chỉ định từ nhóm M, C, R. Nếu không có loại instance nào từ nhóm M, C, R phù hợp với các thuộc tính đã chỉ định, loại instance có giá thấp nhất sẽ được sử dụng.

Nếu không chỉ định ngưỡng, các ngưỡng bảo vệ giá mặc định sau sẽ được áp dụng:

  • On-demand instance : 20%
  • Spot Instance: 100%

Thử nghiệm

  1. Tạo nhóm Auto Scaling.
IMG_256
  1. Nhập tên nhóm Auto Scaling và chọn một launch template đã được tạo trước đó.
IMG_256
  1. Trong màn hình “phân bố chiến lược”, chọn “Tối ưu hóa giá-dung lượng”.
IMG_256

(4) Bỏ qua cài đặt chi tiết tiếp theo và tiến hành tạo.

Dưới đây là ví dụ cài đặt qua CLI.

Để thiết lập giá trị dung lượng cần thiết dưới dạng số lượng vCPU hoặc dung lượng bộ nhớ, hãy chỉ định trong file “DesiredCapacityType”: “vcpu” hoặc “DesiredCapacityType”: “memory-mib”.

{
"AutoScalingGroupName": "my-asg",
"DesiredCapacityType": "units",
"MixedInstancesPolicy": {
"LaunchTemplate": {
"LaunchTemplateSpecification": {
"LaunchTemplateName": "my-launch-template",
"Version": "$Default"
},
"Overrides": [{
"InstanceRequirements": {
"VCpuCount": {"Min": 4, "Max": 8},
"MemoryMiB": {"Min": 16384},
"CpuManufacturers": ["intel"]
}
}]
},
"InstancesDistribution": {
"OnDemandPercentageAboveBaseCapacity": 50,
"SpotAllocationStrategy": "price-capacity-optimized"
}
},
"MinSize": 0,
"MaxSize": 100,
"DesiredCapacity": 4,
"DesiredCapacityType": "units",
"VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782"
}

Tham khảo: https://www.sunnycloud.jp/column/20240130-01/