Elastic Fabric Adapter 만들어 EC2 인스턴스에 연결하기

Elastic Fabric Adapter 만들어 EC2 인스턴스에 연결하기 (Create and attach an Elastic Fabric Adapter to an Amazon EC2 instance)

EFA를 만들어 Amazon EC2 인스턴스에 연결할 수 있어요. 다만 다른 탄력적 네트워크 인터페이스와 달리 EFA는 running 상태의 인스턴스에 연결하거나 분리할 수 없어요.

출처: 문서

본문

고려 사항:

  • EFA와 연결된 보안 그룹을 변경할 수 있어요. OS 우회(OS-bypass) 기능을 활성화하려면 EFA가 보안 그룹 자체로/로부터의 모든 인바운드·아웃바운드 트래픽을 허용하는 보안 그룹의 멤버여야 해요.
  • EFA(EFA with ENA) 네트워크 인터페이스에는 탄력적 네트워크 인터페이스에 IP를 할당하는 것과 같은 방식으로 Elastic IP(IPv4)와 IPv6 주소를 할당해요. EFA-only 네트워크 인터페이스에는 IP 주소를 할당할 수 없어요.

작업:

  • EFA 만들기
  • 중지된 인스턴스에 EFA 연결
  • 인스턴스 실행 시 EFA 연결
  • 실행 템플릿에 EFA 추가

EFA 만들기

VPC의 서브넷에 EFA를 만들 수 있어요. 만든 후에는 다른 서브넷으로 이동할 수 없고, 같은 가용 영역의 중지된 인스턴스에만 연결할 수 있어요.

콘솔로 EFA 만들기:

  1. Amazon EC2 콘솔을 엽니다.
  2. 탐색 창에서 Network Interfaces를 선택하고 Create network interface를 선택해요.
  3. Description에 EFA의 설명 이름을 입력해요.
  4. Subnet에서 EFA를 만들 서브넷을 선택해요.
  5. Interface type에서 다음 중 하나를 선택해요:
    • EFA with ENA – ENA와 EFA 장치를 모두 지원하는 네트워크 인터페이스 생성
    • EFA-only – EFA 장치만 있는 네트워크 인터페이스 생성
  6. (EFA with ENA만 해당) 네트워크 인터페이스의 IP 주소와 프리픽스 할당을 구성해요. IPv4 전용 서브넷에서는 IPv4 주소·프리픽스만, IPv6 전용에서는 IPv6만, dual-stack에서는 둘 다 할당할 수 있어요. EFA-only 네트워크 인터페이스에는 IP를 할당할 수 없어요.
  7. Private IPv4 address 및/또는 IPv6 address에서 Auto-assign(자동 할당) 또는 Custom(수동 지정)을 선택해요. IPv6 주소를 할당하면 Assign primary IPv6 IP를 선택해 기본 IPv6 GUA(global unicast address)를 할당할 수 있어요.
  8. (선택) Idle connection tracking timeout 설정을 구성해요. TCP established timeout(기본 432000초, 권장 미만), UDP timeout(기본 30초), UDP stream timeout(기본 180초)을 지정할 수 있어요.
  9. Security groups에서 하나 이상의 보안 그룹을 선택해요.
  10. Create network interface를 선택해요.

AWS CLI로 EFA 만들기: create-network-interface 명령을 사용해요. --interface-type에 efa(EFA 네트워크 인터페이스) 또는 efa-only(EFA-only 네트워크 인터페이스)를 지정해요.

aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --interface-type efa \
    --description "my efa"

PowerShell로 EFA 만들기: New-EC2NetworkInterface cmdlet을 사용해요. -InterfaceType에 efa 또는 efa-only를 지정해요.

New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -InterfaceType efa `
    -Description "my efa"

중지된 인스턴스에 EFA 연결하기

stopped 상태의 지원되는 인스턴스에만 EFA를 연결할 수 있어요. running 상태의 인스턴스에는 연결할 수 없어요. 인스턴스에 네트워크 인터페이스를 연결하는 것과 같은 방식으로 EFA를 연결해요.

인스턴스 실행 시 EFA 연결하기

AWS CLI – 기존 EFA 연결: run-instances 명령을 --network-interfaces 옵션과 함께 사용해요. 기본 네트워크 인터페이스에 대해 EFA 네트워크 인터페이스와 NetworkCardIndex=0, DeviceIndex=0을 지정해요.

--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    NetworkInterfaceId=eni-1234567890abcdef0, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"

AWS CLI – 새 EFA 연결: 기본 네트워크 인터페이스에 NetworkCardIndex=0, DeviceIndex=0, InterfaceType=efa를 사용해요.

--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    InterfaceType=efa, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"

PowerShell: New-EC2Instance cmdlet을 -NetworkInterfaces 파라미터와 함께 사용해요.

$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.NetworkInterfaceId = "eni-1234567890abcdef0"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"

새 EFA를 만들려면 $networkInterface.InterfaceType = "efa"를 지정해요.

실행 템플릿에 EFA 추가하기

EFA 지원 인스턴스를 실행하는 데 필요한 구성 정보를 포함하는 실행 템플릿을 만들 수 있어요. 템플릿에 EFA와 EFA-only 네트워크 인터페이스를 모두 지정할 수 있어요. NetworkInterfaces에 연결할 EFA 네트워크 인터페이스를 지정하고, 기본 네트워크 인터페이스에 NetworkCardIndex=0, DeviceIndex=0, InterfaceType=efa를 사용해요.

실행 템플릿을 활용해 AWS Batch나 AWS ParallelCluster 같은 다른 AWS 서비스로 EFA 지원 인스턴스를 실행할 수 있어요.

더 알아보기