본문 바로가기

프로그래밍/AWS Solutions Architect

AWS SAA - EC2 (2)

Private vs Public vs Elastic IP

  • 네트워크에는 두 종류의 IP가 있다. (IPv4, IPv6)

    • IPv4 : 127.0.0.1
    • IPv6 : 2001:0db8:85a3:08d3:1319:8a2e:0370:7334
  • 현재 온라인에서 가장 많이 사용하는 것은 IPv4 이다.

  • IPv6은 IoT 즉, 사물 인터넷에서 사용한다.

  • Public IP

    • 공용 IP는 기기가 인터넷 상에서 식별될 수 있음을 의미한다. (WWW)
    • 공용 IP는 전체 웹에서 유일한 것이다. 즉, 두 개 이상의 기기가 같은 공용 IP를 가질 수 없다.
  • Private IP

    • 사설 네트워크 안에서만 식별 가능
    • IP가 사설 네트워크 안에서만 유일한 것이면 된다.
    • NAT 장치와 프록시 역할을 할 인터넷 게이트웨이를 통해 인터넷에 연결된다.
    • 지정된 범위의 IP만 사설 IP로 사용될 수 있다.
  • Elastic IP

    • EC2 인스턴스를 시작하고 중지할 때 공용 IP를 바꿀 수 있다.
    • Elastic IP를 사용하면 한 인스턴스에서 다른 인스턴스로 빠르게 이동함으로써 인스턴스 또는 소프트웨어의 오류를 마스킹할 때 사용할 수 있다.
    • AWS에 개수 증가를 요청할 수는 있지만 그렇게 사용하지는 않는다.
    • 탄력적 IP는 사용하지 않는 것이 좋다.
      • 매우 좋지 않은 구조적 결정으로 언급된다.
      • 대신 임의의 공용 IP를 써서 DNS 이름을 할당하는 것이 좋다.
  • AWS EC2

    • 기본적으로 내부 AWS 네트워크엔 사설 IP를 쓰고 WWW엔 공용 IP를 사용한다.
    • EC2 기기에 SSH를 할 땐 사설 IP를 사용할 수 없다.

Placement Groups (배치 그룹)

  • EC2 인스턴스가 AWS 인프라에 배치되는 방식을 제어할 때 사용
  • AWS의 하드웨어와 직접적인 상호 작용을 하지는 않음
  • EC2 인스턴스가 각각 어떻게 배치되기를 원하는지 AWS에 알려줌

배치 그룹 전략

  • Cluster (클러스터 배치 그룹)
    • 단일 가용 영역(Availability Zone) 내에서 지연 시간이 짧은 하드웨어 설정으로 인스턴스를 그룹화
    • 높은 성능을 제공하지만 위험 또한 높음
  • Spread (분산 배치 그룹)
    • 인스턴스가 다른 하드웨어에 분산된다는 의미
    • 가용 영역별로 분산된 배치 그룹당 7개의 EC2 인스턴스만 가질 수 있다는 제한사항이 있음
  • Partition (분할 배치 그룹)
    • 여러 파티션에 인스턴스가 분할되어 있고 이 파티션은 가용 영역 내의 다양한 다으웨어 랙 세트에 의존한다.
    • 인스턴스가 여전히 분산되어 있지만 다른 실패로부터 격리되지 않음

Cluster

  • 장점
    • 10GB 속도 정도의 네트워크를 원하기 때문에 동일한 랙에 배치
  • 단점
    • 랙에 실패가 발생하면 즉 하드웨어에 실패가 발생하면 모든 EC2 인스턴스가 동시에 실패함
  • 사용 예
    • 매우 빨리 완료되어야 할 빅데이터 작업
    • 극히 짧은 지연 시간과 높은 네트워크 처리량을 필요로 하는 애플리케이션에 대한 요청이 있을 경우

Spread

  • 장점
    • 여러 가용 영역에 걸쳐 있을 수 있다.
    • 동시 실패의 위험이 감소한다.
  • 단점
    • 배치 그룹의 가용 영역당 7개의 인스턴스로 제한이 있다.
  • 사용 예
    • 가용성을 극대화하고 위험을 줄여야 하는 애플리케이션
    • 인스턴스 오류를 서로 격리해야 하는 크리티컬 애플리케이션

Partition

  • 가용 영역당 최대 7개의 파티션이 있을 수 있다.

  • 동일한 리전의 여러 가용 영역에 걸쳐 있을 수 있다.

  • 설정으로 최대 수백 개 EC2 인스턴스를 얻을 수 있다.

  • 인스턴스와 파티션은 다른 파티션의 인스턴스와 동일한 하드웨어 물리적 랙을 공유하지 않으므로 각 파티션은 실패로부터 격리된다.

  • 사용 예

    • 파티션들 전반에 걸쳐 데이터와 서버를 퍼뜨려 두도록 파티션 인식 가능한 애플리케이션
    • HDFS, HBase, Cassandra, Kafka를 사용하여 파티션을 인식하는 빅 데이터 애플리케이션

