[AWS SAA-C03] EC2

이재민·2024년 5월 22일
0

AWS SAA-C03

목록 보기
2/22

EC2

EC2는 Elastic Compute cloud의 약자이며, AWS에서 가장 인기 있고 핵심 서비스이며 AWS에서 제공하는 클라우드 컴퓨팅 서비스다.

EC2는 하나의 서비스가 아닌 많은 것을 포함하고 있는 서비스다.

  • 데이터를 가상 드라이브 EBS(Elastic Block Storage) 볼륨에 저장 가능
  • ELB(Elastic Load Balancer)로 분산 가능
  • Auto Scaling Group을 사용하여 서비스 확장 가능

AWS 예산 설정

  • root 계정이 아닌 IAM 계정으로 예산 정보를 보기 위해서는 아래 설정을 활성화 시켜야 한다.

  • 과금이 발생하면 노티를 받을 수 있도록 아래 설정을 통해 노티 설정을 할 수 있다.
  • 일정 금액이 초과했을 시 이메일로 수신할 수 있도록한다.

EC2 설정 옵션과 크기

EC2를 처음 생성할 때 다양한 설정 옵션(운영체제, RAM, Storage, 방화벽 등)이 존재한다.

EC2를 생성할 때 아래 사진의 Quick Start 카탈로그를 보면 리눅스, 맥, 윈도우 등 운영체제를 선택할 수 있다.

  • 인스턴스의 유형에따라 컴퓨팅 성능이 달라진다. CPU 코어 수, 메모리, 스토리지, 요금 등이 달라진다.

  • 스토리지 설정을 구성할 수 있다. 프리티어 유형으로는 30GB의 EBS 스토리지(SSD)를 쓸 수 있다.

  • 인스턴스 구성을 위해 부트스트랩 스크립트도 작성할 수 있다.

부트스트랩 스크리핑이란, 초기에 EC2가 수행할 명령을 미리 지정하는 것을 의미한다. 주로 운영 체제의 패치, 모듈의 설치 혹은 업데이트를 진행할 때 사용한다.

  • 다만, 작업이 많아질수록 인스턴스 기동 시간이 늘어날 수 있다.
    EC2 사용자 데이터 스크립트는 root 계정에서 실행되기에 sudo 명령어를 붙여줘야 한다.

  • EC2 인스턴스에 SSH 프로토콜을 이용해 접속하기 위해선 key pair를 생성해야 한다.

    • 이때, 윈도우 7, 8 을 제외한 경우에는 대부분 .pem 방식을 사용한다.

EC2 인스턴스 종류, 타입

EC2 인스턴스의 종류는 다양하게 구성되어있다.
인스턴스 유형을 확인하면 쉽게 이해되지 않는 이름들이다.
하지만, 여기에는 규칙들이 존재한다.

  • m5.2xlarge 유형으로 확인해보자
    • m: 인스턴스 클래스(m이 범용의 인스턴스 그룹에 포함된다.)
    • 5: 인스턴스 세대(새로운 세대의 하드웨어)
    • 2xlarge: 인스턴스 클래스 내에서 사이즈를 의미한다.
      • 크기는 small부터 시작
      • 크기가 클수록 메모리와 cpu가 커진다.

범용 인스턴스(General Purpose)

  • 보통 웹서비스나 코드 저장소와 같은 다양한 작업에 어울린다.
  • 컴퓨팅, 메모리, 네트워크간의 밸런스도 잘 맞는다.

컴퓨팅 최적화 인스턴스(Compute Optimized)

  • 컴퓨터 집약적인 작업에 최적화되어 있다.
  • 주로 배치 프로세스, 미디어 트랜스 코딩, 고성능 웹서버, 머신 러닝, 전용 게임 서버 등에 사용될 수 있다.
  • 인스턴스 유형은 c로 시작한다.

메모리 최적화 인스턴스(Memory Optimized)

  • 메모리는 RAM을 가리키며 대규모 데이터 셋을 처리하는 유형의 작업에 빠른 성능을 제공한다.
  • 주로 인 메모리 데이터베이스, 분산 웹 스케일 캐시 저장소, 비즈니스 인텔리전스(BI)에 최적화된 인 메모리 데이터베이스와 대규모 비정형 데이터의 실시간 처리를 진행하는 애플리케이션에서 사용

