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 는 옮길 수 없다는 점이 다를 뿐
ENI 를 삭제하려면 분리(detach) 상태여야 하는데, primary ENI 는 분리조차 할 수 없다.
물론 삭제도 못하지
ENI 의 특징은 다음과 같다
ENI 1개는 = 1개의 EIP = 1개의 Public IP = 1개의 MAC addess <= 1개 Security Group
AZ내에 다른 EC2로 이동 가능
아래의 그림을 보면 ENI 를 어떻게 활용할 수 있는지 알 수 있다.
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이 나오면 다시 다루게 될 내용이긴하지만, 습관적으로 논외로 둬보자
'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 |