Skip to main content

EC2 심화

Private IP vs Public IP

  • 네트워킹에는 두 가지 종류의 IP가 있습니다.

    IPv4: 1.160.10.240

    IPv6: 3ffe:1990:4545:3:200:f8ff:fe21:67cf

  • IPv4는 여전히 온라인에서 가장 많이 사용되는 형식입니다.

  • IPv6는 최신 버전이며 사물 인터넷 (IoT)문제를 해결합니다.

  • IPv4는 공개 공간에서 37억 개의 서로 다른 주소를 허용합니다.

  • IPv4: [0-255].[0-255].[0-255].[0-255]

Private vs Public IPv4 차이점

Public IP

  • 공용 IP는 컴퓨터가 인터넷 (www)에서 식별될 수 있음을 의미합니다.
  • 전체 웹에서 고유해야 합니다. (두 머신이 동일한 공용 IP를 가질 수 없음)
  • 쉽게 지리적 위치를 찾을 수 있음

Private IP

  • 사설 IP는 머신이 사설 네트워크에서만 식별될 수 있음을 의미합니다.
  • IP는 사설망 전체에서 고유해야 합니다.
  • 그러나 두 개의 서로 다른 사설 네트워크(2개 회사)가 동일한 IP를 가질 수 있습니다.
  • 시스템은 NAT + 인터넷 게이트웨이(프록시)를 사용하여 www에 연결합니다.
  • 지정된 범위의 IP만 사설 IP로 사용할 수 있습니다.
사설 IP 범위
- 큰 네트워크

10.0.0.0 - 10.255.255.255 (10.0.0.0/8)

- AWS Default VPC in that range

172.16.0.0 - 172.31.255.255 (172.16.0.0/12)

- 집 네트워크

192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

Elastic IPs

  • EC2 인스턴스를 중지했다가 시작하면 퍼블릭 IP가 변경될 수 있습니다.
  • 인스턴스에 고정 퍼블릭 IP가 필요한 경우 탄력적 IP가 필요합니다.
  • 탄력적 IP는 삭제하지 않는 한 계속 소유할 수 있습니다.
  • 한 번에 하나의 인스턴스에 연결할 수 있습니다.

Elastic IP

  • 탄력적 IP 주소를 사용하면 해당 주소를 계정의 다른 인스턴스에 빠르게 매핑하여 인스턴스 또는 소프트웨어의 오류를 마스킹할 수 있습니다.
  • 계정에는 5개의 탄력적 IP만 있을 수 있습니다. (AWS에 늘리도록 요청 가능)

전반적으로 탄력적 IP 사용을 피해야 합니다.

  • 종종 잘못된 아키텍처 결정을 반영합니다.
  • 대신 임의의 공용 IP를 사용하고 DNS 이름을 등록하세요.
  • Load Balancer를 사용하고 공개 IP를 사용하지 마세요.

Placement Group

  • EC2 인스턴스 배치 전략을 제어하고 싶은 경우 사용합니다.
  • 해당 전략은 배치 그룹을 사용하여 정의할 수 있습니다.
  • 배치 그룹을 생성할 때 그룹에 대해 다음 전략 중 하나를 지정합니다.

📖 Cluster

  • 단일 가용 영역의 지연 시간이 짧은 그룹으로 인스턴스를 클러스터링 합니다.

📖 Spread

  • 기본 하드웨어에 인스턴스를 분산합니다. (AZ당 그룹당 최대 7개의 인스턴스)

📖 Partition

  • AZ 내의 여러 파티션 (다른 랙 세트에 의존)에 인스턴스를 분산합니다. 그룹당 100개의 EC2 인스턴스로 확장
  • 하나의 파티션에 있는 인스턴스 그룹이 다른 파티션에 있는 인스턴스 그룹과 기본 하드웨어를 공유하지 않도록 논리 파티션에 인스턴스를 분산합니다.
  • Hadoop, Cassandra, Kafka와 같은 대규모 분산 및 복제 워크로드에 사용됩니다.

Cluster

