[AWS] EC2

2023. 6. 22. 21:19Devops/AWS

EC2

  • Elastic Compute Cloud
  • AWS에서 제공하는 IasS(Infrastructure as a Service)

 

노션에서 더 깔끔하게 보실 수 있습니다.

 

 

https://jeidiiy.notion.site/EC2-db6ff06c6042432b9a54299a8d481fa8?pvs=4 

 

EC2

Elastic Compute Cloud

jeidiiy.notion.site

목차

  1. 주요 구성 요소
  2. 옵션
  3. 네이밍 규칙
  4. 유형
  5. 보안 그룹
  6. 인스턴스 구매 옵션
  7. IP
  8. Placement Groups
  9. ENI
  10. Hibernate Mode

1. 주요 구성 요소

  • EC2(Elastic Compute Cloud): 가상 머신 임대
  • EBS(Elastic Block Store): 가상 드라이브 또는 EBS 볼륨에 데이터 저장
  • ELB(Elastic Load Balancing): 로드 밸런서를 활용하여 트래픽 분산
  • ASG(Auto-Scaling Group): 서비스 확장

2. 옵션

  • OS
    • Linux
    • Mac
    • Windows
  • CPU
  • RAM
  • Storage Space
    • Network-attach(EBS & EFS)
    • hardware(EC2 Instance Store)
  • Network Card
    • 네트워크 속도
    • 공인 IP 종류
  • Firewall Rules
    • Security Group
  • Bootstrap script(configure first launch)
    • EC2 User Data
    • 인스턴스 부팅 시 단 한 번 실행되는 스크립트

3. 네이밍 규칙

m5.2xlarge
  • m: 인스턴스 클래스
  • 5: 인스턴스 세대
  • 2xlarge: 인스턴스 클래스의 크기
    • small ~ Xxlarge 등의 크기로 설정 가능
    • 크기가 클수록 더 많은 CPU와 Memory 사용 가능

4. 유형

  • General Purpose
    • 웹 서버, 코드 저장소같은 다양한 작업에 적합한 인스턴스
    • 컴퓨팅, 메모리, 네트워크 간 균형 적절
    • M으로 시작함. A1, T 인 경우도 있음
  • Compute Optimized
    • 컴퓨팅 집약적인 작업에 최적화된 인스턴스
    • 데이터 일괄 처리, 미디어 트랜스코딩, 고성능 웹 서버, HPC, 머신 러닝, 게임 서버 등
    • C로 시작함
  • Memory Optimized
    • 메모리에서 대규모 데이터를 처리하는 작업에 최적화된 인스턴스
    • RDB, No-SQL, InMemory DB 등의 DB 작업
    • 대규모 비정형 데이터의 실시간 처리를 하는 애플리케이션 등
    • R로 시작함. X1, Z1 도 있음
  • Storage Optimized
    • 대규모 데이터에 접근하는 작업에 최적화된 인스턴스
    • OLTP 시스템, RDB, No-SQL DB
    • I로 시작함. D, H도 있음
💡 강의 외 유형은 중요 내용이 아니라는 판단 하에 작성하지 않았습니다. 자세한 내용은 AWS 공식 문서를 참조하시기 바랍니다.

컴퓨팅 - Amazon EC2 인스턴스 유형 - AWS

 

컴퓨팅 - Amazon EC2 인스턴스 유형 - AWS

 

aws.amazon.com

5. 보안 그룹

  • EC2 인스턴스에 들어오고 나가는 트래픽을 제어하는 방법
  • EC2에서 네트워크 보안을 유지하는데 활용
  • IP 주소, 포트 번호 등의 옵션으로 규칙 설정 가능
  • 보안 그룹은 여러 인스턴스에 적용할 수 있으며 인스턴스와 일대일 관계가 아님
  • 한 인스턴스에도 여러 보안 그룹 적용 가능

규칙

  • Inbound: EC2 인스턴스에 들어오는 트래픽과 관련된 보안 정책 설정
  • Outbound: EC2 인스턴스에서 나가는 트래픽과 관련된 보안 정책 설정
