Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

プレイスメントグループ

新しい EC2 インスタンスを起動する場合、EC2 サービスは、相関性のエラーを最小限に抑えるために、すべてのインスタンスが基盤となるハードウェアに分散されるようにインスタンスを配置します。プレイスメントグループを使用することで、ワークロードのニーズに対応するために独立したインスタンスのグループのプレイスメントに影響を与えることができます。ワークロードのタイプに応じて、以下のいずれかのプレイスメント戦略によりプレイスメントグループを作成できます。

  • クラスター – アベイラビリティーゾーン内でインスタンスをまとめます。この戦略により、ワークロードは、HPC アプリケーションで典型的な緊密に組み合わされたノード間通信に必要な低レイテンシーネットワークパフォーマンスを実現できます。

  • パーティション – インスタンスを複数の論理パーティションに分散させ、1 つのパーティション内のインスタンスのグループが基盤となるハードウェアを別のパーティション内のインスタンスのグループと共有しないようにします。この戦略は、Hadoop、Cassandra、Kafka などの大規模な分散および複製ワークロードで一般的に使用されます。

  • 分散 – 相関性のエラーを減らすために、少数のインスタンスを厳密に基盤となるハードウェア全体に配置します。

プレイスメントグループを作成するための料金は発生しません。

クラスタープレイスメントグループ

クラスタープレイスメントグループは、単一のアベイラビリティーゾーン内のインスタンスを論理的にグループ化したものです。プレイスメントグループは、同じリージョン内のピア VPC にまたがることができます。クラスタープレイスメントグループの主な利点は、10 Gbps のフロー制限に加えて、非ブロッキング、非オーバーサブスクライブの完全に 2 分割されている接続であることです。つまり、プレイスメントグループ内のすべてのノードは、プレイスメントグループ内の他のすべてのノードと対話することができます。これは、オーバーサブスクリプションによる遅れなしに、10 Gbps フローと 100 Gbps アグリゲートのフルラインレートで行われます。

次の図は、クラスタープレイスメントグループに配置されたインスタンスを示しています。


                クラスタープレイスメントグループ

低ネットワークレイテンシー、高ネットワークスループット、またはその両方から利点が得られるアプリケーションや、ネットワークトラフィックの大部分がグループのインスタンス間で発生する場合は、クラスタープレイスメントグループが推奨されます。プレイスメントグループで、最も低いレイテンシーと最も高いネットワークパフォーマンス (1 秒あたりパケット数) を実現するためには、拡張ネットワーキングをサポートするインスタンスタイプを選択します。詳細については、「拡張ネットワーキング」を参照してください。

単一の起動リクエストでは、プレイスメントグループ内で必要な数のインスタンスを起動することと、プレイスメントグループ内のすべてのインスタンスで同じインスタンスタイプを使用することをお勧めします。後でプレイスメントグループにさらにインスタンスを追加しようとした場合、またはプレイスメントグループ内で複数のインスタンスタイプを起動しようとした場合、容量不足エラーが発生する可能性が高くなります。

プレイスメントグループ内のインスタンスを停止して再起動しても、そのインスタンスは同じプレイスメントグループ内で実行されます。ただし、インスタンスに対して十分な容量がない場合、起動は失敗します。

既にインスタンスを実行中のプレイスメントグループ内のインスタンスを起動するときに容量エラーを受け取った場合は、プレイスメントグループ内のすべてのインスタンスを停止して開始し、もう一度起動を試みてください。インスタンスを再起動すると、リクエストされたすべてのインスタンスの容量があるハードウェアに移行される場合があります。

パーティションプレイスメントグループ

パーティションプレイスメントグループは、アプリケーションに関連するハードウェア障害の頻度を軽減するために役立ちます。パーティションプレイスメントグループを使用する場合、Amazon EC2 は各グループをパーティションと呼ばれる論理的なセグメントに分割します。Amazon EC2 には、プレイスメントグループ内の各パーティションにそれぞれ一連のラックがあります。各ラックには独自のネットワークおよび電源があります。プレイスメントグループ内のパーティションどうしが同じラックを共有することはありません。これにより、アプリケーション内でのハードウェア障害による影響を隔離できます。