AWS-SAA_advanced1

  • 장점: 뛰어난 네트워크 (향상된 네트워킹이 활성화된 인스턴스 간 10Gbps 대역폭 - 권장)
  • 단점: 랙이 실패하면 모든 인스턴스가 동시에 실패합니다.
  • 빠르게 완료해야 하는 빅데이터 작업에 용이
  • 매우 짧은 대기 시간과 높은 네트워크 처리량이 필요한 애플리케이션에 사용

Spread

AWS-SAA_advanced2

  • 장점: 가용성 전체에 걸쳐 분산, 동시 실패 위험 감소, EC2 인스턴스가 서로 다른 물리적 하드웨어에 위치
  • 단점: 배치 그룹의 가용 영역당 7개의 인스턴스로 제한
  • 고가용성을 극대화해야 하는 애플리케이션
  • 각 인스턴스가 서로의 장애로부터 격리되어야 하는 중요 애플리케이션

Partition

AWS-SAA_advanced3

  • AZ당 최대 7개의 파티션
  • 동일한 리전의 여러 가용영역에 걸쳐 있을 수 있음
  • 최대 100개의 인스턴스
  • 파티션의 인스턴스는 다른 파티션의 인스턴스와 랙을 공유하지 않습니다.
  • 파티션 오류는 많은 EC2에 영향을 줄 수 있지만 다른 파티션에는 영향을 미치지 않습니다.
  • EC2 인스턴스는 파티션 정보에 메타데이터로 액세스할 수 있습니다.
  • HDFS, HBase, Cassandra, Kafka

Elastic Network Interfaces (ENI)

AWS-SAA_advanced4

가상 네트워크 카드를 나타내는 VPC의 논리적 구성 요소 ENI는 다음과 같은 속성을 가질 수 있습니다.

  • 기본 프라이빗 IPv4, 하나 이상의 보조 IPv4
  • 비공개 IPv4당 하나의 탄력적 IP (IPv4)
  • 하나의 퍼블릭 IPv4
  • 하나 이상의 보안 그룹
  • MAC 주소
  • ENI를 독립적으로 생성하고 장애 조치를 위해 EC2 인스턴스에서 즉시 연결(이동)할 수 있습니다.
  • 특정 가용 영역(AZ)에 바인딩

EC2 Hibernate (절전모드)

인스턴스를 중지, 종료할 수 있습니다.

중지 - 디스크의 데이터(EBS)는 다음 시작 시 그대로 유지됩니다.
실행 중인 EC2 인스턴스를 중지시키면 인스턴스는 정상적인 종료 프로세스를 수행한 다음 중지 상태로 전환됩니다. 인스턴스를 중지해도 연결된 Amazon EBS 볼륨은 그대로 유지됩니다.
종료 - 또한 폐기되도록 모든 EBS 볼륨(루트)이 손실됩니다.
반면 인스턴스를 종료하면 중지와 마찬가지로 정상적인 종료 프로세스를 수행한 다음 종료 상태로 전환되지만 볼륨의 deleteOnTermination 특성이 False로 설정되어 있지 않다면 연결되어 있는 Amazon EBS 볼륨 또한 함께 삭제됩니다.

인스턴스 시작 시 다음과 같은 동작이 발생합니다.

  • 인스턴스 첫 번째 시작시 OS가 부팅되고 EC2 사용자 데이터 스크립트 실행
  • 이후 시작할 때 OS가 부팅되고 응용 프로그램이 시작되며 캐시가 예열되기까지 시간이 소요됩니다.

AWS-SAA_advanced5

  • 인메모리(RAM) 상태 유지
  • 인스턴스 부팅이 훨씬 빠릅니다. (OS가 중지 / 재시작되지 않음)
  • 내부: RAM 상태가 루트 EBS 볼륨의 파일에 기록됩니다. 루트 EBS 볼륨은 암호화되어야 합니다.
  • 장기 실행 처리
  • RAM 상태 저장
  • 초기화에 시간이 걸리는 서비스

EC2 Hibernate 요약

