View a markdown version of this page

Tutorial: Konfigurieren Sie EC2 Fleet so, dass On-Demand Instances mithilfe gezielter Kapazitätsreservierungen gestartet werden - 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.

Tutorial: Konfigurieren Sie EC2 Fleet so, dass On-Demand Instances mithilfe gezielter Kapazitätsreservierungen gestartet werden

Dieses Tutorial führt Sie durch alle Schritte, die Sie ausführen müssen, damit Ihre EC2-Flotte On-Demand Instances mit targeted Kapazitätsreservierungen startet.

Sie erfahren, wie Sie eine Flotte so konfigurieren, dass beim Start von On-Demand Instances zuerst targeted On-Demand Kapazitätsreservierungen verwendet werden. Außerdem erfahren Sie, wie Sie die Flotte so konfigurieren, dass, wenn die On-Demand Gesamtzielkapazität die Anzahl der verfügbaren ungenutzten Kapazitätsreservierungen übersteigt, die Flotte die angegebene Zuweisungsstrategie verwendet, um die Instance-Pools auszuwählen, in denen die verbleibende Zielkapazität gestartet werden soll.

EC2-Flotte-Konfiguration

In diesem Tutorial ist die Flotte konfiguriert wie folgt:

  • Zielkapazität: 10 On-Demand Instances

  • Gesamtzahl der ungenutzten targeted Kapazitätsreservierungen: 6 (weniger als die On-Demand Zielkapazität der Flotte von 10 On-Demand Instances)

  • Anzahl der Kapazitätsreservierungspools: 2 (us-east-1a und us-east-1b)

  • Anzahl der Kapazitätsreservierungen pro Pool: 3

  • On-Demand Zuweisungsstrategie: lowest-price (Wenn die Anzahl der ungenutzten Kapazitätsreservierungen unter der On-Demand Zielkapazität liegt, bestimmt die Flotte auf der Grundlage der On-Demand Zuweisungsstrategie, in welchen Pools die verbleibende On-Demand Kapazität in Betrieb genommen werden soll.)

    Beachten Sie, dass Sie auch die prioritized-Zuordnungsstrategie anstelle der lowest-price-Zuordnungsstrategie verwenden können.

Schritt 1: Erstellen von Kapazitätsreservierungen

Verwenden Sie den Befehl create-capacity-reservation (Kapazitätsreservierung erstellen), um die Kapazitätsreservierungen zu erstellen, drei für us-east-1a und weitere drei für us-east-1b. Mit Ausnahme der Availability Zone sind die anderen Attribute der Kapazitätsreservierungen identisch.

3 Kapazitätsreservierungen in us-east-1a

aws ec2 create-capacity-reservation \ --availability-zone us-east-1a \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Beispiel für die resultierende ID der Kapazitätsreservierung

cr-1234567890abcdef1

3 Kapazitätsreservierungen in us-east-1b

aws ec2 create-capacity-reservation \ --availability-zone us-east-1b \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Beispiel für die resultierende ID der Kapazitätsreservierung

cr-54321abcdef567890

Schritt 2: Erstellen einer Ressourcengruppe für Kapazitätsreservierung

Verwenden des resource-groups-Dienstes und des Befehls create-group (Erstellen einer Gruppe), um eine Ressourcengruppe für Kapazitätsreservierung zu erstellen In diesem Beispiel hat die Ressourcengruppe den Namen my-cr-group. Informationen dazu, warum Sie eine Ressourcengruppe erstellen müssen, finden Sie unter Verwenden Sie Kapazitätsreservierungen, um On-Demand Kapazität in EC2 Fleet zu reservieren.

aws resource-groups create-group \ --name my-cr-group \ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

Schritt 3: Hinzufügen der Kapazitätsreservierungen zur Ressourcengruppe der Kapazitätsreservierung

Verwenden des resource-groups-Dienstes und des Befehls group-resources (Gruppenressourcen), um die Kapazitätsreservierungen, die Sie in Schritt 1 erstellt haben, der Ressourcengruppe Kapazitätsreservierungen hinzuzufügen. Beachten Sie, dass Sie die On-Demand Kapazitätsreservierungen anhand ihrer ARNs referenzieren müssen.

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

Beispielausgabe

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

(Optional) Schritt 4: Anzeigen der Kapazitätsreservierungen in der Ressourcengruppe

Verwenden des resource-groups-Dienstes und des Befehls list-group-resources (Gruppenressourcen auflisten), um optional die Ressourcengruppe zu beschreiben, um ihre Kapazitätsreservierungen anzuzeigen.

aws resource-groups list-group-resources --group my-cr-group

