Erstellen einer EC2-Flotte - Amazon Elastic Compute Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen einer EC2-Flotte

Um eine EC2-Flotte zu erstellen, definieren Sie die Flottenkonfiguration in einer JSON-Datei und verweisen Sie mit dem Befehl create-fleet auf die Datei. In der JSON-Datei müssen Sie die Gesamtzielkapazität für die Flotte angeben, separate Zielkapazitäten für Spot Instances und On-Demand-Instances sowie eine Startvorlage angeben, die Konfiguration für die Instances in der Flotte definiert, z. B. eine AMI, einen Instance-Typ, ein Subnetz oder eine Availability Zone, und eine oder mehrere Sicherheitsgruppen. Sie können optional zusätzliche Konfigurationen angeben, z. B. Parameter zum Überschreiben der Konfiguration der Startvorlage, Zuweisungsstrategien für die Auswahl von Spot Instances und On-Demand-Instances aus den EC2-Kapazitätspools und den Höchstbetrag, den Sie bereit sind, für die Flotte zu zahlen. Weitere Informationen finden Sie unter Konfigurationsoptionen für Ihre EC2-Flotte oder Spot-Flotte.

Die EC2-Flotte startet On-Demand-Instances, wenn freie Kapazität vorhanden ist, und startet Spot Instances, wenn Ihr Höchstpreis den Spot-Preis übersteigt und Kapazität verfügbar ist.

Wenn Ihre Flotte Spot-Instances enthält und vom Typ maintain ist, versucht Amazon EC2, Ihre Flottenzielkapazität aufrechtzuerhalten, wenn Ihre Spot Instances unterbrochen werden.

EC2-Flotte-Einschränkungen

Die folgenden Einschränkungen gelten für EC2-Flotte:

  • Das Erstellen einer EC2-Flotte ist nur über die Amazon EC2 EC2-API, AWS CLIAWS SDKs, und verfügbar. CloudFormation

  • Eine EC2-Flottenanfrage kann sich nicht über mehrere Regionen erstrecken. AWS Sie müssen für jede Region eine eigene EC2-Flotte anlegen.

  • Eine EC2-Flotte-Anfrage darf sich nicht über verschiedene Subnetze in derselben Availability Zone erstrecken.

Erstellen einer EC2-Flotte

Um eine Flotte von Instances mit EC2-Flotte zu starten, müssen Sie in Ihrer Flottenanforderung nur die folgenden Parameter angeben, und die Flotte verwendet die Standardwerte für die anderen Parameter:

  • LaunchTemplateId oder – LaunchTemplateNameGibt die zu verwendende Startvorlage an (die die Parameter für die zu startenden Instances enthält, wie beispielsweise den Instance-Typ, die Availability Zone)

  • TotalTargetCapacity – Gibt die Gesamtzielkapazität für die Flotte an

  • DefaultTargetCapacityType – Gibt an, ob die Standardkaufoption On-Demand oder Spot ist

Um die in der Startvorlage angegebenen Parameter außer Kraft zu setzen, können Sie eine oder mehrere Überschreibungen angeben. Jede Überschreibung kann nach Instance-Typ, Availability Zone, Subnetz und Höchstpreis variieren und eine unterschiedliche gewichtete Kapazität beinhalten. Alternativ zur manuellen Angabe der Instance-Typen können Sie die Attribute angeben, die eine Instance haben muss, und Amazon EC2 identifiziert alle Instance-Typen mit diesen Attributen. Weitere Informationen finden Sie unter Geben Sie Attribute für die Auswahl von Instance-Typen für EC2-Flotte oder Spot-Flotte an.

Für EC2-Flotten vom Typ instant können Sie einen Systems-Manager-Parameter anstelle der AMI-ID angeben. Sie können den Systems-Manager-Parameter in der Überschreibung oder in der Startvorlage angeben. Weitere Informationen finden Sie unter Verwenden eines Systems-Manager-Parameters anstelle einer AMI-ID.

Die Flottenparameter in einer JSON-Datei angeben. Informationen zu allen möglichen Parametern, die Sie angeben können, finden Sie unter Alle EC2-Konfigurationsoptionen anzeigen.

Flottenkonfigurationsbeispiele finden Sie unter Beispielhafte CLI-Konfigurationen für EC2-Flotte.

Derzeit wird das Erstellen einer EC2-Flotte in der Konsole nicht unterstützt.

Eine EC2-Flotte erstellen

Verwenden Sie den Befehl create-fleet, um die Flotte zu erstellen, und geben Sie die JSON-Datei an, welche die Flottenkonfigurationsparameter enthält.

aws ec2 create-fleet --cli-input-json file://file_name.json

Es folgt eine Beispielausgabe für eine Flotte des Typs request oder maintain:

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE" }

Es folgt eine Beispielausgabe für eine Flotte des Typs instant, die die Zielkapazität gestartet hat:

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ], "InstanceType": "c5.large", "Platform": null }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-5678901234abcdef0", "i-5432109876abcdef9" ] ] }

Es folgt eine Beispielausgabe für eine Flotte des Typs instant, die die Zielkapazität teilweise mit Fehlern für Instances gestartet hat, die nicht gestartet wurden:

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientInstanceCapacity", "ErrorMessage": "" }, ], "Instances": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a" } }, "Lifecycle": "on-demand", "InstanceIds": [ "i-1234567890abcdef0", "i-9876543210abcdef9" ] ] }