스토리지 최적화 인스턴스(Storage Optimized)

  • 스토리지 최적화 인스턴스다.
  • 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스다.
  • 주로 고주파 온라인 트랜잭션 처리인 OLTP 시스템에 사용, NoSQL DB에서 사용, Redis와 같은 메모리 기반의 데이터베이스나 데이터 웨어하우징 애플리케이션과 분산과 분산 파일 시스템에서 사용된다.
  • 인스턴스 유형은 보통 I, G, H1으로 시작한다.

보안 그룹

보안 그룹은 AWS 클라우드에서 네트워크 보안을 실행하는데 핵심이 되는 부분이다.
EC2로 접속할때 timeout이 발생하는 경우는 100퍼센트 보안그룹 즉, 방화벽 설정이 안되어 있어서 그렇다고 한다.

보안그룹 특징

  • EC2 인스턴스에 들어오고 나가는 트래픽을 제어한다.
  • 보안 그룹은 간단하 허용 규칙만 포함한다.
  • 출입이 허용된 것이 무엇인지 확인할 수 있고 IP 주소를 참조해 규칙을 만들 수 있다.
  • 컴퓨터의 위치나 다른 보안 그룹을 참조한다.
  • 보안 그룹끼리 서로 참조 가능하다.
  • 외부에서 EC2 인스턴스로 들어오는 것이 허용되면 아웃 바운드 트래픽도 수행할 수 있다.

보안 그룹은 EC2 인스턴스의 방화벽이다.
포트로의 액세스를 통제하며 인증된 IP주소 범위를 확인해 IPv4, IPv6인지 확인한다.
외부에서 인스턴스로 들어오는 인바운드 네트워크를 통제한다.
인스턴스에서 외부로 나가는 아웃바운드 네트워크를 통제한다.
EC2 인스턴스가 웹사이트에 액세스하고 연결을 시도하면 보안 그룹에서 허용하는 것이다.

보안 그룹 팁

  • 여러 인스턴스에 동일한 보안 그룹을 연결할 수 있다.
  • 하나의 인스턴스에 여러개의 보안 그룹을 연결할 수 있다.
  • 보안 그룹은 Regions과 VPC 결합으로 통제되어 있다.
    • 그래서 Regions을 변경하면 새 보안 그룹을 생성하거나 다른 VPC를 생성해야 한다.
  • 보안 그룹은 EC2 외부에 존재하는 것이다.
  • SSH 접근을 위해 별도의 보안 그룹을 생성하여 관리하는 것이 좋다.
  • 아까 언급했듯이 타임아웃이 발생하면 보안 그룹의 문제로 생각하면 된다.
  • 연결을 거부되었다는 응답을 받으면 보안 그룹은 통과했지만, 애플리케이션에 문제가 생긴 것으로 생각할 수 있다.
  • 기본적으로 모든 아웃 바운드 트래픽은 허용하지만, 모든 인바운드 트래픽은 차단되어있다.
  • 보안 그룹에 다른 보안 그룹을 참조하는 방법은 로드 밸런서에서 사용하기에 좋다.
  • EC2 인스턴스의 IP와는 상관이 없다.

주요 포트

  • 22: SSH(Scure Shell)
  • 21: FTP(File Transfer Protocol)
  • 22: SFTP(Secure File Transfer Protocol)
  • 80: HTTP
  • 443: HTTPS
  • 3389: RDP(Remote Desktop Protocol)

EC2 구매 옵션

온디맨드(On-Demand)

  • 사용한 만큼 비용을 지불하는 방식
  • 단기적인 워크로드에 사용하기 적합하며 애플리케이션의 미래를 예측할 수 없을 때 좋다.
  • 비용을 초단위로 요금을 지불한다,.
    • Linux, Window는 1분 이후로 초단위로 청구한다.
    • 외의 다른 운영체제는 1시간 단위로 청구한다.
  • 비용이 가장 많이 발생하는 옵션이지만 바로 지불할 금액은 없고 장기적인 약정도 없다.

예약 인스턴스(Reserved)

  • 오랫동안 사용할거면 해당 옵션이 온디맨드보다는 적합하다고 할 수 있다.
  • On-Demand에 비해 72% 할인을 제공한다.
  • 특정 인스턴스의 속성을 예약할 수 있다.
    • 리전, 인스턴스, 운영체제, 테넌시
  • 예약 기간을 1년, 3년으로 지정할 수 있으며 할인폭은 다르다.
  • 전부 선결제, 부분 선걸졔, 선결제 없음 중 선택할 수 있다.
    • 선 결제시 할인폭은 커진다.
  • 예약 범위를 특정 Region, Zone으로 지정할 수 있다.
  • DB같은 사용량이 일정한 애플리케이션에 예약 인스턴스를 사용하는 것이 좋다.
  • 예약 인스턴스를 더 살 수 있고, 더이상 필요가 없을 경우 판매가 가능하다.

