IT/AWS[Amazon Web Service]

[AWS] ENI

송시 2022. 6. 22. 15:18
728x90

Elastic Network Interface 라고 한다.

 

그냥 쉽게 말해 가상으로 사용하는 NIC[네트워크 인터페이스 카드] 인 셈이다.

 

과거 집에서 데스크탑을 사용하던 시절에 UTP 케이블을 꽂던 그 카드다.

 

이 카드에는 하나의 IP를 할당받을 수 있다.[물론 alias 를 통해 IP를 추가 할 수 있지만 그건 논외로 둬볼까?]

 

이 카드가 운영체제에서 인식되면 윈도우에선 "이더넷 어댑터 이더넷" 이라고 보여지고, 리눅스에선 eth0 으로 보여진다.[최근 나온 redhat 계열에선 ens 라고 하지만 그것도 논외로 둬보자]

 

IP를 하나 더 추가하거나 기존 eth0 과 다른 망에 연결이 필요할 때에는 데스크탑에 NIC 카드를 하나 더 추가하면 되는 거시였다.

 

그러면 eth1 로 올라오겠지.

 

물리 서버쪽으로 가면 NIC 카드가 2port / 4port 와 같이 멀티 포트를 지원하기에 NIC 카드 1개를 꽂는 것만으로도 eth0,eth1 의 여러 인터페이스가 인식이 된다.

 

그런데 이 ENI 는 논리적(즉 가상화)으로 NIC를 생성해주는 것이다.

 

하나를 추가 할때 마다 포트가 하나씩 증가한다.

 

최초에는 eth0 이 되는 거고, 다시 추가하면 eth1 이 된다.

 

처음에 ENI 라고 공부할때에 "NIC를 하나 더 추가해주는데, 이 녀석이 같은 AZ 내에서는 얼마든지 움직일 수 있구나,

그러면 필요에 의해 고가용성도 증가할 수 있겠군" 정도로 생각했다.

 

그래 뭐 틀린건 아니지만,

 

EC2를 만들때 최초로 생성되는 eth0 조차도 ENI 라는 사실을 다시 공부하며 알게 되었다.

 

다만 그 primary ENI 는 옮길 수 없다는 점이 다를 뿐

 

EC2를 만들었을 뿐인데 ENI 가 뙇

ENI 를 삭제하려면 분리(detach) 상태여야 하는데, primary ENI 는 분리조차 할 수 없다.

 

물론 삭제도 못하지

 

ENI 하나 추가해보았다
추가한 ENI 를 EC2에 붙였다
그러고는 EC2를 종료한다[삭제]
web EC2의 primary ENI 는 함께 삭제되지만 추가 생성한 secondary ENI는 남아 있다.

ENI 의 특징은 다음과 같다

ENI 1개는 = 1개의 EIP = 1개의 Public IP = 1개의 MAC addess <= 1개 Security Group

AZ내에 다른 EC2로 이동 가능

 

아래의 그림을 보면 ENI 를 어떻게 활용할 수 있는지 알 수 있다.

출처 AWS

1. web server EC2 에 eth0(primary ENI)는 public traffic 을 담당하고, eth1 은 private zone 에 있는 backend traffic 을 담당하게 함으로써 네트워크를 매니징 할 수 있다.

eth0 에는 0.0.0.0/0 TCP:80 만 열어주고, 고객의 on premise 위치에 있는 장비들만(172.16.0.0/16) 통해서 SSH로 접근할 수 있도록한다

 

2. 적은 비용으로 고가용성을 꾀할 수 있다. 예를 들어 DB를 사용하는 EC2에 secondary ENI 로 서비스를 하고 있었다 치자. 근데 EC2가 어떠한 이유로 장애가 발생했다면, 서비스 IP로 사용하던 secondary ENI 를 샤샥 하고 새로운 EC2[사실 새롭다기 보다는 DB복제를 수행해왔을 standby DB에 ENI를 붙이면 옮기기 위한 시간 동안의 downtime 은 발생하겠지만 그럼에도 불구하고 빠르게 서비스를 할 수 있게 된다. (우리가 보통 알고 있는 HA 솔루션들이 VIP[Service IP] 를 옮기는 형태다)

물론 여기의 포인트는 적은 비용과 다운타임 발생이다. 그게 싫으면 LB를 사용해야하고, DB서비스에 다운타임을 허용할 수 있는 업무가 아닐때에만 사용하자

 

3. dual-homed instance 라고 하는데, 정확히 이해는 못했고 이해한데로 적어본다.

eth0과 eth1 즉 primary ENI 와 secondary ENI 를 각각 서로 다른 subnet 에 둘 수 있다.

**뭔 말인고 하니 secondary ENI 를 추가 했을때에 같은 subnet 의 IP를 추가할 수도 있겠지만, 위의 그림처럼 다른 subnet 을 사용해서 IP추가가 가능하다는 의미

이렇게 동일 인스턴스가 서로 다른 subnet 을 사용하는 것을 dual-homed instance 라고 하며, 이를 통해 라우팅이라는 과정 없이 보다 빠르게 다른 subnet 으로 패킷 처리가 가능하게 된다.

뭐 위의 그림대로만 말해본다면 public 에 있는 frontend 를 EC2에서 받은 후에 private에 있는 backend 에 라우팅을 통하지 않고 패킷을 바로 보내어 처리한다는 의미로 이해됨

 

뭐 ENI 는 나중에 interface endpoint / IPsecVPN  / private link이 나오면 다시 다루게 될 내용이긴하지만, 습관적으로 논외로 둬보자

728x90

'IT > AWS[Amazon Web Service]' 카테고리의 다른 글

[AWS] NAT instance  (0) 2022.06.19
[AWS] NAT gateway  (0) 2022.06.15
[AWS] VPC public subnet  (0) 2022.06.10
[AWS] VPC 와 private subnet  (0) 2022.06.09
[AWS-network specialty] route 53 트래픽을 분석하고싶오  (0) 2022.06.08