Elastic Network Interfaces (ENI)

  • VPC의 논리적 구성 요소이며 가상 네트워크 카드를 나타낸다.

  • EC2 인스턴스가 네트워크에 액세스 할 수 있게 해준다.

  • 속성

    • 주요 사설 IPv4와 하나 이상의 보조 IPv4를 가질 수 있다.
    • 각 ENI는 사설 IPv4당 탄력적 IPv4를 갖거나 혹은 하나의 공용 IPv4를 가질 수 있으므로 사설 및 공용 IP가 한 개씩 제공된다.
    • ENI에 하나 이상의 보안 그룹을 연결할 수 있다.
    • Mac Address 및 기타 항목을 연결할 수 있다.
  • EC2 인스턴스와 독립적으로 ENI를 생성하고 즉시 연결하거나 장애 조치를 위해 EC2 인스턴스에서 이동시킬 수 있다.

  • ENI는 특정 가용 영역 즉 AZ에 바인딩 된다.

    • 특정 AZ에서 ENI를 생성하면 해당 AZ에만 바인딩 할 수 있다.

EC2 Hibernate

  • EC2를 중지(Stop) 할 경우
    • 디스크의 데이터가 EBS 볼륨인 경우 다음 시작을 위해 그대로 유지된다.
  • EC2를 종료(Terminate) 할 경우
    • 루트인 EBS 볼륨의 모든 데이터가 인스턴스와 함께 소실되도록 설정되어 있으면 손실된다.
    • 보조 드라이브로 연결된 EBS 볼륨이고 인스턴스가 종료될 때 소실되지 않도록 설정되어 있으면 데이터는 보존된다.
  • EC2를 Start 할 경우
    • 처음 시작할 경우 : 운영체제가 부팅 되고 EC2 User Data에서 스크립트를 실행한다.
    • 중지했다가 다시 시작할 경우 : 운영체제만 부팅된다.
    • EC2 인스턴스에 내부 캐시가 있는 경우 캐시가 워밍업 된다.
      • 애플리케이션이 시작되는 속도가 느리거나 캐시가 워밍업되는 속도가 느린 경우 시간이 걸린다.
  • EC2를 절전모드(Hibernate)를 사용할 경우
    • 메모리(RAM) 상태가 보존된다.
    • 절전 후 인스턴스를 재시작하면 인스턴스 부팅이 훨씬 빨라진다.
    • RAM의 전체 상태는 루트 EBS 볼륨에 덤프되어서 루트 볼륨을 암호화해야 한다.
  • 사용 사례
    • 장기 실행 프로세스를 계속 실행하려는 경우
    • RAM 상태를 저장하려는 경우
    • 초기화하는 데 시간이 많이 걸리는 서비스가 있는 경우

EC2 Hibernate 특징

  • 지원하는 인스턴스
    • C, M, R로 시작하는 인스턴스
  • 인스턴스 RAM 크기가 150GB 미만이어야 한다.
  • 베어 메탈 인스턴스에는 지원되지 않는다.
  • 현재 지원하는 AMI는 Amazon Linux 2, Linux AMI, Ubunt, Windows가 있다.
  • 루트 볼륨
    • EBS 볼륨이어야 한다.
    • 인스턴스를 저장할 수 없으며 암호화되어야 한다.
    • 전체 RAM 크기의 덤프를 지원할 만큼 충분히 커야 한다.
  • 온디맨드, 예약 인스턴스에만 사용할 수 있으나 스팟 인스턴스에는 쓸 수 없다.
  • 60일 이상 절전모드로 전환할 수 없다.

EC2 Nitro

  • 차세대 EC2 인스턴스의 기본 플랫폼
  • 새로운 가상화 기술을 사용하고 있다.
  • HPC(고성능 컴퓨팅)과 IPv6 지원과 같은 개선된 네트워킹 옵션을 제공한다.
  • 더 빠른 속도의 EBS 볼륨을 제공한다.
    • 64,000 IOPS의 EBS 볼륨을 원하면 Nitro가 필요하다.
    • Nitro가 없는 EC2 인스턴스는 최대 32,000 IOPS만 제공된다.
  • 더 나은 기본 보안과 기타 여러 가지 개선 사항을 제공받을 수 있다.
  • 비용 절감과 더 나은 성능을 위해 최신 유형의 인스턴스를 사용하는 것이 권장된다.

vCPU

  • EC2 인스턴스는 CPU 한 개에서 여러 개의 스레드가 실행될 수 있다.
  • 각 스레드는 AWS에서 vCPU 즉 Vitusl CPU로 표시된다.

'프로그래밍 > AWS Solutions Architect' 카테고리의 다른 글

AWS SAA - Elastic Load Balancer(ELB)  (0) 2022.05.12
AWS SAA - Scalability & High Availability  (0) 2022.05.12
AWS SAA - EC2 Instance Storage  (0) 2022.05.12
AWS SAA - EC2  (0) 2022.05.11
AWS SAA - IAM  (0) 2022.05.09