Amazon EC2 토폴로지의 동작 방식
Amazon EC2 토폴로지의 동작 방식
AWS 네트워크는 계층(layer)의 계층 구조로 배열돼요. EC2 인스턴스는 인스턴스 유형에 따라 네트워크의 3번째 계층 또는 그 아래에서 네트워크에 연결돼요. 이 절에서 EC2 토폴로지와 DescribeInstanceTopology, DescribeCapacityReservationTopology API 출력을 해석하는 방법을 살펴볼게요.
출처: 문서
본문
AWS 네트워크는 계층의 계층 구조로 배열돼요. EC2 인스턴스는 인스턴스 유형에 따라 네트워크의 3번째 계층 또는 그 아래에서 네트워크에 연결돼요. 인스턴스의 토폴로지는 네트워크의 각 계층에 하나씩 있는 일련의 노드로 설명돼요. DescribeInstanceTopology 또는 DescribeCapacityReservationTopology API 응답의 노드 집합은 네트워크 계층 구조의 하향식(top-down) 뷰를 제공하며, 맨 아래 노드가 인스턴스에 연결돼요.
참고
일부 인스턴스 유형은 네트워크의 4개 계층을 나타내는 4개의 네트워크 노드를 노드 집합으로 구성하고, 다른 유형은 네트워크의 3개 계층을 나타내는 3개의 네트워크 노드를 구성해요. 지원되는 인스턴스 유형은 Instance types를 참고하세요.
Capacity Reservation의 유형에 따라 네트워크 노드를 1개, 2개, 또는 3개만 볼 수 있어요.
다음 다이어그램은 EC2 토폴로지를 이해하는 데 사용할 수 있는 시각적 표현이에요. 네트워크 노드는 NN1 – NN7로 식별돼요. 숫자 i, ii, iii는 네트워크 계층을 식별해요. 숫자 1, 2, 3, 4는 EC2 인스턴스를 식별해요. 인스턴스는 다음 다이어그램에서 iii로 식별되는 맨 아래 계층의 노드에 연결돼요. 여러 인스턴스가 같은 노드에 연결될 수 있어요.
이 예시에서:
- Instance 1은 계층 iii의 네트워크 노드 4(NN4)에 연결돼요. NN4는 계층 ii의 네트워크 노드 2(NN2)에 연결되고, NN2는 이 예시에서 네트워크 계층 구조의 최상위인 계층 i의 네트워크 노드 1(NN1)에 연결돼요. 네트워크 노드 집합은 NN1, NN2, NN4로 구성되며, 상위 계층에서 맨 아래 계층으로 계층적으로 표현돼요.
- Instance 2도 네트워크 노드 4(NN4)에 연결돼요. Instance 1과 Instance 2는 같은 네트워크 노드 집합(NN1, NN2, NN4)을 공유해요.
- Instance 3은 네트워크 노드 5(NN5)에 연결돼요. NN5는 NN2에 연결되고, NN2는 NN1에 연결돼요. Instance 3의 네트워크 노드 집합은 NN1, NN2, NN5예요.
- Instance 4는 네트워크 노드 6(NN6)에 연결돼요. 그 네트워크 노드 집합은 NN1, NN3, NN6이에요.
인스턴스 1, 2, 3의 근접성을 고려하면, 인스턴스 1과 2는 같은 네트워크 노드(NN4)에 연결되므로 서로 더 가깝고, 인스턴스 3은 다른 네트워크 노드(NN5)에 연결되므로 더 멀어요.
이 다이어그램의 모든 인스턴스의 근접성을 고려하면, 인스턴스 1, 2, 3은 네트워크 노드 집합에서 NN2를 공유하므로 인스턴스 4보다 서로 더 가깝습니다.
일반 규칙으로, 두 인스턴스에 연결된 네트워크 노드가 같으면 그 인스턴스들은 물리적으로 서로 가까워요(인스턴스 1과 2의 경우처럼). 또한 네트워크 노드 사이의 홉(hop) 수가 적을수록 인스턴스들이 서로 더 가까워져요. 예를 들어 인스턴스 1과 3은 인스턴스 4와 공통인 네트워크 노드(NN1)보다 공통 네트워크 노드(NN2)까지 홉이 적으므로, 서로가 인스턴스 4보다 가까워요.
이 예시에서 네트워크 노드 7(NN7) 아래에는 실행 중인 인스턴스가 없으므로 API 출력에 NN7이 포함되지 않아요.
DescribeInstanceTopology 출력 해석하기
DescribeInstanceTopology API로 인스턴스 토폴로지를 설명할 수 있어요. 출력은 인스턴스의 기본 네트워크 토폴로지에 대한 계층적 뷰를 제공해요.
다음 예시 출력은 앞 다이어그램의 네 개 인스턴스의 네트워크 토폴로지 정보에 해당해요. 이 예시를 위해 예시 출력에 주석이 포함되어 있어요.
출력에서 주의할 정보는 다음과 같아요:
NetworkNodes는 단일 인스턴스의 네트워크 노드 집합을 설명해요.- 각 네트워크 노드 집합에서 네트워크 노드는 위에서 아래로 계층 순서로 나열돼요.
- 인스턴스에 연결된 네트워크 노드는 목록의 마지막 네트워크 노드(맨 아래 계층)예요.
- 어떤 인스턴스들이 서로 가까운지 알아내려면 먼저 맨 아래 계층에서 공통 네트워크 노드를 찾아요. 맨 아래 계층에 공통 네트워크 노드가 없다면 상위 계층에서 공통 네트워크 노드를 찾아요.
다음 예시 출력에서 i-1111111111example과 i-2222222222example은 맨 아래 계층에서 nn-4444444444example 네트워크 노드를 공통으로 가지므로, 이 예시에서 다른 인스턴스들보다 서로 가장 가깝게 위치해요.
참고
응답에는 네트워크 노드가 3개 이상 포함돼요. 각 지원 인스턴스 유형의 응답에서 네트워크 노드 수에 대한 정보는 Instance types를 참고하세요.
{
"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"
}
DescribeCapacityReservationTopology 출력 해석하기
DescribeCapacityReservationTopology API로 Capacity Reservation 토폴로지를 설명할 수 있어요. 출력은 예약된 용량의 기본 네트워크 토폴로지에 대한 계층적 뷰를 제공해요.
다음 예시 출력은 앞 다이어그램의 네트워크 토폴로지 정보에 해당해요. 이 예시를 위해 예시 출력에 주석이 포함되어 있어요.
출력에서 주의할 정보는 다음과 같아요:
NetworkNodes는 단일 Capacity Reservation의 네트워크 노드 집합을 설명해요.- 각 네트워크 노드 집합에서 네트워크 노드는 위에서 아래로 계층 순서로 나열돼요.
- Capacity Reservation에 연결된 네트워크 노드는 목록의 마지막 네트워크 노드(맨 아래 계층)예요.
- Capacity Reservations가 서로 가까울지 알아내려면 먼저 출력의 맨 아래 계층에서 공통 네트워크 노드를 찾아요. 맨 아래 계층에 공통 네트워크 노드가 없다면 상위 계층에서 공통 네트워크 노드를 찾아요.
다음 예시 출력에서 cr-1111111111example은 nn-2222222222example에, cr-2222222222example은 nn-3333333333example에 위치해요. Capacity Reservations가 계층 ii의 다른 네트워크 노드에 있으므로, 한 Capacity Reservation의 인스턴스에서 다른 Capacity Reservation의 인스턴스로의 통신은 비효율적이에요.
참고
응답에는 Capacity Reservation의 유형에 따라 네트워크 노드가 1개, 2개, 또는 3개 포함돼요.
{
"CapacityReservations": [
{
"CapacityReservationId": "cr-1111111111example",
"CapacityBlockId": "null",
"State": "active",
"InstanceType": "p4d.24xlarge",
"NetworkNodes": [
"nn-1111111111example", //Corresponds to NN1 - layer i
"nn-2222222222example" //Corresponds to NN2 - layer ii
// Visibility of additional nodes requires an instance launch and
// the DescribeInstanceTopology API
],
"AvailabilityZone": "us-west-2a"
},
{
"CapacityReservationId": "cr-2222222222example",
"CapacityBlockId": "null",
"State": "active",
"InstanceType": "trn1.2xlarge",
"NetworkNodes": [
"nn-1111111111example", //Corresponds to NN1 - layer i
"nn-3333333333example" //Corresponds to NN3 - layer ii
// Visibility of additional nodes requires an instance launch and
// the DescribeInstanceTopology API
],
"AvailabilityZone": "us-west-2a"
}
],
"NextToken": "SomeEncryptedToken"
}
DescribeInstanceTopology와 DescribeCapacityReservationTopology의 차이
다음 표는 DescribeInstanceTopology와 DescribeCapacityReservationTopology API의 주요 차이를 비교해요.
| 비교 포인트 | DescribeInstanceTopology | DescribeCapacityReservationTopology |
|---|---|---|
| 사용 단계 | 시작 후(실행 모드) | 시작 전(계획·관리 모드) |
| 주요 목적 | 실행 중인 인스턴스의 워크로드 최적화 | 인스턴스 시작 전 용량 계획과 Capacity Reservation 관리(병합, 분할, 할당) |
| 네트워크 노드 수 | 실행 중인 인스턴스의 모든 노드를 보여줘요. 인스턴스가 Capacity Reservation에 있으면 먼저 해당 Capacity Reservation 토폴로지와 일치하는 노드, 그 다음 인스턴스에 연결하는 추가 노드가 나와요. | Capacity Reservation 상태(pending 또는 active)·유형에 따라 달라지는 부분 노드 집합을 보여줘요.* |
| 상태 | 인스턴스가 running 상태여야 해요 | Capacity Reservations가 pending 또는 active 상태여야 해요 |
| 사용 사례 | 워크로드 최적화, 성능 튜닝, 런타임 토폴로지 분석 | 용량 계획, Capacity Reservation 관리(병합/분할/할당), 시작 전 토폴로지 평가 |
- UltraServers용 Capacity Blocks의 경우, 활성 Capacity Reservation 또는 실행 중인 인스턴스의 토폴로지를 설명할 때 네트워크 노드 집합은 같아요.