전환형 예약 인스턴스

  • 인스턴스 타입, 패밀리 운영체제, 범위, 테넌시를 변경할 수 있다.
  • 유연성이 존재하기에 할인은 적다.
  • On-Demand에 비해 최대 66% 할인을 제공한다.

절약 플랜(Saving Plans)

  • 절약 플랜은 특정한 인스턴스 유형을 약정하는 것이 아닌 달러 단위로 특정한 사용량을 약정하는 것이므로 좀 더 현대적인 방식이다.
  • 절약 기간은 1년, 3년이 있다.
    • 그러나 1년 내지 3년동안 시간당 10달러로 약정을 하게 된다.
  • 장기적인 방식에 좋다.
  • On-Demand이 비해 70% 할인을 제공한다.
  • 사용량의 한도를 넘어서면 절약 플랜은 온디맨드 가격으로 청구가 된다.
  • 절약 플랜은 특정 리전, 인스턴스, 패밀리로 고정된다.
    • 인스턴스 사이즈, OS, 테넌스는 변경이 가능하다.

전용 호스트(Dedicated hosts)

  • 전용으로 사용하는 EC2 인스턴스 용량이 있는 실제 물리적 서버를 제공받는다.
  • 물리적 서버 전체를 예약해서 인스턴스 배치를 제어할 수 있다.
  • 주로 법규 준수 요건이 있는 활용 사례나 소켓, 코어, VM 소프트웨어 라이센스 기준으로 청구되는 기존의 서버에 연결된 소프트웨어 라이센스가 있는 경우에 사용한다.
  • On-Demand로 초당 비용을 지불하거나 1년, 3년 예약 가능하다.
  • 실제로 물리 서버를 예약하기에 가장 비싼 유형이다.

전용 인스턴스(Dedicated Instances)

전용 인스턴스 즉 하드웨어를 갖게 되는 것이다.
물리적 서버 자체에 대한 접근권을 갖고 낮은 수준의 하드웨어에 대한 가시성을 제공해준다.

  • 다른 고객이 하드웨어를 공유하지 않는다.
  • 물리적 서버와는 다르다.
  • 같은 계정에서 다른 인스턴스와 함께 하드웨어를 공유할 수 있다.
  • 인스턴스 배치에 대한 통제권이 없다.

용량 예약(Capacity Reservations)

  • 특정 AZ에 기간, 용량을 예약하는 방식이다.
    • 설정한 기간동안 특정 AZ에 인스턴스를 예약한다.
    • 기간 약정이 없다.
  • 언제라도 용량을 예약, 취소 가능하다.
    • 청구 할인이 없으며, 오직 예약만이 목적이다.
    • 만약 청구 할인을 받고자 한다면 지역별 예약 인스턴스와 결합하거나 절약 플랜과 결합해야 한다.
  • 인스턴스 실행과 무관하게 온디맨드 요금이 부과된다.
    • 실행과 무관하게 비용 지불
  • 특정 AZ에 있어야 하는 단기적이고 중단 없는 워크로드에 매우 적합

스팟 인스턴스(Spot Instances)

  • 아주 짧은 워크로드를 위한 인스턴스 타입이다.
  • 매우 저렴하다.
  • 하지만, 언제라도 인스턴스 손실이 될 수 있기에 신뢰성이 매우 낮다.
  • On-Demand에 비해 90% 할인이 가능하다.
  • 최대 가격을 정의하게 되는데, 이를 넘길 시 인스턴스가 사라진다.
  • 가장 비효율적인 인스턴스다.
    • 이를 회복할 수 있는 전략이 있다면 좋은 선택이 될 수 있다.
  • 주로 배치 작업, 데이터 분석, 이미지 처리, 모든 종류의 분산형 워크로드, 시작 시간 종료 시간이 유연한 워크로드에 해당한다.
  • 실패해도 복원력이 있을 경우에 사용해야 한다.
    • DB와 같은 작업에는 절대 사용하면 안된다.
  • 사용한 비용이 정의된 최대 가격보다 낮다면 계속 인스턴스 사용 가능하다.
  • 시간 당 비용은 오퍼 및 용량에 따라 다르다.
  • 스팟 가격이 정의된 최대 가격을 넘기게 된다면 2개의 선택지가 주어지고 2분의 유예 시간이 주어진다.
      1. 중단 -> 스팟을 멈춘 후 최대 가격보다 낮아지면 다시 동작
      1. 종료 -> 아예 종료, 새로 생성