💡 0.0.0.0/0은 전체 IP를 나타낸다.

알아두면 좋은 점

  • 보안 그룹은 리전과 VPC로 통제됨
  • 따라서 리전을 전환하면 보안 그룹을 새로 생성하거나 다른 VPC를 생성해야 함

다른 보안 그룹 참조

  • 한 보안 그룹에서 다른 보안 그룹에 인바운드를 허용할 수 있음
  • 이렇게 하면 IP나 포트와 상관없이 바로 연결할 수 있어서 좋은 구성

주요 포트 번호

  • 22(SSH): Linux에서 EC2 인스턴스 연결 시 사용
  • 21(FTP): 파일 전송 프로토콜
  • 22(SFTP): SSH를 이용하여 파일 업로드
  • 80(HTTP): 기본 웹 프로토콜
  • 443(HTTPS): 보안 사이트에 접속하는 현재 웹 표준 프로토콜
  • 3389(RDP): Windows에서 EC2 인스턴스 연결 시 사용
⚠️ 만약 인스턴스에서 AWS 서비스에 접근하려고 할 때 인스턴스에 직접 AWS-CLI를 설치해서 접근하는 방법은 매우 안 좋은 방법이다. 그렇게 되면 해당 인스턴스에 접근하는 사용자 모두가 AWS 서비스에 접근할 수 있기 때문이다. 따라서 이러한 경우 IAM의 Role을 인스턴스에 설정하는 방식으로 해야 한다.

6. 인스턴스 구매 옵션

  1. On-Demand Instances
  2. Reserved Instances
  3. Saving Plans
  4. Spot Instances
  5. Dedicated Hosts
  6. Dedicated Instances
  7. Capacity Reservations

1. On-Demand Instances

  • 사용한 만큼 지불하는 옵션
  • 바로 지불할 금액이 없음
  • 장기 약정도 필요 없음
  • 구매 옵션 중 가장 비용이 많이 듦

비용 계산

  • Linux나 Windows인 경우 1분 이후에 초 단위로 요금 청구
  • 그 외 운영체제인 경우 1시간 단위로 요금 청구

워크로드

  • 단기적이고 중단이 없는 경우
  • 애플리케이션의 거동을 예측할 수 없는 경우

2. Reserved Instances

  • 특정 인스턴스 속성을 예약
    • 인스턴스 타입
    • 리전
    • 테넌시
    • OS 등
    • 특정 리전이나 가용 영역
  • 나중에 인스턴스 타입을 변경하고 싶으면 Convertible Reserved Instances로 가능
    • 대신 할인율이 최대 66%로 감소
  • 마켓플레이스에서 매매 가능

비용 계산

  • 온디맨드에 비해 최대 70%의 할인 제공
  • 1년 또는 3년의 계약 기간을 지정하여 할인 추가 가능
  • 전부 선결제, 부분 선결제, 선결제 없음 중 선택 가능

워크로드

  • 사용량이 일정한 애플리케이션
    • DB

3. Saving Plans

  • 특정 인스턴스 타입을 약정하는 게 아니라 달러 단위로 특정 사용량을 약정
  • 특정 인스턴스와 패밀리 리전으로 고정됨
    • m5.2xlarge, Seoul로 계약한 경우
      • m5라는 인스턴스 타입과 Seoul이라는 리전은 변경 불가
      • 2xlarge → xlarge, small 등으로 변경 가능
      • OS를 Linux → Windows 등으로 변경 가능
      • 테넌시도 변경 가능

비용 계산

  • 최대 70% 할인 가능
  • 1년 또는 3년 단위로 계약
  • 1년 또는 3년 계약을 시간당 10달러로 약정
  • 한도를 넘어서면 On-Demand 방식으로 요금 청구

워크로드

  • 장기적인 워크로드 구성 시 사용