次のイメージは、単一のアベイラビリティーゾーン内のパーティションプレイスメントグループのシンプルな描写を示しています。ここでは、3 つのパーティション (パーティション 1パーティション 2パーティション 3) があるパーティションプレイスメントグループに配置されたインスタンスを示しています。各パーティションは複数のインスタンスで構成されています。各パーティション内のインスタンスは、他のパーティション内のラックを共有しないため、単一のハードウェア障害の影響は関連付けられたパーティションのみに留まります。


                3 つのパーティションがあるパーティションプレイスメントグループ

パーティションプレイスメントグループは、HDFS、HBase、Cassandra などの大規模な分散および複製ワークロードを異なるラック間でデプロイするために使用できます。インスタンスをパーティションプレイスメントグループに起動すると、Amazon EC2 は、指定したパーティション数全体にインスタンスを均等に分散しようとします。インスタンスを特定のパーティションに起動して、インスタンスの配置場所をより細かく制御することもできます。

パーティションプレイスメントグループは、同じリージョン内の複数のアベイラビリティーゾーンにパーティションを持つことができます。パーティションプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つのパーティションを持つことができます。パーティションプレイスメントグループで起動できるインスタンス数の制限は、アカウントの制限のみです。

また、パーティションプレイスメントグループを使用するとパーティションを表示できます。そのため、どのインスタンスがどのパーティションにあるかを確認できます。この情報は、HDFS、HBase、Cassandra などトポロジー対応アプリケーションと共有できます。これらのアプリケーションはこの情報を利用してインテリジェントなデータレプリケーションの決定を行い、データの可用性と耐久性を向上します。

パーティションプレイスメントグループでインスタンスを開始または起動し、リクエストを実行するための固有のハードウェアが不足している場合、そのリクエストは失敗します。Amazon EC2 では、時間の経過とともにより別のハードウェアを利用できるようになりますので、後でリクエストを再試行できます。

スプレッドプレイスメントグループ

スプレッドプレイスメントグループは、それぞれに独自のネットワークおよび電源がある異なるラックに別々に配置できるインスタンスのグループです。

次の図は、1 つのアベイラビリティーゾーン内の、スプレッドプレイスメントグループに配置された 7 つのインスタンスを示しています。7 つのインスタンスは、7 つの異なるラックに配置されます。


                スプレッドプレイスメントグループ

スプレッドプレイスメントグループは、少数の重要なインスタンスが互いに分離して保持される必要があるアプリケーションに推奨されます。スプレッドプレイスメントグループでインスタンスを起動すると、インスタンスが同じラックを共有するときに発生する可能性のある、同時障害のリスクが軽減されます。スプレッドプレイスメントグループは、異なるラックへのアクセスを提供するため、長時間のインスタンスタイプの混合やインスタンスの起動に適しています。

スプレッドプレイスメントグループは、同じリージョン内の複数のアベイラビリティーゾーンに分散できます。グループごとのアベイラビリティーゾーンごとに、最大 7 つの実行中のインスタンスを持つことができます。

スプレッドプレイスメントグループでインスタンスを開始または起動し、リクエストを実行するための固有のハードウェアが不足している場合、そのリクエストは失敗します。Amazon EC2 では、時間の経過とともにより別のハードウェアを利用できるようになりますので、後でリクエストを再試行できます。

プレイスメントグループのルールと制限

一般的なルールと制限

プレイスメントグループを使用する前に、次のルールに注意してください。

  • プレイスメントグループに指定する名前は、そのリージョンの AWS アカウント内で固有である必要があります。

  • プレイスメントグループをマージすることはできません。

  • インスタンスは、1 つのプレイスメントグループ内で一度に起動できます。複数のプレイスメントグループにまたがることはできません。

  • オンデマンドキャパシティー予約 および zonal リザーブドインスタンス は、特定のアベイラビリティーゾーンの EC2 インスタンスに対してキャパシティーを予約します。キャパシティーの予約で、プレイスメントグループ内のインスタンスで使用できます。ただし、プレイスメントグループに対して明示的にキャパシティーを予約することはできません。

  • テナンシー host を持つインスタンスは、プレイスメントグループ内で起動できません。

