참고 자료
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/
1. Private vs Public IP (IPv4)
네트워크는 IPv4, IPv6의 두 가지 유형의 IP가 있다.
- IPv4: 1.160.10.240
- 온라인에서 가장 일반적으로 사용되는 형식.
- 공용 공간에서 37억 개의 서로 다른 주소를 허용한다. 하지만 거의 고갈되어 가고 있음.
- [0-255].[0-255].[0-255].[0-255]
- IPv6: 3ff3:1900:4545:3:200:f8ff:fe21:67cf
- 사물 인터넷(IoT)에 대한 문제를 해결하기 위해 새로 나온 기술.
🧐 Fundamental Differences
Public IP:
- 인터넷(WWW)상에서 기기가 식별될 수 있음.
- 전체 웹에서 고유해야 함. (두 기기가 동일한 공용 IP를 가질 수 없음.)
- 지리적 위치를 쉽게 식별할 수 있음.
Private IP:
- 기기가 프라이빗 네트워크에서만 식별될 수 있음.
- IP는 프라이빗 네트워크 안에서만 고유하면 됨.
- 두 개의 다른 회사는 같은 프라이빗 IP를 가질 수 있음.
- 기기가 프라이빗 네트워크에 있을 때에는, NAT와 인터넷 게이트웨이(프록시)를 사용하여 인터넷(WWW)에 연결.
- 지정된 범위의 IP만 프라이빗 IP로 사용될 수 있음.
💡 Elastic IPs
- EC2 인스턴스를 중지하고 다시 시작하면, 해당 인스턴스의 퍼블릭 IP가 변경될 수 있음.
- 인스턴스에 고정된 퍼블릭 IP가 필요한 경우, 탄력적 IP가 필요.
- 탄력적 IP는 삭제하지 않는 한 사용자가 소유하고 있는 퍼블릭 IPv4.
- 한 번에 하나의 인스턴스에만 탄력적 IP를 연결 가능.
- 탄력적 IP 주소를 사용하면 인스턴스나 소프트웨어의 오류를 빠르게 대처하여 주소를 계정 내 다른 인스턴스에 빠르게 다시 매핑할 수 있음.
- 계정당 5개의 탄력적 IP만 사용할 수 있음. (요청시 AWS에서 늘릴 수 있음)
- 일반적으로 탄력적 IP 사용을 피하는 것이 좋음.
- 매우 좋지 않은 구조적 결정으로 종종 언급되곤 함.
- 대신 임의의 퍼블릭 IP를 써서 DNS 이름을 할당하는 것이 좋음.
- 또는 로드 밸런서를 사용하여 퍼블릭 IP를 전혀 사용하지 않을 수도 있음.
🎈 Private vs Public IP In AWS EC2
- 기본값으로 EC2 인스턴스는 다음과 같이 제공된다.
- 내부 AWS 네트워크를 위한 프라이빗 IP
- 인터넷(WWW)를 위한 퍼블릭 IP
- EC2 인스턴스로 SSH로 접속할 때
- 같은 네트워크에 있지 않기 때문에 프라이빗 IP를 사용할 수 없음.
- 퍼블릭 IP만 사용할 수 있음.
- 인스턴스가 중지되고 다시 시작되면 퍼블릭 IP가 변경될 수 있다.
2. Placement Groups
때로는 EC2 인스턴스가 AWS 인프라에 배치되는 방식을 직접 제어하고 싶을 때가 있을 것이다. 배치 그룹을 사용하여 이러한 전략을 정의할 수 있다.
배치 그룹을 만들 때 세 가지 전략을 사용할 수 있다.
- 클러스터(Cluster): 단일 가용 영역 내에서 지연 시간이 짧은 하드웨어 설정으로 인스턴스를 그룹화.
- 분산(Spread): 인스턴스를 다른 하드웨어에 분산 시킨다. (AZ당 최대 7개의 인스턴스 그룹)
- 파티션(Partition): 분산 배치 그룹과 비슷하게 인스턴스를 분산하려는 것. 하나의 가용 영역 내에 다양한 파티션(다양한 하드웨어 랙 세트)에 인스턴스를 분산시킨다. EC2 인스턴스 그룹 당 수백 개의 인스턴스로 확장 가능 (Hadoop, Cassandra, Kafka).
- 배치 그룹 내 두 파티션이 동일한 랙을 공유하지 않으므로 애플리케이션 내 하드웨어 장애의 영향을 격리시킬 수 있다.
🪢 Cluster placement groups
모든 EC2 인스턴스가 동일한 랙에 있다. 즉 동일한 하드웨어와 동일한 가용 영역에 있다는 것이다.
- 장점: 우수한 네트워크 (인스턴스 간 10 Gbps 대역폭)
- 단점: 랙에 실패가 발생하면(하드웨어에 실패가 발생하면) 모든 EC2 인스턴스가 동시에 실패한다.
- 사용 사례:
- 빅데이터 작업을 빠르게 완료해야하는 경우
- 극도로 낮은 지연 시간과 높은 네트워크 처리량에 필요한 애플리케이션
🍞 Spread placement groups
실패 위험을 최소화하려고 함. 모든 EC2 인스턴스가 다른 하드웨어에 위치하게 된다. 아래의 그림을 보면, 3개의 가용 영역과 6개의 EC2가 있고, 각 EC2 인스턴스는 서로 다른 하드웨어에 있다.
- 장점:
- 여러 가용 영역을 걸쳐 생성 가능.
- 동시 실패 위험 감소.
- EC2 인스턴스는 서로 다른 물리적 하드웨어에 있음.
- 단점: 하나의 배치 그룹당 AZ별 7개의 인스턴스로 제한됨. (배치 그룹의 규모에 제한이 있음)
- 사용 사례:
- 고가용성을 극대화해야 하는 애플리케이션
- 각 인스턴스가 서로의 장애로부터 격리되어야 하는 중요한 애플리케이션
🗄️ Partition placement groups
각 파티션은 AWS의 랙을 나타낸다. 파티션이 많으면 인스턴스가 여러 하드웨어 랙에 분산되어 서로 랙 실패로부터 안전하다.
- 각 AZ 당 최대 7개의 파티션 사용 가능.
- 같은 리전의 여러 가용 영역에 걸쳐있을 수 있음.
- 최대 100대 EC2 인스턴스 사용 가능.
- 파티션 내 인스턴스는 다른 파티션 내 인스턴스와 랙을 공유하지 않음.
- 파티션 장애는 많은 EC2 인스턴스에 영향을 미칠 수 있지만 다른 파티션에는 영향을 미치지 않음.
- EC2 인스턴스는 메타데이터를 통해 파티션 정보에 액세스할 수 있음.
- 사용 사례: HDFS, HBase, Cassandra, Kafka
3. Elastic Network Interfaces (ENI)
ENI: 탄력적 네트워크 인터페이스. EC2 인스턴스게 네트워크에 액세스할 수 있게 해줌.
- 가상 네트워크 카드를 나타내는 VPC의 논리적 구성 요소.
- ENI는 다음과 같은 속성이 포함될 수 있다:
- VPC의 IPv4 주소 범위 중 기본 프라이빗 IPv4 주소
- VPC의 IPv4 주소 범위 중 하나 이상의 보조 프라이빗 IPv4 주소
- 프라이빗 IPv4 주소당 한 개의 탄력적 IP 주소 (IPv4)
- 한 개의 퍼블릭 IPv4 주소
- 한 개 이상의 IPv6 주소
- 하나 이상의 보안 그룹
- MAC 주소
- EC2 인스턴스와 독립적으로 ENI를 독립적으로 생성하고 즉시 연결하거나, 장애 조치를 위해 ENI를 EC2 인스턴스에서 이동시킬 수 있다.
- 특정 가용 영역에 바인딩된다. 즉 다른 AZ에 있는 EC2 인스턴스에 ENI를 연결할 수는 없다.
참고하면 좋은 자료: https://aws.amazon.com/blogs/aws/new-elastic-network-interfaces-in-the-virtual-private-cloud/
4. EC2 Hibernate (최대 절전 모드)
우리는 인스턴스를 중지하거나 종료할 수 있다는 것을 안다.
- Stop – the data on disk (EBS) is kept intact in the next start
- Terminate – any EBS volumes (root) also set-up to be destroyed is lost
인스턴스를 다시 시작하면 아래와 같은 일들이 발생한다.
- 운영 체제가 부팅되고 EC2 사용자 데이터 스크립트가 실행된다.
- 운영체제 부팅이 왼료되고, 애플리케이션도 실행되고 캐시도 구성되기 시작하므로 과정이 끝날 때까지 시간이 다소 걸린다.
그렇다면 EC2 최대 절전 모드는 무엇일까?
🔎 EC2 Hibernate
- RAM에 있던 인메모리 상태는 그대로 보존된다.
- 인스턴스 부팅 속도가 빨라진다. (OS를 완전히 중지 / 재시작하지 않는다.)
- 내부 동작: RAM에 기록되었던 인메모리 상태는 루트 경로의 EBS 볼륨에 기록된다. 따라서 루트 EBS 볼륨은 암호화되어야 한다.
- 사용 사례:
- 긴 실행 프로세스
- RAM 상태 저장
- 초기화에 시간이 오래 걸리는 서비스
👍 EC2 Hibernation - Good to know
- Supported Instance Families: C3, C4, C5, I3, M3, M4, R3, R4, T2, T3 등
- Instance RAM Size: 최대 150GB
- Instance Size: 베어 메탈 인스턴스는 지원하지 않음
- AMI: Amazon Linux 2, Linux AMI, Ubuntu, RHEL, CentOS 및 Windows 등
- Root Volume: EBS 볼륨이어야 하며, 암호화되어 있어야 한다. (인스턴스 스토어 볼륨 ❌)
- On-Demand, Reserved, Spot 인스턴스에서 사용 가능
- 절전 모드는 최대 60일까지 사용할 수 있음