4. Spot Instances

  • 아주 짧은 워크로드 구성 시 사용
  • 인스턴스 중 가장 비용효율적
  • 인스턴스가 고장에 대한 회복력이 있는 경우 매우 유용
  • 언제라도 인스턴스가 손실될 수 있음
    • spot instance에 대한 최대 금액을 정한 후에 만약 spot 가격이 최대 금액을 넘어간 경우 인스턴스 손실 가능
  • 작동 방식
    1. 어떤 Spot Instance에 대해 지불할 의향이 있는 최고가를 정의
    2. 인스턴스 비용이 지불 의향이 있는 최고가보다 낮은 한 해당 인스턴스를 계속 사용
💡 시간당 spot 비용은 오퍼 및 용량에 따라 다양하고 가격 변동이 있음
    • 만약 현재 spot 가격이 정의된 최고가보다 높아지는 경우 2가지 옵션이 있음
    • 그리고 이러한 옵션에는 2분의 유예 시간이 주어짐
    1. 인스턴스 중단
      • 하고 있던 모든 작업을 멈추고 인스턴스 중단
      • 언젠가 정의된 최고가보다 낮아지는 경우 인스턴스를 다시 실행하여 작업 재개
      • 중단 상태로 둘 필요가 없는 경우 인스턴스를 완전히 종료해 끝낼 수도 있음
      • 즉 업무를 재시작할 때마다 완전히 새로운 EC2 인스턴스로 시작 가능
      • 이를 선택하기 위해 2분의 유예 시간이 주어짐
      • Spot Instance를 AWS에 회수당하지 않게 하는 방법
      • 특정 기간 동안 인스턴스를 차단하는 기능
        • 1시간~6시간
      • 굉장히 드문 경우 인스턴스가 회수될 수도 있지만 거의 없음
      • 현재 서비스 종료Spot Block 사용
    2. Spot Request 스펙
    • 지불 의사가 있는 인스턴스 최고 가격
    • 원하는 인스턴스 개수
    • AMI 등 요구 사양
    • 요청의 유효 기간
    • 요청 유형
      • 스팟 인스턴스를 위한 일회성 요청
      • 사후 인스턴스를 위한 지속적 요청
      요청 유형
    • 일회성 요청
    • 스팟 요청이 이행되는 즉시 인스턴스 실행
    • 일회성 요청이나 스팟 요청은 사라짐
    • 지속적 요청
    • 스팟 요청의 Valid from부터 Valid until까지의 유효 기간 동안 요청한 개수의 인스턴스들이 계속 유효
    • 어떤 이유로 인스턴스가 중단되거나 스팟 가격 상승으로 방해를 받은 경우 스팟 요청이 다시 전송되어 요청이 검증되고 나면 스팟 인스턴스가 재시작됨
    • 스팟 요청이 취소되기 위해서는 open, active, disabled 상태여야 함
    • 즉 failed, cancelled, closed이면 안 됨
    • 스팟 인스턴스를 영구히 종료하려면 먼저 스팟 요청을 취소한 후 해당 요청과 연결된 인스턴스를 종료해야 함
      • 스팟 요청을 취소하지 않고 인스턴스를 종료하는 경우 AWS에서는 다시 스팟 요청을 통해 인스턴스를 실행
  • Spot Fleets
    • 극강의 비용 절감을 위한 방법
    • 한 세트의 스팟 인스턴스에 선택적으로 온디맨드 인스턴스를 조합해 사용하는 방식
    • 정의된 비용 제한 내에서 대상 용량을 맞추려고 함
    • 사용 가능한 런치 풀(launch pool)을 통해서 실행됨
      • 다양한 인스턴스 유형, OS, 가용 영역을 가질 수 있음
      • 여러 개의 런치 풀, 여러 개의 인스턴스 크기 등을 정의함
      • 이 중에서 플릿이 가장 적절한 런치 풀을 선택해 줌
      • 그리고 스팟 플릿이 정해진 예산 혹은 원하는 용량에 도달한 경우 인스턴스 실행을 멈춤
      • 그리고 스팟 플릿 내에 스팟 인스턴스를 할당해줄 전략을 정의함
      할당 전략
    • 1. lowestPrice
    • 시험에 가장 자주 출제되는 전략
    • 스팟 플릿이 가장 적은 비용을 가진 풀에서부터 인스턴스를 실행해 줌
    • 아주 짧은 워크로드가 있을 때 적합한 옵션
    • 2. diversified
    • 기존에 정의한 모든 풀에 걸쳐 분산
    • 긴 워크로드에 적합하고 가용성이 뛰어난 옵션
    • 3. capacityOptimized
    • 인스턴스 개수에 따라 최적 용량으로 실행되고 적절한 풀을 찾아주는 옵션
    • Spot Instances vs Spot Fleets
    • Spot Instances: 사용하고자 하는 인스턴스 유형과 가용 영역을 지정해서 사용하는 단순한 방법
    • Spot Fleets: 최저가 옵션부터 여러 가지 조건에 따른 인스턴스 유형 및 가용 영역을 선택하는 조금 복잡한 방법

