채록채록
[AWSCloudClubs] Elastic IPs, EC2 Placement Groups, Elastic Network Interfaces, ENI, EC2 모드 본문
Cloud Computing
[AWSCloudClubs] Elastic IPs, EC2 Placement Groups, Elastic Network Interfaces, ENI, EC2 모드
김책은 2024. 9. 18. 17:53막간을 이용한 네트워크 복습을 할 수 있어 유익했다.
또, 단순히 AWS ui를 학습하는 것같은.. 수준이 아니라
좀 더 '컴퓨팅'에 집중하여 공부를 하니 CS 지식에 대한 이해도가 올라갈 수 있는 것 같다.
Private vs Public IP (IPv4)
- 기본적으로 EC2 기기는 내부 AWS 네트워크에선 사설 IP를 사용하고, WWW에선 공용 ip를 사용한다.
- EC2 기기에 ssh를 할 땐 사설 ip를 쓸 수 없다. VPN을 쓰지 않는 이상 같은 네트워크에 있는 게 아니기 때문이다. VPN이 없다면 공용 ip만 사용할 수 있다.
- 공용 ip를 사용하면 공용망(인터넷)에서 AWS에 엑세스 할 수 있다.
기기가 사설 네트워크에 있을 때, NAT + proxy역할을 할 internet gateway 를 통해 WWW(internet)에 연결된다.
Elastic IPs
- fixed public IP for instance
Elastic IP address는 한 인스턴스에서 다른 인스턴스로 빠르게 이동함으로써 인스턴스 또는 소프트웨어의 오류를 마스킹할 때 사용할 수 있지만 이런 일은 드물다.
- 계정당 5개만 쓸 수 있다.
- 근데 추천안함. poor architectureal decisions로 이어질 수 있다.
- 대신 임의의 공용 ip를 써서 DNS 이름을 할당하는 것이 좋다.
- 더 많은 제어 / 확장 가능성
- 로드밸런서를 사용해서 공용 ip를 전혀 사용하지 않을 수도 있다.
EC2 Placement Groups(EC2 배치 그룹)
- EC2 인스턴스가 AWS 인프라에 배치되는 방식을 제어하고자 할 때 쓴다.
- AWS의 하드웨어와 직접적인 상호작용을 하지는 않지만 EC2 인스턴스가 각각 어떻게 배치되기를 원하는지 AWS에 알려주는 것
- Cluster : 단일 AZ 내에서 지연 시간이 짧은 (low-latency) 하드웨어 설정으로 인스턴스를 그룹화
- 모든 EC2 인스턴스가 동일한 AZ에 있으면서 10Gbps의 대역폭을 확보하여 지연시간이 짧고 처리량이 많은 네트워킹을 한다.
- 단점 : AZ에 장애가 발생하면 모든 인스턴스가 장애 발생
- ex : 빅데이터 작업, 애플리케이션의 각 인스턴스 간 지연시간이 짧고 많은 네트워크가 필요한 애플리케이션
- Spread : 인스턴스가 다른 하드웨어에 분산된다는 의미
- critical application이 있는 경우 사용한다.
- 인스턴스 오류를 서로 격리하여 가용성 극대화, 위험 최소화해야하는 애플리케이션
- 여러 AZ에 걸쳐있고, 하드웨어가 다르기 때문에 동시 실패 위험을 최소화하기 때문이다.
- 단점 : 배치 그룹 규모에 제한 : 7 instances per group per AZ
- critical application이 있는 경우 사용한다.
- Partition : 여러 파티션에 인스턴스가 분산.
- 파티션은 AZ 내의 다양한 하드웨어 랙 세트에 의존한다. 즉, 각 파티션은 AWS의 랙을 나타낸다.
- 설정으로 수백개의 EC2 인스턴스를 얻을 수 있다.
- 여전히 분산되어있지만 다른 실패로부터 격리되지 않았다.
- 하지만 파티션은 다른 오류 파티션과 격리되어야 한다.
- 하드웨어 물리적 랙을 공유하지 않으므로 각 실패로부터 격리된다.
- 파티션들 전반에 걸쳐 데이터와 서버를 퍼뜨려 두도록 파티션 인식 가능한 애플리케이션의 경우에 사용
- ex : HDFS, HBase, Kafka, Cassandra
Elastic Network Interfaces (ENI)
- VPC의 논리적 구성요소, 가상 네트워크 카드
- EC2 인스턴스가 네트워크에 엑세스할 수 있게 해준다.
- Primary private IPv4 + 하나 이상의 Secondary IPv4를 가질 수 있다.
- EC2에 보조 ENI를 얼마든지 추가할 수 있는 것.
- private & public IP가 한 개씩 제공된다.
- 각 ENI는 private IPv4당 elastic IPv4를 갖거나 / 하나의 public IPv4를 가질 수 있다.
- 하나 이상의 보안 그룹을 연결할 수 있다.
- Mac 주소 외 기타 등등을 연결할 수도 있다.
- EC2 인스턴스와 독립적으로 (내가 제어할 수 있는) ENI를 생성하고 즉시 연결하거나 / 장애조치를 위해 EC2 인스턴스에서 이동시킬 수 있다.
- ex : 같은 애플리케이션을 가동 중인 EC2 인스턴스가 두 개 있을 때 private ipv4를 통해 다른 인스턴스로 엑세스하려면 ENI를 다른 쪽으로 옮겨주면 된다.
- ex : 사설 정적 ip로 EC2 인스턴스에 엑세스 하는 경우의 네트워크 장애 조치 : 문제가 생긴 EC2 인스턴스로부터 다른 EC2 인스턴스로 Eth1을 옮겨서 사설 IP를 이동시킬 수 있다.
- 특정 AZ에 바인딩 된다.
EC2 모드
- Stop : 디스크 데이터(EBS)는 다시 시작할 때까지 그대로 유지된다.
- Terminate : 루트 볼륨이 삭제되게 했다면 인스턴스도 삭제된다. 하지만 그렇게 설정하지 않은 다른 볼륨은 인스턴스가 종료되더라도 그대로 남는다.
- Start : 운영체제가 먼저 부팅되고 → EC2 user data script도 실행되고 → 운영체제 부팅 완료 → 애플리케이션 실행 / 캐시 구성 등등
- Hibernate : RAM에 있던 인메모리 state는 그대로 유지 = 인스턴스 부팅이 빠르다
- os를 완전히 중지하거나 재시작하지 않고 그대로 멈춰두었기 때문
- RAM에 기록되었던 인메모리 state는 루트 경로의 EBS 볼륨에 기록되기 때문이다. 즉, RAM의 내용이 EBS 볼륨에 dump되는 것.
- 루트 EBS 볼륨은 암호화되어야하고, 용량도 충분해야한다.
- 그리고 다시 시작되면 디스크에서 RAM을 불러와 EC2 인스턴스 메모리로 가져간다.
- ex : 오래 실행되는 프로세스를 가지고 있는데 stop하고 싶진 않을 때 / RAM 상태를 저장하고 싶을 때 / 빠르게 재부팅을 하고 싶을 때 / 서비스 초기화가 시간을 많이 잡아먹을 때
오답노트
Q. EC2 인스턴스 플릿에 호스팅된 중요 애플리케이션이 있습니다. 이 애플리케이션에서 AZ 실패가 일어난 경우, 최대 가용성을 달성했으면 합니다. 이런 경우, 다음 중 어떤 EC2 배치 그룹을 선택해야 할까요?
A. 분산 배치 그룹
→ 분산 배치 그룹은 EC2 인스턴스를 여러 AZ에 걸쳐 서로 다른 물리적 하드웨어에 배치한다.
→ 이 경우, 분할 배치 그룹은 적합하지 않다. EC2 인스턴스들이 파티션으로 묶이게 되며, 서로 다른 물리적 하드웨어에 걸쳐 분배되기 때문이다.
→ 즉, 이 문제는 EC2 인스턴스들 간의 연결성과 관련된 문제가 아니기 때문이다.