Beispielausgabe

{ "ResourceIdentifiers": [ { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1" }, { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" } ] }

Schritt 5: Erstellen einer Startvorlage, die angibt, dass die Kapazitätsreservierung auf eine bestimmte Ressourcengruppe abzielt

Verwenden des Befehls create-launch-template (Startvorlage erstellen), um eine Startvorlage zu erstellen, in der Sie die zu verwendenden Kapazitätsreservierungen angeben können. In diesem Beispiel wird die Flotte targeted-Kapazitätsreservierungen verwenden, die einer Ressourcengruppe hinzugefügt wurden. Daher geben die Startvorlagendaten an, dass die Kapazitätsreservierung auf eine bestimmte Ressourcengruppe ausgerichtet ist. In diesem Beispiel hat die Startvorlage den Namen my-launch-template.

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"ImageId": "ami-0123456789example", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } }'

(Optional) Schritt 6: Beschreiben der Startvorlage

Verwenden Sie den Befehl describe-launch-template-versions, um optional die Startvorlage zu beschreiben, um ihre Konfiguration anzuzeigen.

aws ec2 describe-launch-template-versions --launch-template-name my-launch-template

Beispielausgabe

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-01234567890example", "LaunchTemplateName": "my-launch-template", "VersionNumber": 1, "CreateTime": "2021-01-19T20:50:19.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Admin", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-0947d2ba12ee1ff75", "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" } } } } ] }

Schritt 7: Erstellen einer EC2-Flotte

Erstellen Sie eine EC2-Flotte, die die Konfigurationsinformationen für die Instances angibt, die sie starten soll. Die folgende EC2-Flottenkonfiguration zeigt nur die relevanten Konfigurationen für dieses Beispiel. Die Startvorlage my-launch-template ist die Startvorlage, die Sie in Schritt 5 erstellt haben. Es gibt zwei Instance-Pools mit jeweils demselben Instance-Typ (c5.xlarge), aber mit unterschiedlichen Availability Zones (us-east-1a und us-east-1b). Der Preis der Instance-Pools ist derselbe, da die Preise für die Region und nicht für die Availability Zone definiert sind. Die gesamte Zielkapazität beträgt 10 und der Standardzielkapazitätstyp ist on-demand. Die On-Demand Allokationsstrategie lautetlowest-price. Die Nutzungsstrategie für Kapazitätsreservierungen ist use-capacity-reservations-first.

Anmerkung

Der Flottentyp muss instant sein. Andere Flotten-Typen unterstützen use-capacity-reservations-first nicht.

{ "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1a" }, { "InstanceType": "c5.xlarge", "AvailabilityZone": "us-east-1b" } ] } ], "TargetCapacitySpecification": { "TotalTargetCapacity": 10, "DefaultTargetCapacityType": "on-demand" }, "OnDemandOptions": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } }, "Type": "instant" }

Nachdem Sie die instant-Flotte mit der vorherigen Konfiguration erstellt haben, werden die folgenden 10 Instances gestartet, um die Zielkapazität zu erreichen:

  • Die Kapazitätsreservierungen werden zuerst verwendet, um 6 On-Demand Instances wie folgt zu starten:

    • 3 On-Demand Instances werden in den 3 c5.xlarge targeted Kapazitätsreservierungen gestartet us-east-1a

    • 3 On-Demand Instances werden in den 3 c5.xlarge targeted Kapazitätsreservierungen gestartet us-east-1b

  • Um die Zielkapazität zu erreichen, werden 4 weitere On-Demand Instances gemäß der On-Demand Zuweisungsstrategie, die lowest-price in diesem Beispiel dargestellt ist, auf reguläre On-Demand Kapazität umgestellt. Da die Pools jedoch denselben Preis haben (da der Preis pro Region und nicht pro Availability Zone gilt), startet die Flotte die verbleibenden 4 On-Demand Instances in einem der Pools.

(Optional) Schritt 8: Anzeigen der Anzahl der verbleibenden ungenutzten Kapazitätsreservierungen

Nachdem die Flotte gestartet wurde, können Sie optional describe-capacity-reservations (Kapazitätsreservierungen beschreiben) ausführen, um zu sehen, wie viele nicht verwendete Kapazitätsreservierungen noch übrig sind. In diesem Beispiel sollte die folgende Antwort angezeigt werden, die zeigt, dass alle Kapazitätsreservierungen in allen Pools verwendet wurden.

{ "CapacityReservationId": "cr-111", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 } { "CapacityReservationId": "cr-222", "InstanceType": "c5.xlarge", "AvailableInstanceCount": 0 }