クラスタープレイスメントグループのルールと制限

クラスタープレイスメントグループには、以下のルールが適用されます。

  • クラスタープレイスメントグループにインスタンスを起動するときに使用できるインスタンスタイプは、次に示すもののみです。

    • 汎用: A1、M4、M5、M5a、M5ad、M5d

    • コンピューティングの最適化: C3、C4、C5、C5d、C5n、および cc2.8xlarge

    • メモリ最適化: cr1.8xlarge、R3、R4、R5、 R5a、R5ad、R5d、X1、X1e、および z1d

    • ストレージを最適化: D2、H1、hs1.8xlarge、I2、I3、および I3en

    • 高速コンピューティング: F1、G2、G3、G4dn、P2、P3、および P3dn

  • クラスタープレイスメントグループを、複数のアベイラビリティーゾーンで設定することはできません。

  • クラスタープレイスメントグループの 2 つのインスタンス間のトラフィックの最大ネットワークスループット速度は、2 つのインスタンスのうち遅い方に制限されます。高スループットの要件があるアプリケーションの場合、要件に適合するネットワーク接続を備えたインスタンスタイプを選択します。

  • 拡張ネットワーキングに対して有効になっているインスタンスには、以下のルールが適用されます。

    • クラスタープレイスメントグループ内のインスタンス間では、シングルフロートラフィックに最大 10 Gbps を使用できます。クラスタープレイスメントグループ内にないインスタンスは、シングルフロートラフィックに最大 5 Gbps を使用できます。

    • 同じリージョン内でのインスタンスと Amazon S3 バケットとの間では、パブリック IP アドレス空間または VPC エンドポイントを介したトラフィックに、使用可能なすべてのインスタンスの集計帯域幅を使用できます。

  • 複数のインスタンスタイプをクラスタープレイスメントグループに起動できます。ただし、これにより起動に成功するために必要な容量が使用可能になる可能性が低くなります。クラスタープレイスメントグループ内ですべてのインスタンスで同じインスタンスタイプを使用することをお勧めします。

  • インターネットへのネットワークトラフィックとオンプレミスリソースへの AWS Direct Connect 接続は、5 Gbps に制限されます。

パーティションプレイスメントグループのルールと制限

パーティションプレイスメントグループには、以下のルールが適用されます。

  • パーティションプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つのパーティションをサポートします。パーティションプレイスメントグループで起動できるインスタンス数の制限は、アカウントの制限のみです。

  • パーティションプレイスメントグループでインスタンスが起動されると、Amazon EC2 はインスタンスをすべてのパーティションに均等に分散しようとします。Amazon EC2 では、すべてのパーティションにインスタンスが均等に分散されるとは限りません。

  • ハードウェア専有インスタンス を持つパーティションプレイスメントグループは、最大 2 つのパーティションを持つことができます。

  • パーティションプレイスメントグループは Dedicated Hosts ではサポートされません。

スプレッドプレイスメントグループのルールと制限

スプレッドプレイスメントグループには、以下のルールが適用されます。

  • スプレッドプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つの実行インスタンスをサポートします。たとえば、アベイラビリティーゾーンが 3 つあるリージョンでは、グループ内に合計 21 個のインスタンス (ゾーンごとに 7 個) を実行することができます。同じアベイラビリティーゾーンと同じスプレッドプレイスメントグループで 8 番目のインスタンスを開始しようとすると、インスタンスは起動しません。アベイラビリティーゾーンに 7 つ以上のインスタンスが必要な場合は、複数のスプレッドプレイスメントグループを使用することをお勧めします。これはグループ間のインスタンスの広がりを保証するものではありませんが、特定のクラスの障害からの影響を制限するために各グループの普及を保証します。

  • ハードウェア専有インスタンス または Dedicated Hosts では、スプレッドプレイスメントグループはサポートされていません。

プレイスメントグループの作成

Amazon EC2 コンソールまたはコマンドラインを使用して、プレイスメントグループを作成できます。