비용 계산

  • 매우 저렴
    • On-Demand에 비해 최대 90%까지 할인
  • 리전 및 가용 영역에 따라 다양하게 책정

워크로드

  • 배치 작업
  • 데이터 분석
  • 이미지 처리
  • 모든 종류의 분산형 워크로드
  • 시작 시간과 종료 시간이 유연한 워크로드
  • 매우 중요한 작업이나 DB인 경우는 적절하지 않음

5. Dedicated Hosts

  • 물리적 서버 전체를 예약하여 인스턴스 배치 제어
  • EC2 인스턴스 용량이 있는 실제 물리적 서버를 받음
  • 실제 물리적 서버를 예약하기 때문에 가장 비싼 옵션

비용 계산

  • On-Demand로 초당 비용 청구 또는 1년 또는 3년 계약 가능

워크로드

  • 법규 준수 요건이 있는 사례
  • 소켓, 코어, VM 소프트웨어 라이센스를 기준으로 청구되는 기존 서버 연결된 소프트웨어 라이센스가 있는 경우

6. Dedicated Instances

  • 다른 이용자와 하드웨어를 공유하지 않는 방식
  • 이용자의 전용 하드웨어에서 인스턴스를 실행하는 방식
    • 물리적 서버와 다름
  • 같은 계정에서 다른 인스턴스와 공유 가능
  • 하드웨어도 공유 가능
  • 인스턴스 배치에 대한 통제권 X
💡 Dedicated Hosts와 Dedicated Instances의 차이점은 Dedicated Hosts의 경우 물리적 서버 자체에 대한 접근권을 갖고 낮은 수준의 하드웨어에 대한 가시성을 제공하지만 Dedicated Instances의 경우 자신만의 인스턴스를 자신의 하드웨에 제공해주는 것이다.

7. Capacity Reservations

  • 원하는 기간 동안 특정한 가용 영역(AZ)에서 On-Demand Instances를 예약하는 방식
  • 필요할 때마다 인스턴스에 접근 가능
  • 언제라도 인스턴스를 예약하고 취소 가능
  • 기간 약정 X
  • 청구 할인 X
    • 할인을 받으려면 지역별 Reserved Instances나 Saving Plans와 결합해야 함

비용 계산

  • 인스턴스를 실행하는지와 무관하게 On-Demand 요금 부과

워크로드

  • 특정한 가용 영역에 있으며 단기적이고 중단없는 워크로드에 적합

7. IP

Private IP

  • 내부 AWS 네트워크에서 사용
  • 인스턴스를 멈춘 후 재실행해도 변경되지 않음

Public IP

  • 인터넷 연결 시 사용
  • 인스턴스를 멈춘 후 재실행하면 변경될 수 있음

탄력적 IP

  • 인스턴스에 고정된 Public IP를 부여하기 위한 방법
  • 구조적으로 좋지 않기 때문에 가능한 사용하지 않는 편이 좋음
  • 대신 임의의 Public IP를 써서 DNS Name을 할당하는 편이 권장됨
    • Route 53