스팟 볼록

  • AWS에게 스팟 인스턴스를 회수당할 일이 없게 하기 위한 전략이다.
  • 스팟 블록이란 특정 기간(1~6시간)동안 인스턴스를 차단하는 기능이다.
  • 하지만 2022년 12월 31일자로 종료되었다고 한다.

스팟 인스턴스 종료

  • 스팟 요청에는 원하는 인스턴스의 개수, 최고 가격, AMI 등 요구되는 사양, 요청의 유효 기간이 있다.
  • 스팟 요청이 취소되기 위해서는 open, active, disabled 상태여야 한다.
    • failed, canceled, closed 경우는 안된다.
  • 스팟 요청을 취소하더라도 인스턴스는 종료되지 않는다. 사용자가 직접해야 한다.
  • 스팟 인스턴스를 제거하려면, 스팟 요청 취소 후 연결된 인스턴스를 꺼야 한다.
    • 인스턴스를 사용자가 종료하게 되면 스팟 요청으로 인해 다시 실행된다.

스팟 요청 방법

일회성 요청

  • 요청이 이행되는 즉시 인스턴스가 실행된다.
  • 스팟 요청은 바로 사라진다.
  • 스팟 요청이 사라져도 괜찮은 경우에 해당 방법을 사용한다.

지속적인 요청

  • 스팟 요청의 유효 시작일자부터 종료일자까지 요청한 개수의 인스턴스들이 유효하게 된다.
  • 최대 가격을 넘어 인스턴스가 없어져도 스팟 요청이 다시 연결되어 자동으로 인스턴스가 생긴다.

스팟 플릿(Spot Fleets)

스팟 플릿을 이용해 여러 런치풀과 인스턴스 유형을 다양한 형태로 정의할 수 있다.

스팟 플릿에 lowestPrice 전략을 사용하면 스팟 플릿이 자동으로 최저 가격의 스팟 인스턴스를 요청한다.

스팟 플릿을 사용하면 스팟 인스턴스에 따라 추가적으로 비용 절감이 가능하게 되는데, 적합한 스팟 인스턴스 풀을 선택해주기 때문이다.

인스턴스 유형, AZ만 선택하는 단순 스팟 요청과 달리 스팟 플릿은 사용자의 요구 즉 전략에 따라 모든 것을 최적화 해준다

  • 최대 비용 절감을 위한 방안이 스팟 플릿이다.
  • 한 세트의 스팟 인스턴스에 온디맨드 인스턴스를 선택적으로 조합해 사용하는 방법이다.
  • 스팟 플릿은 정의된 비용 제한 내에서 대상 용량을 맞추려고 노력한다.
  • 사용 가능한 런치 풀을 사용해서 실행된다.
  • 인스턴스 유형, 운영체제, AZ 등 다양하게 가질 수 있다.
  • 스팟 플릿이 정해진 예산이나 용량에 도달한 경우 인스턴스 실행을 멈춘다.
  • 스팟 플릿내에서 스팟 인스턴스를 할당해 줄 전략을 정의한다.
    • lowestPrice: 스팟 플릿이 가장 적은 비용을 가진 풀에서부터 인스턴스를 실행하여 비용을 절감한다. 아주 짧은 워크로드에 적합하다.
    • diversified: 사용자가 정의한 모든 풀에 걸쳐 분산된다. 긴 워크로드에 적합하며 가용성이 뛰어나 특정 풀이 중단되더라도 다른 풀에서 동작한다.
    • capacityOptimized: 인스턴스의 개수에 따라서 최적 용량으로 실행된다. 적절한 풀을 찾아준다.
    • priceCapacityOptimized: 가격 용량 최적화는, 먼저 사용 가능 용량이 가장 큰 풀을 선택하고 그 중 가격이 가장 낮은 풀을 선택하는 전략이다. 때문에 대부분의 워크로드에 적합한 선택이다.
profile
문제 해결과 개선 과제를 수행하며 성장을 추구하는 것을 좋아합니다.

0개의 댓글