プレイスメントグループを作成するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Placement Group]、[Create Placement Group] の順に選択します。

  3. グループの名前を指定します。

  4. グループの戦略を選択します。[パーティション] を選択する場合、グループ内のパーティションの数を指定します。

  5. [作成] を選択します。

プレイスメントグループを作成するには (コマンドライン)

パーティションプレイスメントグループを作成するには (AWS CLI)

  • create-placement-group コマンドを使用して、partition 値を持つ --strategy パラメータと --partition-count パラメータを指定します。この例では、パーティションプレイスメントグループは HDFS-Group-A という名で、パーティションは 5 つ作成されています。

    aws ec2 create-placement-group --group-name HDFS-Group-A --strategy partition --partition-count 5

プレイスメントグループでのインスタンスの起動

プレイスメントグループで起動するインスタンスに特化した AMI を作成できます。これを行うには、インスタンスを起動し、インスタンスに必要なソフトウェアとアプリケーションをインストールします。次に、インスタンスから AMI を作成します。詳細については、「Amazon EBS-Backed Linux AMI の作成」を参照してください。

プレイスメントグループにインスタンスを起動するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. [インスタンスの作成] を選択します。指示どおりにウィザードを完了し、次の操作を行うように注意します。

    • [Choose an Amazon Machine Image (AMI)] ページで、AMI を選択します。作成した AMI を選択するには、[My AMIs] を選択します。

    • [Choose an Instance Type] ページはで、プレイスメントグループ内で起動できるインスタンスタイプを選択します。

    • [Configure Instance Details (インスタンスの詳細を設定)] ページでは、以下のフィールドがプレイスメントグループに適用できます。

      • [インスタンス数] で、このプレイスメントグループ内で必要なインスタンスの総数を入力します。これは、後でプレイスメントグループにインスタンスを追加できない場合があるためです。

      • [Placement group (プレイスメントグループ)] で、[インスタンスをプレイスメントグループに追加します] チェックボックスを選択します。このページで [Placement group (プレイスメントグループ)] が表示されない場合、プレイスメントグループで起動できるインスタンスタイプを選択していることを確認してください。その以外の場合、このオプションは使用できません。

      • [プレイスメントグループ名] で、既存のプレイスメントグループあるいは作成した新しいプレイスメントグループのどちらにインスタンスを追加するかを選択します。

      • [プレイスメントグループ戦略] では、適切な戦略を選択します。[パーティション] を選択する場合、[Target partition (ターゲットパーティション)] に [Auto distribution (自動分散)] を選択して Amazon EC2 がグループ内のすべてのパーティションにできるだけ均等にインスタンスを分散することを許可するか、あるいはインスタンスを起動するパーティションを指定します。

プレイスメントグループにインスタンスを起動するには (コマンドライン)

  1. 次のコマンドのいずれかを使用して、インスタンス用の AMI を作成します。

  2. 次のオプションのいずれかを使用して、プレイスメントグループでインスタンスを起動します。

パーティションプレイスメントグループの特定のパーティションでインスタンスを起動するには (AWS CLI)

  • run-instances コマンドを使用して、--placement "GroupName = HDFS-Group-A, PartitionNumber = 3" パラメータを使用するグループプレイスメントグループ名とパーティションを指定します。この例では、パーティションプレイスメントグループは HDFS-Group-A という名で、パーティション数は 3 です。

    aws ec2 run-instances --placement "GroupName = HDFS-Group-A, PartitionNumber = 3"

プレイスメントグループのインスタンスを説明する

Amazon EC2 コンソールまたはコマンドラインを使用して、インスタンスのプレイスメントグループに関する情報を表示できます。プレイスメントグループはコンソールを使用して確認できます。パーティションプレイスメントグループ内のインスタンスのパーティション番号は、現在 API または AWS CLI を使用してのみ表示できます。

インスタンスのプレイスメントグループを表示するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択し、詳細ペインの [プレイスメントグループ] を確認します。プレイスメントグループにインスタンスがない場合、フィールドは空になります。それ以外の場合は、プレイスメントグループ名が表示されます。プレイスメントグループがパーティションプレイスメントグループの場合、このインスタンスのパーティション番号の [Partition number (パーティション番号)] を調べます。