8. Placement Groups

  • EC2 인스턴스가 AWS 인프라에 배치되는 방식을 제어하고자 할 때 사용하는 옵션

1. Cluster

  • 단일 가용 영역 내에서 지연 시간이 짧은 하드웨어 설정으로 인스턴스들을 그룹화하는 옵션
  • 높은 성능을 제공하지만 그만큼 위험 부담이 있음
  • 모든 EC2 인스턴스가 동일한 랙에 존재
    • 동일한 하드웨어와 가용 영역에 존재
    • 따라서 하드웨어에 문제 발생 시 모든 인스턴스가 실패함
  • 지연 시간이 매우 짧은 네트워크 속도를 원하는 경우 적합

사용 사례

  • 빅데이터 처리
  • 매우 짧은 지연 시간, 높은 네트워크 처리량을 필요로 하는 애플리케이션

2. Spread

  • 인스턴스들이 다른 하드웨어에 분산되는 옵션
  • 실패 위험 최소화
  • Cluster와 완전히 반대되는 옵션
  • 가용 영역 별로 분산된 배치 그룹 당 7개의 인스턴스만 가질 수 있음
    • 배치 그룹 규모 제한
  • 크리티컬한 애플리케이션인 경우 사용

사용 사례

  • 가용성 극대화
  • 위험을 줄여야 하는 애플리케이션
  • 인스턴스 오류를 서로 격리해야 하는 크리티컬 애플리케이션

3. Partition

  • 가용 영역 내의 다양한 하드웨어 랙 세트에 의존
  • 인스턴스가 분산되어 있지만 다른 실패로부터 완전 격리되지는 않는 옵션
  • 대신 파티션 간에는 실패로부터 완전 격리
  • 가용 영역 당 최대 7개의 파티션 사용 가능
  • 설정으로 최대 수백 개의 인스턴스 사용 가능
  • 각 파티션은 AWS의 랙을 나타냄
  • 파티션이 많으면 인스턴스가 여러 하드웨어 랙에 분산되어 서로 랙 실패로부터 안전
  • 이러한 파티션은 동일한 리전 내에 여러 가용 영역에 걸쳐 있을 수 있음
  • 파티션은 다른 하드웨어 랙에 있으므로 하나의 파티션 실패하더라도 다른 파티션은 안전

사용 사례

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

9. ENI

  • 추후 정리

New – Elastic Network Interfaces in the Virtual Private Cloud | Amazon Web Services

 

New – Elastic Network Interfaces in the Virtual Private Cloud | Amazon Web Services

If you look closely at the services and facilities provided by AWS, you’ll see that we’ve chosen to factor architectural components that were once considered elemental (e.g. a server) into multiple discrete parts that you can instantiate and control in

aws.amazon.com

10. Hibernate Mode

  • 절전 모드
  • 인스턴스가 실행 중일 때의 RAM을 그대로 보존하고 중지함
  • RAM에 기록되었던 인메모리 상태는 루트 경로의 EBS에 저장
  • 인스턴스 RAM의 크기는 최대 150GB
  • 베어메탈 인스턴스에는 적용 X
  • Linux, Windows 등 다양한 OS에 적용 가능
  • EBS에만 적용 가능
  • 암호화 필요
  • 덤프된 RAM을 저장할만한 충분한 용량 필요
  • 모든 종류의 인스턴스에서 사용 가능
  • 최대 60일까지 사용 가능

사용 사례

  • RAM 상태를 저장하고 싶을 때
  • 빠르게 재부팅하고 싶을 때
  • 서비스 초기화 시 많은 시간을 필요로 하여 서비스가 중단 없이 인스턴스를 사용하고 싶을 때

'Devops > AWS' 카테고리의 다른 글

[AWS] ELB  (0) 2023.07.01
[AWS] EFS  (0) 2023.06.22
[AWS] AMI  (0) 2023.06.22
[AWS] EBS  (0) 2023.06.22
[AWS] IAM  (0) 2023.06.18