지원되는 인스턴스 제품군 - C3, C4, C5, I3, M3, M4, R3, R4, T2, T3, ...

  • 인스턴스 RAM 크기 - 150GB 미만이어야 합니다.
  • 인스턴스 크기 - 베어메탈 인스턴스에는 지원되지 않습니다.
  • AMI - Amazon Linux 2, Linux AMI, Ubuntu, RHEL, CentOS 및 Windows, ...
  • 루트 볼륨 - EBS로 암호화되어야 하며 인스턴스 스토어가 아니어야 하며 대용량이어야 합니다.
  • 온디맨드, 예약 및 스팟 인스턴스에 사용 가능
  • 인스턴스는 60일 이상 최대 절전 모드로 전환될 수 없습니다.
Hibernate 상태의 EC2 인스턴스는 Amazon EBS 루트 볼륨 메모리상의 컨텐츠 저장 정보를 날리지 않고 유지합니다. 따라서 Stopping 상태의 인스턴스를 다시 실행(Running) 상태로 전환했을 때, Hibernate 이전에 실행중이던 프로세스 정보를 빠르게 다시 불러올 수 있습니다.
인스턴스가 중지된 상태면 사용 요금이 부과되지 않지만 절전 모드는 중지중인 상태로 유지되는 개념이기 때문에 인스턴스 중지와 달리 사용 요금이 부과됩니다.

EC2 Nitro

  • 차세대 EC2 인스턴스를 위한 기본 플랫폼
  • 새로운 가상화 기술
  • 더 나은 네트워킹 옵션 (향상된 네트워킹, HPC, IPv6)
  • 고속 EBS (Nitro는 64,000 EBS )

성능향상: 더 나은 기본 보안

인스턴스 타입 예:

  • 가상화: A1, C5, C5a, C5ad, C5n, C6g, C6gd, C6gn, D3, D3en, G4, I3en, Inf1, M5, M5a, M5ad, M5d, M5dn, M5n, …
  • 베어메탈: a1.metal, c5.metal, c5d.metal, c5n.metal, c6g.metal, c6gd.metal, …

EC2 vCPU (코어 * 코어당 스레드)

AWS-SAA_advanced6

  • 하나의 CPU에서 여러 스레드를 실행할 수 있음 (멀티스레딩)
  • 각 스레드는 가상 CPU(vCPU)로 표시

Ex: m5.2xlarge

  • 코어: 4CPU
  • 코어당 스레드: 2 threads per CPU
  • 8 vCPU in total

CPU 최적화 옵션

AWS-SAA_advanced7

  • EC2 인스턴스는 RAM과 vCPU의 조합과 함께 제공됩니다.
  • 그러나 경우에 따라 vCPU 옵션을 변경해야 할 수 있습니다.
  • CPU 코어 수: 줄일 수 있습니다. (높은 RAM과 적은 수의 CPU가 필요한 경우 유용) - 라이선스 비용 절감
  • 코어당 스레드 수: CPU당 1개의 스레드를 갖도록 멀티스레딩 비활성화 - 고성능 컴퓨팅(HPC) 워크로드에 유용

인스턴스 시작 중에만 수정 및 변경 가능

EC2 용량 예약

AWS-SAA_advanced8

  • 용량 예약을 통해 필요할 때 EC2 용량 확보
  • 예약에 대한 수동 또는 계획된 종료 날짜
  • 1년 또는 3년 약정 불필요
  • 용량 액세스는 즉시 이루어지며 시작되는 즉시 비용이 청구됩니다.
  • 예약 인스턴스 및 Saving Plans와 결합하여 비용 절감
  • 스팟 블록 인스턴스를 사용하면 한 세트의 EC2 인스턴스를 지정된 기간(1 ~ 6시간)동안 중단 없이 예약할 수 있습니다.
지정 옵션
- 용량을 예약할 가용영역
- 용량을 예약할 인스턴스 수
- 인스턴스 유형, 테넌시 및 플랫폼 / OS를 포함한 인스턴스 속성