パーティションプレイスメントグループのインスタンスのパーティション番号を表示するには (AWS CLI)

  • describe-instancesコマンドを使用して --instance-id パラメータを指定します。

    aws ec2 describe-instances --instance-id i-0123a456700123456

    レスポンスにはプレイスメント情報が含まれています。この情報にはインスタンスのプレイスメントグループ名とパーティション番号が含まれます。

    "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 3, "Tenancy": "default" }

特定のパーティションプレイスメントグループとパーティション番号のインスタンスにフィルタを適用するには (AWS CLI)

  • describe-instances コマンドを使用して、placement-group-name および placement-partition-number フィルターを持つ --filters パラメータを指定します。この例では、パーティションプレイスメントグループは HDFS-Group-A という名で、パーティション数は 7 です。

    aws ec2 describe-instances --filters "Name = placement-group-name, Values = HDFS-Group-A" "Name = placement-partition-number, Values = 7"

    レスポンスは、指定されたプレイスメントグループ内の指定されたパーティション内にあるすべてのインスタンスをリストします。次の出力例は、返されたインスタンスのインスタンス ID、インスタンスタイプ、および配置情報のみを示しています。

    "Instances": [ { "InstanceId": "i-0a1bc23d4567e8f90", "InstanceType": "r4.large", }, "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 7, "Tenancy": "default" } { "InstanceId": "i-0a9b876cd5d4ef321", "InstanceType": "r4.large", }, "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 7, "Tenancy": "default" } ],

インスタンスのプレイスメントグループの変更

プレイスメントグループへの既存のインスタンスの移動、別のプレイスメントグループへのインスタンスの移動、またはプレイスメントグループからのインスタンスの削除を行うことができます。開始する前に、インスタンスの状態が stopped である必要があります。

コマンドラインまたは AWS SDK を使用したインスタンスのプレイスメントグループを変更できます。

プレイスメントグループにインスタンスを移動するには (コマンドライン)

  1. 次のいずれかのコマンドを使用して、インスタンスを停止します。

  2. modify-instance-placement コマンド (AWS CLI) を使用し、インスタンスの移動先のプレイスメントグループの名前を指定します。

    aws ec2 modify-instance-placement --instance-id i-0123a456700123456 --group-name MySpreadGroup

    または、Edit-EC2InstancePlacement コマンド (AWS Tools for Windows PowerShell) を使用することもできます。

  3. 次のいずれかのコマンドを使用して、インスタンスを再起動します。

プレイスメントグループからインスタンスを削除するには (コマンドライン)

  1. 次のいずれかのコマンドを使用して、インスタンスを停止します。

  2. modify-instance-placement コマンド (AWS CLI) を使用し、グループ名の空の文字列を指定します。

    aws ec2 modify-instance-placement --instance-id i-0123a456700123456 --group-name ""

    または、Edit-EC2InstancePlacement コマンド (AWS Tools for Windows PowerShell) を使用することもできます。

  3. 次のいずれかのコマンドを使用して、インスタンスを再起動します。

プレイスメントグループを削除する

プレイスメントグループを交換する必要がある場合、または不要になった場合は、そのプレイスメントグループを削除できます。プレイスメントグループを削除する前に、プレイスメントグループに起動したすべてのインスタンスを削除するか、別のプレイスメントグループに移動する必要があります。

インスタンスを終了または移動するか、プレイスメントグループを削除するには (コンソール)

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. プレイスメントグループのすべてのインスタンスを選択して終了しますインスタンスを終了する前に、そのインスタンスがプレイスメントグループ内にあることを確認できます。そのためには、詳細ペインで [Placement Group] の値をチェックします。

    または、「インスタンスのプレイスメントグループの変更」のステップに従い、インスタンスを別のプレイスメントグループに移動します。

  4. ナビゲーションペインで、[Placement Groups] を選択します。

  5. プレイスメントグループを選択し、[Delete Placement Group] を選択します。

  6. 確認を求めるメッセージが表示されたら、[削除] を選択します。

インスタンスを終了し、プレイスメントグループを削除するには (コマンドライン)

次のいずれかのコマンドセットを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。