BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWS EC2 Fleet:1リクエストで何千ものOn-DemandインスタンスとSpotインスタンスを管理

AWS EC2 Fleet:1リクエストで何千ものOn-DemandインスタンスとSpotインスタンスを管理

原文(投稿日:2018/05/12)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

Amazonは、既存のSpot Fleetsを拡張する新機能であるEC2 Fleet発表した。これは、単一のAPIを使用して、EC2のOn-Demandインスタンス、Reservedインスタンス、Spotインスタンスを組み合わせたフリートを作成できる新しい機能である。さらに、顧客は必要なキャパシティと、どのインスタンスタイプのVMかを指定することができ、スキャフォールディングコードを記述することなく、AWSは必要なインスタンスを起動、管理、監視、スケールする。

これまで、Spotインスタンスのフリート全体を起動および管理できるAPIを使って、1回のリクエストで、さまざまなインスタンスタイプの数千のSpotインスタンスを作成できた。これにより、複数のAPIコールを管理するための複雑なグルーコードを書く必要なく、顧客は容易に希望するスケール、パフォーマンス、コストのバランスをとることができる。現在、さまざまなEC2インスタンスを組み合わせたフリートを作成し、単一の要求で開始することができる。顧客は、フリートの容量として、インスタンス数、仮想CPU(vCPU)数あるいはアプリケーションユニット(アプリケーションのニーズに直接対応する方法で、各EC2インスタンスタイプに相対する)数を指定する。この仕様はウェイトと呼ばれる。

EC2 Fleetを使用することで、顧客はワークロードをインスタンスにプッシュして、最低限の価格で処理することができる。いくつかの設定を含むテンプレートを作成することで、顧客はSpotインスタンス(AWS内の未使用容量、 AWS EC2内で使用可能なVMのうちで最も安価なもの)を活用して要求を満たすフリートを作成することができる。テンプレートを作成する設定としては、InstanceType、WeightedCapacityと、TotalTargetCapacity、OnDemandTargetCapacity、SpotTargetCapacity、DefaultTargetCapacityTypeを含むTargetCapacitySpecificationがある。

"LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754339b27161c",
                "Version": "1"
            }
        "Overrides": [
        {
          "InstanceType": "m4.16xlarge",
          "WeightedCapacity": 64,
        },
        {
          "InstanceType": "m5.24xlarge",
          "WeightedCapacity": 96,
        },
      ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2880,
        "OnDemandTargetCapacity": 960,
        "SpotTargetCapacity": 1920,
        "DefaultTargetCapacityType": "Spot"
    }
}

EC2 Fleetはフリート記述ファイルを使って、指定された数のインスタンスを使うフリートを作成する。例えば、m5.24xlargeOn-Demandインスタンスとm4.16xlargeSpotインスタンスを使用する。顧客は、AWS CLIまたはAPI呼び出しを使って単一のコマンドを実行することで、フリートの作成をトリガーすることができる。

$ aws ec2 create-fleet --cli-input-json file://home/ec2-user/fl1.json
{
    "FleetId":"fleet-838cf4e5-fded-4f68-acb5-8c47ee1b248a"
}

EC2 Fleetは、Spotインスタンスの現行価格とOn-Demandインスタンスの公開価格を使用して、インスタンスタイプとAvailability Zoneの最もコスト効率の高い組み合わせを選択する。価格設定の詳細については、Amazon EC2の価格を参照してください。

デフォルトモードでは、ウェイトを考慮して、ウェイトがかかっているユニットあたりの最低コストを取得する。さらに、顧客が指定するインスタンスがReserved Instances(RI)の場合は、割引が適用される。vCPUあたりの現在のSpot価格に基づいて、EC2 Fleetは、SpotTargetCapcityで指定された数を配信するために適切な数のインスタンスを起動する。また、スポットインスタンスのキャパシティが必要なくなった場合、顧客は、On-Demandインスタンスのみを活用して、新たに必要なキャパシティにターゲットキャパシティを変更することができる。フリートが必要なくなると、顧客は別の単一のコマンドでインスタンスを削除して終了することができる。

$ aws ec2 delete-fleets --fleet-id fleet-838cf4e5-fded-4f68-acb5-8c47ee1b248a \
  --terminate-instances   

Amazonは、EC2 FleetとEC Auto Scalingグループを統合しようと計画している。それによって、ヘルスチェックやライフサイクルフックなどのEC2 Auto Scaling機能を活用しながら、様々なインスタンスタイプから成る単一のフリートを作成できるようになる。さらにAmazonは、このEC2機能をAmazon ECS、Amazon EKS、AWS Batchなどのサービスに導入し、フリート管理のためにEC2 Auto Scalingを利用する。現在のEC2 Fleetは、すべてのパブリックAWSリージョンで利用できる。

Rate this Article

Adoption Stage
Style

この記事に星をつける

おすすめ度
スタイル

BT