Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat infrastruktur armada dengan grup Amazon EC2 Auto Scaling
Bagian ini menjelaskan cara membuat armada Amazon EC2 Auto Scaling.
Gunakan template CloudFormation YAML di bawah ini untuk membuat grup Amazon EC2 Auto Scaling (Auto Scaling), Amazon Virtual Private Cloud (Amazon VPC) dengan dua subnet, profil instance, dan peran akses instans. Sumber daya ini diperlukan untuk meluncurkan instance menggunakan Auto Scaling di subnet.
Sebaiknya Anda meninjau dan memperbarui daftar jenis instans agar sesuai dengan kebutuhan rendering Anda.
Untuk penjelasan lengkap tentang sumber daya dan parameter yang digunakan dalam template CloudFormation YAML, lihat referensi jenis sumber daya Dead line Cloud di Panduan AWS CloudFormation Pengguna.
Cara membuat armada Amazon EC2 Auto Scaling
-
Gunakan contoh berikut untuk membuat CloudFormation template yang mendefinisikan
AMIIdparameterFarmIDFleetID,, dan. Simpan template ke.YAMLfile di komputer lokal Anda.AWSTemplateFormatVersion: 2010-09-09 Description: Amazon Deadline Cloud customer-managed fleet Parameters: FarmId: Type: String Description: Farm ID FleetId: Type: String Description: Fleet ID AMIId: Type: String Description: AMI ID for launching workers Resources: deadlineVPC: Type: 'AWS::EC2::VPC' Properties: CidrBlock: 100.100.0.0/16 deadlineWorkerSecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: !Join - ' ' - - Security group created for Deadline Cloud workers in the fleet - !Ref FleetId GroupName: !Join - '' - - deadlineWorkerSecurityGroup- - !Ref FleetId SecurityGroupEgress: - CidrIp: 0.0.0.0/0 IpProtocol: '-1' SecurityGroupIngress: [] VpcId: !Ref deadlineVPC deadlineIGW: Type: 'AWS::EC2::InternetGateway' Properties: {} deadlineVPCGatewayAttachment: Type: 'AWS::EC2::VPCGatewayAttachment' Properties: VpcId: !Ref deadlineVPC InternetGatewayId: !Ref deadlineIGW deadlinePublicRouteTable: Type: 'AWS::EC2::RouteTable' Properties: VpcId: !Ref deadlineVPC deadlinePublicRoute: Type: 'AWS::EC2::Route' Properties: RouteTableId: !Ref deadlinePublicRouteTable DestinationCidrBlock: 0.0.0.0/0 GatewayId: !Ref deadlineIGW DependsOn: - deadlineIGW - deadlineVPCGatewayAttachment deadlinePublicSubnet0: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref deadlineVPC CidrBlock: 100.100.16.0/22 AvailabilityZone: !Join - '' - - !Ref 'AWS::Region' - a deadlineSubnetRouteTableAssociation0: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref deadlinePublicRouteTable SubnetId: !Ref deadlinePublicSubnet0 deadlinePublicSubnet1: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref deadlineVPC CidrBlock: 100.100.20.0/22 AvailabilityZone: !Join - '' - - !Ref 'AWS::Region' - c deadlineSubnetRouteTableAssociation1: Type: 'AWS::EC2::SubnetRouteTableAssociation' Properties: RouteTableId: !Ref deadlinePublicRouteTable SubnetId: !Ref deadlinePublicSubnet1 deadlineInstanceAccessAccessRole: Type: 'AWS::IAM::Role' Properties: RoleName: !Join - '-' - - deadline - InstanceAccess - !Ref FleetId AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: ec2.amazonaws.com Action: - 'sts:AssumeRole' Path: / ManagedPolicyArns: - 'arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy' - 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore' - 'arn:aws:iam::aws:policy/AWSDeadlineCloud-WorkerHost' deadlineInstanceProfile: Type: 'AWS::IAM::InstanceProfile' Properties: Path: / Roles: - !Ref deadlineInstanceAccessAccessRole deadlineLaunchTemplate: Type: 'AWS::EC2::LaunchTemplate' Properties: LaunchTemplateName: !Join - '' - - deadline-LT- - !Ref FleetId LaunchTemplateData: NetworkInterfaces: - DeviceIndex: 0 AssociatePublicIpAddress: true Groups: - !Ref deadlineWorkerSecurityGroup DeleteOnTermination: true ImageId: !Ref AMIId InstanceInitiatedShutdownBehavior: terminate IamInstanceProfile: Arn: !GetAtt - deadlineInstanceProfile - Arn MetadataOptions: HttpTokens: required HttpEndpoint: enabled deadlineAutoScalingGroup: Type: 'AWS::AutoScaling::AutoScalingGroup' Properties: AutoScalingGroupName: !Join - '' - - deadline-ASG-autoscalable- - !Ref FleetId MinSize: 0 MaxSize: 10 VPCZoneIdentifier: - !Ref deadlinePublicSubnet0 - !Ref deadlinePublicSubnet1 NewInstancesProtectedFromScaleIn: true MixedInstancesPolicy: InstancesDistribution: OnDemandBaseCapacity: 0 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized OnDemandAllocationStrategy: lowest-price LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateId: !Ref deadlineLaunchTemplate Version: !GetAtt - deadlineLaunchTemplate - LatestVersionNumber Overrides: - InstanceType: m5.large - InstanceType: m5d.large - InstanceType: m5a.large - InstanceType: m5ad.large - InstanceType: m5n.large - InstanceType: m5dn.large - InstanceType: m4.large - InstanceType: m3.large - InstanceType: r5.large - InstanceType: r5d.large - InstanceType: r5a.large - InstanceType: r5ad.large - InstanceType: r5n.large - InstanceType: r5dn.large - InstanceType: r4.large MetricsCollection: - Granularity: 1Minute Metrics: - GroupMinSize - GroupMaxSize - GroupDesiredCapacity - GroupInServiceInstances - GroupTotalInstances - GroupInServiceCapacity - GroupTotalCapacity -
Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. Gunakan CloudFormation konsol untuk membuat tumpukan menggunakan instruksi untuk mengunggah file template yang Anda buat. Untuk informasi selengkapnya, lihat Membuat tumpukan di CloudFormation konsol di Panduan AWS CloudFormation Pengguna.
catatan
-
Kredensi dari peran IAM yang dilampirkan ke instans Amazon EC2 pekerja Anda tersedia untuk semua proses yang berjalan pada pekerja tersebut, termasuk pekerjaan. Pekerja harus memiliki hak istimewa paling sedikit untuk beroperasi:
deadline:CreateWorkerdandeadline:AssumeFleetRoleForWorker. -
Agen pekerja memperoleh kredentif untuk peran antrian dan mengonfigurasinya untuk digunakan dengan menjalankan pekerjaan. Peran profil instans Amazon EC2 tidak boleh menyertakan izin yang diperlukan oleh pekerjaan Anda.
Skala otomatis armada Amazon EC2 Anda dengan fitur rekomendasi skala Deadline Cloud
Deadline Cloud menggunakan grup Amazon EC2 Auto Scaling (Auto Scaling) untuk menskalakan armada yang dikelola pelanggan (CMF) Amazon EC2 secara otomatis. Anda perlu mengonfigurasi mode armada serta menerapkan infrastruktur yang diperlukan di akun Anda untuk membuat armada Anda timbangan otomatis. Infrastruktur yang Anda gunakan akan berfungsi untuk semua armada, jadi Anda hanya perlu mengaturnya sekali.
Customer-managed armada mendukung dua mode penskalaan:
-
NO_SCALING— Armada diperlakukan sebagai kumpulan pekerja statis. Deadline Cloud tidak mengeluarkan rekomendasi penskalaan atau peristiwa ukuran armada untuk armada. Gunakan mode ini untuk armada lokal atau armada yang Anda skalakan secara manual. -
EVENT_BASED_AUTO_SCALING— Deadline Cloud memancarkan acara Amazon EventBridge (EventBridge) dengan rekomendasi ukuran armada setiap kali ukuran armada yang disarankan berubah. Layanan tidak langsung memulai atau menghentikan pekerja. Anda harus menerapkan infrastruktur (seperti fungsi AWS Lambda (Lambda)) untuk menggunakan peristiwa ini dan menyesuaikan kapasitas grup Penskalaan Otomatis Anda sesuai dengan itu.
Alur kerja dasarnya adalah: Anda mengonfigurasi mode armada Anda untuk skala otomatis, dan kemudian Deadline Cloud akan mengirimkan EventBridge acara untuk armada itu setiap kali ukuran armada yang direkomendasikan berubah (satu peristiwa berisi id armada, ukuran armada yang disarankan, dan metadata lainnya). Anda akan memiliki EventBridge aturan untuk memfilter peristiwa yang relevan dan memiliki Lambda untuk mengkonsumsinya. Lambda akan terintegrasi dengan Amazon EC2 Auto Scaling AutoScalingGroup untuk menskalakan armada Amazon EC2 secara otomatis.
Atur mode armada ke EVENT_BASED_AUTO_SCALING
Konfigurasikan mode armada Anda keEVENT_BASED_AUTO_SCALING. Anda dapat menggunakan konsol untuk melakukan ini, atau menggunakan AWS CLI untuk langsung memanggil CreateFleet atau UpdateFleet API. Setelah mode dikonfigurasi, Deadline Cloud mulai mengirim EventBridge acara setiap kali ukuran armada yang disarankan berubah.
-
Contoh
UpdateFleetperintah:aws deadline update-fleet \ --farm-idFARM_ID\ --fleet-idFLEET_ID \ --configuration file://configuration.json -
Contoh
CreateFleetperintah:aws deadline create-fleet \ --farm-idFARM_ID\ --display-name "Fleet name" \ --max-worker-count 10 \ --configuration file://configuration.json
Berikut ini adalah contoh yang configuration.json digunakan dalam perintah CLI di atas (--configuration file://configuration.json).
-
Untuk mengaktifkan Auto Scaling pada armada Anda, Anda harus mengatur mode ke
EVENT_BASED_AUTO_SCALING. -
Ini
workerCapabilitiesadalah nilai default yang ditetapkan ke CMF saat Anda membuatnya. Anda dapat mengubah nilai-nilai ini jika Anda perlu meningkatkan sumber daya yang tersedia untuk CMF Anda.
Setelah Anda mengonfigurasi mode armada, Deadline Cloud mulai memancarkan acara rekomendasi ukuran armada untuk armada tersebut.
{ "customerManaged": { "mode": "EVENT_BASED_AUTO_SCALING", "workerCapabilities": { "vCpuCount": { "min": 1, "max": 4 }, "memoryMiB": { "min": 1024, "max": 4096 }, "osFamily": "linux", "cpuArchitectureType": "x86_64" } } }
Terapkan tumpukan Penskalaan Otomatis menggunakan CloudFormation templat
Anda dapat mengatur EventBridge aturan untuk memfilter peristiwa, Lambda untuk menggunakan peristiwa dan mengontrol Penskalaan Otomatis, dan antrian SQS untuk menyimpan peristiwa yang belum diproses. Gunakan CloudFormation template berikut untuk menyebarkan semuanya dalam tumpukan. Setelah berhasil menyebarkan sumber daya, Anda dapat mengirimkan pekerjaan dan armada akan secara otomatis meningkatkan skala.
Resources: AutoScalingLambda: Type: 'AWS::Lambda::Function' Properties: Code: ZipFile: |- """ This lambda is configured to handle "Fleet Size Recommendation Change" messages. It will handle all such events, and requires that the ASG is named based on the fleet id. It will scale up/down the fleet based on the recommended fleet size in the message. Example EventBridge message: { "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "Fleet Size Recommendation Change", "source": "aws.deadline", "account": "111122223333", "time": "2017-12-22T18:43:48Z", "region": "us-west-1", "resources": [], "detail": { "farmId": "farm-12345678900000000000000000000000", "fleetId": "fleet-12345678900000000000000000000000", "oldFleetSize": 1, "newFleetSize": 5 } } """ import json import boto3 import logging logger = logging.getLogger() logger.setLevel(logging.INFO) auto_scaling_client = boto3.client("autoscaling") def lambda_handler(event, context): logger.info(event) event_detail = event["detail"] fleet_id = event_detail["fleetId"] desired_capacity = event_detail["newFleetSize"] asg_name = f"deadline-ASG-autoscalable-{fleet_id}" auto_scaling_client.set_desired_capacity( AutoScalingGroupName=asg_name, DesiredCapacity=desired_capacity, HonorCooldown=False, ) return { 'statusCode': 200, 'body': json.dumps(f'Successfully set desired_capacity for {asg_name} to {desired_capacity}') } Handler: index.lambda_handler Role: !GetAtt - AutoScalingLambdaServiceRole - Arn Runtime: python3.11 DependsOn: - AutoScalingLambdaServiceRoleDefaultPolicy - AutoScalingLambdaServiceRole AutoScalingEventRule: Type: 'AWS::Events::Rule' Properties: EventPattern: source: - aws.deadline detail-type: - Fleet Size Recommendation Change State: ENABLED Targets: - Arn: !GetAtt - AutoScalingLambda - Arn DeadLetterConfig: Arn: !GetAtt - UnprocessedAutoScalingEventQueue - Arn Id: Target0 RetryPolicy: MaximumRetryAttempts: 15 AutoScalingEventRuleTargetPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:InvokeFunction' FunctionName: !GetAtt - AutoScalingLambda - Arn Principal: events.amazonaws.com SourceArn: !GetAtt - AutoScalingEventRule - Arn AutoScalingLambdaServiceRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Statement: - Action: 'sts:AssumeRole' Effect: Allow Principal: Service: lambda.amazonaws.com Version: 2012-10-17 ManagedPolicyArns: - !Join - '' - - 'arn:' - !Ref 'AWS::Partition' - ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole' AutoScalingLambdaServiceRoleDefaultPolicy: Type: 'AWS::IAM::Policy' Properties: PolicyDocument: Statement: - Action: 'autoscaling:SetDesiredCapacity' Effect: Allow Resource: '*' Version: 2012-10-17 PolicyName: AutoScalingLambdaServiceRoleDefaultPolicy Roles: - !Ref AutoScalingLambdaServiceRole UnprocessedAutoScalingEventQueue: Type: 'AWS::SQS::Queue' Properties: QueueName: deadline-unprocessed-autoscaling-events UpdateReplacePolicy: Delete DeletionPolicy: Delete UnprocessedAutoScalingEventQueuePolicy: Type: 'AWS::SQS::QueuePolicy' Properties: PolicyDocument: Statement: - Action: 'sqs:SendMessage' Condition: ArnEquals: 'aws:SourceArn': !GetAtt - AutoScalingEventRule - Arn Effect: Allow Principal: Service: events.amazonaws.com Resource: !GetAtt - UnprocessedAutoScalingEventQueue - Arn Version: 2012-10-17 Queues: - !Ref UnprocessedAutoScalingEventQueue
Melakukan pemeriksaan kesehatan armada
Setelah membuat armada, Anda harus membuat pemeriksaan kesehatan khusus untuk memastikan armada Anda tetap sehat dan bebas dari instans yang macet untuk membantu mencegah biaya yang tidak perlu. Lihat Menyebarkan pemeriksaan