Blog này được viết bởi Rajesh Kesaraju, Sr. Solution Architect, EC2-Flexible Compute and Peter Manastyrny, Sr. Product Manager, EC2.
Hôm nay, AWS thêm hai thuộc tính mới cho tính năng lựa chọn loại instance dựa trên thuộc tính (ABS) để làm cho việc tạo và quản lý cấu hình linh hoạt của loại instance trên Amazon EC2 dễ dàng hơn. Thuộc tính băng thông mạng mới cho phép khách hàng yêu cầu các instance dựa trên yêu cầu mạng của tải công việc của họ. Thuộc tính loại instance được phép mới hữu ích cho tải công việc có tính linh hoạt về loại instance nhưng vẫn cần kiểm soát chi tiết hơn về các loại instance chạy trên đó.
Hai thuộc tính mới được hỗ trợ trong EC2 Auto Scaling Groups (ASG), EC2 Fleet, Spot Fleet, và Spot Placement Score.
Trước khi khám phá chi tiết về các thuộc tính mới, hãy xem lại khả năng ABS cốt lõi.
Tái cấu trúc ABS
ABS cho phép bạn biểu thị yêu cầu loại instance của bạn dưới dạng một tập các thuộc tính như vCPU, bộ nhớ và lưu trữ khi triển khai các instance EC2 với ASG, EC2 Fleet hoặc Spot Fleet. Yêu cầu của bạn được chuyển đổi bởi ABS thành tất cả các loại instance EC2 phù hợp, đơn giản hóa việc tạo ra và bảo trì các cấu hình linh hoạt cho loại instance. ABS xác định các loại instance dựa trên các thuộc tính mà bạn thiết lập trong cấu hình ASG, EC2 Fleet hoặc Spot Fleet. Khi Amazon EC2 phát hành các loại instance mới, ABS sẽ tự động xem xét chúng cho việc triển khai nếu chúng phù hợp với các thuộc tính được chọn, loại bỏ nhu cầu cập nhật cấu hình để bao gồm các loại instance mới.
ABS giúp bạn chuyển từ mô hình cơ sở hạ tầng đầu tiên sang mô hình ứng dụng đầu tiên. ABS lý tưởng cho các khối công việc cần tài nguyên tính toán thông thường và không nhất thiết yêu cầu phân biệt phần cứng mà danh mục loại instance Amazon EC2 cung cấp. Bằng cách xác định một tập hợp các thuộc tính tính toán thay vì các loại instance cụ thể, bạn cho phép ABS luôn xem xét tập hợp lớn nhất và mới nhất của các loại instance phù hợp với khối công việc của bạn. Khi sử dụng EC2 Spot Instances để tối ưu chi phí và tiết kiệm lên đến 90% so với giá On-Demand, việc đa dạng hóa loại instance là chìa khóa để truy cập mức lượng Spot capacity cao nhất. ABS cung cấp một cách dễ dàng để cấu hình và bảo trì các cấu hình linh hoạt cho loại instance để chạy các khối công việc chịu lỗi trên Spot Instances.
Chúng tôi đề xuất ABS như phương pháp cung cấp tính toán mặc định cho các khối công việc linh hoạt về loại instance bao gồm các ứng dụng đóng gói, microservices, ứng dụng web, dữ liệu lớn và CI/CD.
Bây giờ, hãy cùng tìm hiểu sâu hơn về hai thuộc tính mới: băng thông mạng và loại instance được cho phép.
Cách hoạt động của thuộc tính băng thông mạng cho ABS
Thuộc tính băng thông mạng cho phép khách hàng có các khối lượng công việc nhạy cảm với mạng để chỉ định yêu cầu băng thông mạng cho hạ tầng tính toán. Một số khối lượng công việc phụ thuộc vào băng thông mạng bao gồm phát trực tuyến video, các thiết bị mạng (ví dụ như tường lửa), và khối lượng công việc xử lý dữ liệu yêu cầu tốc độ truyền thông giữa các nút và xử lý khối lượng dữ liệu lớn.
Thuộc tính băng thông mạng sử dụng cùng định dạng min/max như các thuộc tính ABS khác (ví dụ như số vCPU hoặc bộ nhớ) mà giả định một giá trị hoặc phạm vi số (ví dụ min: ’10’ hoặc min: ’15’; max: ’40’). Lưu ý rằng việc đặt băng thông mạng tối thiểu không đảm bảo rằng phiên bản của bạn sẽ đạt được băng thông mạng đó. ABS sẽ xác định các loại phiên bản hỗ trợ băng thông tối thiểu được chỉ định, nhưng tốc độ băng thông thực tế của phiên bản của bạn có thể thấp hơn băng thông tối thiểu được chỉ định trong một số trường hợp.
Hai điều quan trọng cần nhớ khi sử dụng thuộc tính băng thông mạng là:
- ABS chỉ tính toán các giá trị băng thông tạm thời (burst bandwidth) khi đánh giá giá trị tối đa. Khi đánh giá giá trị tối thiểu, chỉ có băng thông cơ sở (baseline bandwidth) được xem xét.
- Ví dụ, nếu bạn chỉ định băng thông tối thiểu là 10 Gbps, các instance có băng thông tạm thời “lên tới 10 Gbps” sẽ không được xem xét, vì băng thông cơ sở của chúng thấp hơn giá trị yêu cầu tối thiểu (ví dụ như m5.4xlarge có thể tăng tốc lên đến 10 Gbps nhưng có băng thông cơ sở là 5 Gbps).
- Ngược lại, instance c5n.2xlarge, có thể tăng tốc lên đến 25 Gbps với băng thông cơ sở là 10 Gbps, sẽ được xem xét vì băng thông cơ sở của nó đáp ứng giá trị tối thiểu yêu cầu.
- Lời khuyên của chúng tôi là chỉ đặt giá trị cho băng thông mạng tối đa nếu bạn có yêu cầu cụ thể để hạn chế các instance có băng thông cao hơn. Điều này sẽ giúp đảm bảo ABS xem xét tất cả các loại instance có thể để lựa chọn.
Sử dụng thuộc tính Network bandwidth trong ASG
Trong ví dụ này, hãy xem xét một tải công việc tính toán hiệu năng cao (HPC) hoặc tải công việc nhạy cảm với băng thông mạng tương tự yêu cầu một lượng lớn giao tiếp giữa các nút. Chúng ta sử dụng ABS để chọn các instance có ít nhất 10 Gpbs băng thông mạng và ít nhất 32 vCPUs và 64 GiB bộ nhớ.
Để bắt đầu, bạn có thể tạo hoặc cập nhật một tập hợp ASG hoặc EC2 Fleet được thiết lập với cấu hình ABS và chỉ định thuộc tính băng thông mạng.
Ví dụ sau cho thấy một cấu hình ABS với thuộc tính băng thông mạng được đặt thành tối thiểu là 10 Gbps. Trong ví dụ này, chúng tôi không đặt giới hạn tối đa cho băng thông mạng. Điều này được thực hiện để linh hoạt và tránh hạn chế sự lựa chọn loại instance có sẵn mà đáp ứng yêu cầu băng thông mạng tối thiểu của chúng tôi.
Tạo tệp cấu hình sau và đặt tên: my_asg_network_bandwidth_configuration.json
JSON
{
“AutoScalingGroupName”: “network-bandwidth-based-instances-asg”,
“DesiredCapacityType”: “units”,
“MixedInstancesPolicy”: {
“LaunchTemplate”: {
“LaunchTemplateSpecification”: {
“LaunchTemplateName”: “LaunchTemplate-x86”,
“Version”: “$Latest”
},
“Overrides”: [
{
“InstanceRequirements”: {
“VCpuCount”: {“Min”: 32},
“MemoryMiB”: {“Min”: 65536},
“NetworkBandwidthGbps”: {“Min”: 10} }
}
]
},
“InstancesDistribution”: {
“OnDemandPercentageAboveBaseCapacity”: 30,
“SpotAllocationStrategy”: “capacity-optimized”
}
},
“MinSize”: 1,
“MaxSize”: 10,
“DesiredCapacity”:10,
“VPCZoneIdentifier”: “subnet-f76e208a, subnet-f76e208b, subnet-f76e208c”
}
Tiếp theo, chúng ta sẽ tạo một ASG bằng lệnh sau:
my_asg_network_bandwidth_configuration.json file
aws autoscaling create-auto-scaling-group –cli-input-json file://my_asg_network_bandwidth_configuration.json
Kết quả là bạn đã tạo thành công một ASG có thể bao gồm các loại instance m5.8xlarge, m5.12xlarge, m5.16xlarge, m5n.8xlarge và c5.9xlarge, cùng với các loại instance khác. Việc lựa chọn thực tế tại thời điểm yêu cầu được thực hiện bằng chiến lược phân bổ Spot tối ưu hóa khả năng cung cấp. Nếu EC2 phát hành một loại instance trong tương lai mà đáp ứng các thuộc tính được cung cấp trong yêu cầu, loại instance đó cũng sẽ được xem xét tự động cho việc cung cấp.
| Xét đến các Instance được xem xét (không phải là một danh sách đầy đủ) |
Instance Type Network Bandwidth m5.8xlarge “10 Gbps”m5.12xlarge “12 Gbps”m5.16xlarge “20 Gbps”m5n.8xlarge “25 Gbps”c5.9xlarge “10 Gbps”c5.12xlarge “12 Gbps”c5.18xlarge “25 Gbps”c5n.9xlarge “50 Gbps”c5n.18xlarge “100 Gbps”… |
Bây giờ hãy tập trung vào một thuộc tính mới khác – allowed instance types.
Cách hoạt động của thuộc tính allowed instance types trong ABS
Như đã thảo luận trước đó, ABS cho phép chúng ta cung cấp cơ sở hạ tầng tính toán dựa trên yêu cầu ứng dụng của chúng ta thay vì chọn các loại EC2 instance cụ thể. Mặc dù phương pháp không phụ thuộc vào cơ sở hạ tầng này phù hợp với nhiều khối công việc, tuy nhiên một số khối công việc, trong khi vẫn có tính linh hoạt về loại instance, vẫn cần giới hạn lựa chọn đến các gia đình instance cụ thể, và/hoặc các thế hệ instance vì các lý do như yêu cầu về giấy phép hoặc tuân thủ, kiểm định hiệu suất ứng dụng và các lý do khác. Hơn nữa, khách hàng đã yêu cầu chúng tôi cung cấp khả năng giới hạn sự tự động cân nhắc các loại instance mới được phát hành trong các cấu hình ABS của họ để đáp ứng yêu cầu cụ thể về chứng nhận phần cứng trước khi xem xét chúng cho khối công việc của mình. Để cung cấp chức năng này, chúng tôi đã thêm một thuộc tính mới là allowed instance types vào ABS.
Thuộc tính allowed instance types cho phép khách hàng ABS thu hẹp danh sách các loại instance mà ABS xem xét cho việc lựa chọn thành một danh sách cụ thể các loại instance, gia đình instance hoặc thế hệ instance. Nó lấy danh sách được phân tách bằng dấu phẩy của các loại instance cụ thể, gia đình instance và mẫu ký tự đại diện (*). Lưu ý, nó không sử dụng cú pháp biểu thức chính quy đầy đủ.
Ví dụ, hãy xem xét một ứng dụng web dựa trên container chỉ có thể chạy trên bất kỳ các loại instance thế hệ thứ 5 từ các gia đình tối ưu hóa tính toán (c), mục đích chung (m) hoặc tối ưu hóa bộ nhớ (r). Nó có thể được chỉ định như “AllowedInstanceTypes”: [“c5 *”, “m5 *”, “r5 *”].
Một ví dụ khác có thể là giới hạn lựa chọn ABS chỉ cho các instance được tối ưu hóa cho bộ nhớ cho các khối lượng công việc Spark dữ liệu lớn. Nó có thể được chỉ định như “AllowedInstanceTypes”: [“r6 *”, “r5 *”, “r4 *”].
Lưu ý rằng bạn không thể sử dụng cả thuộc tính loại instance loại trừ hiện có và thuộc tính loại instance được phép mới cùng với nhau, vì nó sẽ dẫn đến lỗi xác thực.
Sử dụng thuộc tính allowed instance types trong ASG
Hãy xem xét phần InstanceRequirements của một tệp cấu hình ASG cho một ứng dụng web mẫu. Thuộc tính AllowedInstanceTypes được cấu hình là [“c5.”, “m5.”,”c4.”, “m4.”] có nghĩa là ABS sẽ giới hạn tập hợp xem xét các loại instance đến bất kỳ instance nào từ thế hệ 4 và 5 của các gia đình c hoặc m. Các thuộc tính bổ sung được xác định với ít nhất 4 vCPU và 16 GiB RAM và cho phép cả bộ xử lý Intel và AMD.
Tạo tệp cấu hình sau và đặt tên là: my_asg_allow_instance_types_configuration.json
JSON
{
“AutoScalingGroupName”: “allow-instance-types-based-instances-asg”,
“DesiredCapacityType”: “units”,
“MixedInstancesPolicy”: {
“LaunchTemplate”: {
“LaunchTemplateSpecification”: {
“LaunchTemplateName”: “LaunchTemplate-x86”,
“Version”: “$Latest”
},
“Overrides”: [
{
“InstanceRequirements”: {
“VCpuCount”: {“Min”: 4},
“MemoryMiB”: {“Min”: 16384},
“CpuManufacturers”: [“intel”,”amd”],
“AllowedInstanceTypes”: [“c5.*”, “m5.*”,”c4.*”, “m4.*”] }
}
]
},
“InstancesDistribution”: {
“OnDemandPercentageAboveBaseCapacity”: 30,
“SpotAllocationStrategy”: “capacity-optimized”
}
},
“MinSize”: 1,
“MaxSize”: 10,
“DesiredCapacity”:10,
“VPCZoneIdentifier”: “subnet-f76e208a, subnet-f76e208b, subnet-f76e208c”
}
Kết quả là bạn đã tạo ra một ASG có thể bao gồm các loại instance như m5.xlarge, m5.2xlarge, c5.xlarge, và c5.2xlarge, và các loại instance khác. Việc chọn thực tế tại thời điểm yêu cầu được thực hiện bởi chiến lược phân bổ Spot tối ưu hóa khả năng chứa. Lưu ý rằng nếu EC2 trong tương lai phát hành một loại instance mới mà thỏa mãn các thuộc tính khác được cung cấp trong yêu cầu, nhưng không thuộc thế hệ thứ 4 hoặc thứ 5 của các gia đình m hoặc c được chỉ định trong thuộc tính allowed instance types, thì loại instance đó sẽ không được xem xét để cung cấp.
| Các Instance được chọn (không phải là một danh sách đầy đủ) |
| m5.xlargem5.2xlargem5.4xlarge…c5.xlargec5.2xlarge…m4.xlargem4.2xlargem4.4xlarge…c4.xlargec4.2xlarge… |
Như bạn có thể thấy, ABS xem xét một tập hợp rộng các loại instance để cung cấp, tuy nhiên tất cả đều đáp ứng các thuộc tính tính toán được yêu cầu cho tải công việc của bạn.
Dọn dẹp
Để xóa cả hai ASG và chấm dứt tất cả các instances, thực hiện các lệnh sau:
aws autoscaling delete-auto-scaling-group –auto-scaling-group-name network-bandwidth-based-instances-asg –force-delete
aws autoscaling delete-auto-scaling-group –auto-scaling-group-name allow-instance-types-based-instances-asg –force-delete
Kết luận
Trong bài viết này, chúng ta đã khám phá hai thuộc tính ABS mới – băng thông mạng và loại instances được phép. Khách hàng có thể sử dụng các thuộc tính này để chọn instances dựa trên băng thông mạng và giới hạn tập hợp các instances mà ABS lựa chọn. Hai thuộc tính mới, cùng với tập hợp các thuộc tính ABS hiện có, giúp bạn tiết kiệm thời gian trong việc tạo và duy trì các cấu hình linh hoạt về loại instance và làm cho việc biểu thị yêu cầu tính toán cho tải công việc của bạn dễ dàng hơn.
ABS đại diện cho sự chuyển đổi mô hình trong cách khách hàng tương tác với tính toán, khiến việc yêu cầu tài nguyên tính toán đa dạng trở nên dễ dàng hơn bao giờ hết. Chúng tôi khuyến nghị ABS như một công cụ giúp bạn xác định và truy cập số lượng lớn nhất khả năng tính toán EC2 cho các tải công việc linh hoạt về loại instance.