Amazon EC2 インスタンストポロジーの仕組み
すべての EC2 インスタンスは 1 つのノードセットに接続します。ノードセットは 3 つのネットワークノードで構成され、各ノードは AWS ネットワーク内の異なるレイヤーを表します。ネットワークレイヤーは 3 つ以上のレイヤーの階層に配置されています。ノードセットでは、この階層のトップダウンビューが示され、最下層のレイヤーがインスタンスに最も近く接続されています。
ノードセットに関する情報はインスタンストポロジーと呼ばれます。
次の図は、インスタンストポロジーを視覚的に表しており、インスタンストポロジーの理解に役立ちます。ネットワークノードは NN1~NN7 として示されます。数字 i、ii、iii は、ネットワークレイヤーを示しています。数字 1、2、3、4 は、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-1111111111example
と i-2222222222example
は、最下層に共通のネットワークノード nn-4444444444example
があるため、この例における他のインスタンスと比較して互いに最も近い位置にあります。
{
"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
],
"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
],
"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
],
"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
],
"ZoneId": "usw2-az2",
"AvailabilityZone": "us-west-2a"
}
],
"NextToken": "SomeEncryptedToken"
}