Es folgt eine Beispielausgabe für eine Flotte des Typs instant, die keine Instances gestartet hat:

{ "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE", "Errors": [ { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c4.xlarge", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, { "LaunchTemplateAndOverrides": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE", "Version": "1" }, "Overrides": { "InstanceType": "c5.large", "AvailabilityZone": "us-east-1a", } }, "Lifecycle": "on-demand", "ErrorCode": "InsufficientCapacity", "ErrorMessage": "" }, ], "Instances": [] }

Erstellen einer EC2-Flotte, die nicht voll funktionsfähige Spot Instances ersetzt

EC2-Flotte überprüft den Zustand der Instances in der Flotte alle zwei Minuten. Der Zustand einer Instance lautet entweder healthy oder unhealthy.

EC2-Flotte bestimmt den Zustand einer Instance mit den von Amazon EC2 bereitgestellten Zustandsprüfungen. Eine Instance wird als unhealthy bestimmt, wenn der Status der Instance-Statusprüfung oder der Systemstatusprüfung für drei aufeinanderfolgende Zustandsprüfungen impaired ist. Weitere Informationen finden Sie unter Statusprüfungen für Amazon-EC2-Instances.

Sie können Ihre Flotte so konfigurieren, dass nicht voll funktionsfähige Spot-Instances ersetzt werden. Nach der Festlegung von ReplaceUnhealthyInstances auf true wird eine Spot Instance ersetzt, wenn sie als unhealthy gemeldet wird. Die Flotte kann die Zielkapazität einige Minuten lang unterschreiten, während eine nicht voll funktionsfähige Spot-Instance ersetzt wird.

Voraussetzungen
  • Die Ersetzung im Zuge von Zustandsprüfungen wird nur für EC2-Flotten unterstützt, die eine Zielkapazität (Flotten vom Typ maintain) beibehalten und nicht für Flotten vom Typ request oder instant.

  • Der Austausch von Zustandsprüfungen wird nur für Spot-Instances unterstützt. Diese Feature wird für On-Demand-Instances nicht unterstützt.

  • Sie können Ihre EC2-Flotte nur beim Erstellen so konfigurieren, dass nicht voll funktionsfähige Instances ersetzt werden.

  • Benutzer können die Ersetzung im Rahmen von Zustandsprüfungen nur verwenden, wenn sie über die Berechtigung zum Aufrufen der ec2:DescribeInstanceStatus-Aktion verfügen.

So konfigurieren Sie ein EC2-Flotte, um nicht voll funktionsfähige Spot-Instances zu ersetzen
  1. Verwenden Sie die Informationen zum Erstellen einer EC2-Flotte in Erstellen einer EC2-Flotte.

  2. Um die Flotte so zu konfigurieren, dass sie nicht voll funktionsfähige Spot Instances ersetzt, geben Sie in der JSON-Datei für ReplaceUnhealthyInstances true an.

Alle EC2-Konfigurationsoptionen anzeigen

Um die vollständige Liste der EC2-Flottenkonfigurationsparameter anzuzeigen, können Sie eine JSON-Datei erzeugen. Eine Beschreibung jedes Parameters finden Sie unter create-fleet.

Eine JSON-Datei mit allen verfügbaren EC2-Flotte-Parametern erzeugen

Verwenden Sie den Befehl create-fleet (AWS CLI) und den --generate-cli-skeleton-Parameter, um eine EC2-Flotten-JSON-Datei zu erzeugen und die Ausgabe zum Speichern in eine Datei umzuleiten.

aws ec2 create-fleet \ --generate-cli-skeleton input > ec2createfleet.json

Es folgt eine Beispielausgabe.

{ "DryRun": true, "ClientToken": "", "SpotOptions": { "AllocationStrategy": "price-capacity-optimized", "MaintenanceStrategies": { "CapacityRebalance": { "ReplacementStrategy": "launch" } }, "InstanceInterruptionBehavior": "hibernate", "InstancePoolsToUseCount": 0, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "OnDemandOptions": { "AllocationStrategy": "prioritized", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" }, "SingleInstanceType": true, "SingleAvailabilityZone": true, "MinTargetCapacity": 0, "MaxTotalPrice": "" }, "ExcessCapacityTerminationPolicy": "termination", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateId": "", "LaunchTemplateName": "", "Version": "" }, "Overrides": [ { "InstanceType": "r5.metal", "MaxPrice": "", "SubnetId": "", "AvailabilityZone": "", "WeightedCapacity": 0.0, "Priority": 0.0, "Placement": { "AvailabilityZone": "", "Affinity": "", "GroupName": "", "PartitionNumber": 0, "HostId": "", "Tenancy": "dedicated", "SpreadDomain": "", "HostResourceGroupArn": "" }, "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "amd" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "previous" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "required", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "excluded", "LocalStorageTypes": [ "ssd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "inference" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "amd" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 } } } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 0, "OnDemandTargetCapacity": 0, "SpotTargetCapacity": 0, "DefaultTargetCapacityType": "on-demand", "TargetCapacityUnitType": "memory-mib" }, "TerminateInstancesWithExpiration": true, "Type": "instant", "ValidFrom": "1970-01-01T00:00:00", "ValidUntil": "1970-01-01T00:00:00", "ReplaceUnhealthyInstances": true, "TagSpecifications": [ { "ResourceType": "fleet", "Tags": [ { "Key": "", "Value": "" } ] } ], "Context": "" }