Amazon EC2 インスタンストポロジーの仕組み - Amazon Elastic Compute Cloud

Amazon EC2 インスタンストポロジーの仕組み

AWS ネットワークはレイヤーの階層構造内に配置されています。EC2 インスタンスは、インスタンスのタイプに応じて、3 番目のレイヤー以下にあるネットワークに接続します。インスタンスのトポロジーは一連のノードによって記述され、ネットワークの各レイヤーに 1 つのノードがあります。DescribeInstanceTopology API レスポンスにあるノードセットはネットワーク階層のトップダウンビューを提供し、最下部のノードがインスタンスに接続されます。

注記

インスタンスタイプには、ネットワーク内の 4 つのレイヤーを表すノードセットにある 4 つのネットワークノードで構成されているものもあれば、ネットワーク内の 3 つのレイヤーを表す 3 つのネットワークノードで構成されているものもあります。サポートされているインスタンスタイプについては、「インスタンスのタイプ」を参照してください。

次の図はインスタンストポロジーを視覚的に表しており、インスタンストポロジーの理解に役立ちます。ネットワークノードは NN1NN7 として示されます。数字 iiiiii はネットワークレイヤーを示しています。数字 1234 はEC2 インスタンスを示しています。インスタンスは、以下の図で iii と表示されている最下部レイヤー内のノードに接続します。複数のインスタンスが同じノードに接続できます。

インスタンストポロジーのグラフィックモデル。

この例では以下のようになっています。

  • インスタンス 1 はレイヤー iii のネットワークノード 4 (NN4) に接続しています。NN4 はレイヤー ii のネットワークノード 2 (NN2) に接続しています。また NN2 はこの例でネットワーク階層の一番上にあるレイヤー i のネットワークノード 1 (NN1) に接続しています。ネットワークノードセットは NN1、NN2、NN4 で構成され、上位層から最下層まで階層的に示されています。

  • インスタンス 2 はネットワークノード 4 (NN4) にも接続しています。インスタンス 1 とインスタンス 2 は同じネットワークノードセット (NN1、NN2、NN4) を共有しています。

  • インスタンス 3 はネットワークノード 5 (NN5) に接続しています。NN5 は NN2 に接続しており、NN2 は NN1 に接続しています。インスタンス 3 に設定されているネットワークノードはNN1、NN2、NN5 です。

  • インスタンス 4 はネットワークノード 6 (NN6) に接続しています。このネットワークノードセットは NN1、NN3、NN6 です。

インスタンス 1、2、3 の近接性を考えると、インスタンス 1 と 2 は同じネットワークノード (NN4) に接続しているため互いに近く、インスタンス 3 は別のネットワークノード (NN5) に接続しているため遠くなります。

この図のすべてのインスタンスの近接性を考えると、インスタンス 1、2、3 はネットワークノードセットで NN2 を共有しているため、インスタンス 4 よりも互いに近くなります。

原則として、いずれかの 2 つのインスタンスに接続されているネットワークノードが同じ場合、インスタンス 1 と 2 の場合と同様に、これらのインスタンスは互いに物理的に近くなります。さらに、ネットワークノード間のホップ数が少ないほど、インスタンスは互いに近くなります。例えば、インスタンス 1 と 3 ではインスタンス 4 との共通のネットワークノード (NN1) へよりも共通のネットワークノード (NN2) への方がホップ数が少ないため、これらはインスタンス 4 よりも互いに近くなります。

この例ではネットワークノード 7 (NN7) ではインスタンスが実行されていないため、API 出力に NN7 は含まれません。

出力の解釈方法

インスタンストポロジー情報はDescribeInstanceTopology API を使用して取得します。出力ではインスタンスの基盤となるネットワークトポロジーが階層的に示されます。

次の出力例は上の図にある 4 つのインスタンスにおけるネットワークトポロジーの情報に対応します。この例のため、出力例にはコメントが含まれています。

出力に含まれる次の情報に注意してください。

  • NetworkNodes ではインスタンスのネットワークノードセットについて記述されます。

  • 各ネットワークノードセットではネットワークノードは上から下に階層的に一覧表示されます。

  • インスタンスに接続されているネットワークノードは一覧にある最後のネットワークノード (最下層) です。

  • 互いに近いインスタンスを調べるにはまず、最下層にある共通のネットワークノードを見つけます。最下層に共通のネットワークノードがない場合、上位層で共通のネットワークノードを探します。

次の出力例で i-1111111111examplei-2222222222example は最下層に共通のネットワークノード nn-4444444444example があるため、この例における他のインスタンスと比較して互いに最も近い位置にあります。

注記

レスポンスには 3 つ以上のネットワークノードが含まれます。サポートされている各インスタンスタイプのレスポンスにあるネットワークノードの数については、「インスタンスのタイプ」を参照してください。

{ "Instances": [ { "InstanceId": "i-1111111111example", //Corresponds to instance 1 "InstanceType": "p4d.24xlarge", "GroupName": "ML-group", "NetworkNodes": [ "nn-1111111111example", //Corresponds to NN1 in layer i "nn-2222222222example", //Corresponds to NN2 in layer ii "nn-4444444444example" //Corresponds to NN4 in layer iii - bottom layer, connected to the instance ], "CapacityBlockId": "null", "ZoneId": "usw2-az2", "AvailabilityZone": "us-west-2a" }, { "InstanceId": "i-2222222222example", //Corresponds to instance 2 "InstanceType": "p4d.24xlarge", "NetworkNodes": [ "nn-1111111111example", //Corresponds to NN1 - layer i "nn-2222222222example", //Corresponds to NN2 - layer ii "nn-4444444444example" //Corresponds to NN4 - layer iii - connected to instance ], "CapacityBlockId": "null", "ZoneId": "usw2-az2", "AvailabilityZone": "us-west-2a" }, { "InstanceId": "i-3333333333example", //Corresponds to instance 3 "InstanceType": "trn1.32xlarge", "NetworkNodes": [ "nn-1111111111example", //Corresponds to NN1 - layer i "nn-2222222222example", //Corresponds to NN2 - layer ii "nn-5555555555example" //Corresponds to NN5 - layer iii - connected to instance ], "CapacityBlockId": "null", "ZoneId": "usw2-az2", "AvailabilityZone": "us-west-2a" }, { "InstanceId": "i-444444444example", //Corresponds to instance 4 "InstanceType": "trn1.2xlarge", "NetworkNodes": [ "nn-1111111111example", //Corresponds to NN1 - layer i "nn-3333333333example", //Corresponds to NN3 - layer ii "nn-6666666666example" //Corresponds to NN6 - layer iii - connected to instance ], "CapacityBlockId": "null", "ZoneId": "usw2-az2", "AvailabilityZone": "us-west-2a" } ], "NextToken": "SomeEncryptedToken" }