EC2

인스턴스 타입

운영체제, CPU, RAM, Storage, 네트워크 유형을 고를 수 있다.

  • 범용 타입

    • 웹 서버나 코드 저장소 등 다양한 작업에 적합하다.

    • CPU, Memory, Network 리소스가 균형 잡혀 있다.

  • 컴퓨팅 최적화

    • 배치 처리, 미디어 트랜스코딩, 고성능 웹서버, 고성능 컴퓨팅(HPC), 머신러닝, 전용 게임 서버 등의 작업에 적합하다.

    • C로 시작하는 이름을 가진다.

  • 메모리 최적화

    • 메모리에서 대규모 데이터를 처리하는 작업에 빠른 성능을 제공한다.

    • 인메모리 데이터베이스, 분산 웹 스케일 캐시 저장소, BI(business intelligence)에 최적화된 인메모리 데이터베이스, 실시간 대규모 비정형 데이터 처리용 애플리케이션 등에 적합하다.

    • R로 시작하는 이름을 가진다.

  • 스토리지 최적화

    • 로컬 스토리지에서 대규모 데이터셋에 접근할 때 적합하다.

    • 데이터베이스, OLTP(online transaction processing) 시스템, 데이터 웨어하우스 애플리케이션, 분산 파일 시스템 등에 적합하다.

특징

  • 인스턴스를 중지했다가 다시 시작하면 public IPv4가 변경될 수 있다. private IPv4는 변경되지 않는다.

  • 사용자 데이터

    • 부트스트랩 스크립트 또는 cloud-init 명령을 이용해 처음 인스턴스를 구동할 때 어떤 작업을 할 지 설정할 수 있다.

    • 업데이트 설치, 소프트웨어 설치, 인터넷에서 파일 다운 등이 가능하며 부팅 시 어떤 것을 수행할 지 설정할 수 있다.

    • sudo 권한으로 수행된다.

    • 기본적으로 처음 인스턴스 시작할 때에만 수행되지만, 인스턴스를 재시작할 때마다 사용자 데이터 스크립트와 cloud-init 명령이 실행되도록 구성을 업데이트할 수 있다.

    • 인스턴스가 실행 중일 때는 사용자 데이터를 변경할 수 없다.

  • 시작 템플릿

    • Amazon Machine Image(AMI)의 ID, 인스턴스 타입, 키 쌍, 보안 그룹, 그리고 EC2 인스턴스를 시작하기 위해 사용하는 다른 파라미터 같은 인스턴스 구성 정보를 지정한다.

    • 여러 템플릿 버전을 가질 수 있다.

    • 원하는 스케일, 성능, 비용을 달성하기 위해 온디맨드 인스턴스와 스폿 인스턴스를 모두 사용하여 다수의 인스턴스 타입에 걸쳐 용량을 프로비저닝할 수 있다.

  • 시작 구성

    • 오토 스케일링 그룹이 EC2 인스턴스를 실행하는 데 사용하는 인스턴스 구성 템플릿이다.

    • 시작 구성을 생성할 때는 Amazon Machine Image(AMI)의 ID, 인스턴스 타입, 키 쌍, 하나 이상의 보안 그룹, 블록 장치 매핑 등 인스턴스에 관한 정보를 명시해야 한다.

보안 그룹

  • 방화벽 규칙은 보안 그룹을 통해 설정할 수 있다.

  • 인터넷에서 서버로 들어오는 인바운드 트래픽, 서버에서 외부로 나가는 아웃바운드 트래픽을 허용/차단할 수 있다.

  • 여러 ec2 인스턴스에 적용될 수 있다. 즉, ec2와 1:1 관계가 아니다.

  • 특정 region, VPC 조합에서만 사용할 수 있다. 따라서 다른 지역으로 전환 시 보안 그룹을 새로 생성해야 한다.

  • SSH 접근을 위해 별도 보안 그룹을 유지하는 것이 좋다.

  • 임의의 포트에 타임아웃으로 인해 연결할 수 없다면, EC2 보안 그룹에 의해 막힌 것이다.

  • 모든 인바운드 트래픽은 기본적으로 차단되고, 모든 아웃바운드 트래픽은 기본적으로 허용된다.

  • 한 보안그룹에서 다른 보안 그룹들을 허용할 수 있다. 이를 통해 여러 인스턴스끼리 쉽게 통신할 수 있다.

  • 일반적인 포트

    • 22 : SSH - 리눅스 인스턴스에 로그인

    • 21 : FTP - 파일 공유를 위한 업로드

    • 22: SFTP - SSH를 이용한 파일 공유

    • 80: HTTP

    • 443: HTTPS

    • 3389: Remote Desktop Protocol - 윈도우 인스턴스에 로그인

연결

SSH

  • SSH 연결을 위해서는 Key pair를 만들어야 한다.

  • 다음 명령을 통해 ssh 접근을 할 수 있다. pem 파일이 위치한 디렉토리에서 명령을 실행해야 한다.

chmod 0400 <pem filename>
ssh -i <pem filename> ec2-user@<public ip>

EC2 Instance Connect

  • AWS Console에서 Connect 버튼을 누르면 브라우저 상에서 CLI를 사용할 수 있다.

  • SSH 키를 관리할 필요가 없다.

IAM 역할

  • EC2에서 AWS 리소스 정보를 얻기 위해 IAM 역할을 연동시킬 수 있다.

구매 옵션

워크로드에 따라 적절한 옵션을 선택해야 한다.

  • On-Demand

    • 단기 워크로드, 가격 예측 가능, 초 단위로 과금

    • 선결제나 장기 약정이 필요 없다.

    • 애플리케이션 동작을 예상할 수 없는 경우

  • Reserved

    • 장기 워크로드에 적합

      • 애플리케이션의 데이터베이스 등

    • 인스턴스 유형, 리전, 테넌시, OS 등 특정 속성을 예약할 수 있다.

    • 1, 3년 단위로 예약 가능

    • 전환형 예약 인스턴스의 경우 인스턴스 유형, 패밀리, OS, 테넌시를 변경할 수 있다.

  • Saving Plans

    • 장기 워크로드에 적합, 사용량 기반

    • 시간 당 과금되는 액수를 1, 3년 단위로 예약 가능하다. (ex. 1년동안 500달러 쓸게~)

    • 사용량을 초과하는 경우 온디맨드 가격으로 청구된다.

    • 특정 리전과 제품군에 한해 사용 가능하다. ex) us-east-1 리전의 M5 장비

    • 인스턴스 크기, OS, 테넌시는 변경 가능하다.

  • Spot Instances

    • 서비스가 중단되어도 복구하기 쉬운 단기 워크로드에 적합

      • 배치 작업, 데이터 분석, 이미지 프로세싱, 분산 워크로드, 시작 및 종료가 유동적인 워크로드

    • 가장 저렴하다.

    • 설정해둔 가격을 넘어가면 인스턴스가 즉시 종료될 수 있다.

    • 최대 스팟 인스턴스 가격을 정의하여, 인스턴스의 스팟 가격이 우리가 지불하고자 하는 최대 가격보다 낮다면

      해당 인스턴스를 유지한다.

    • 스팟은 시간에 따른 공급와 용량에 따라 달라진다. 현재 스팟 가격이 정의된 최대 가격을 초과하면 2분의 유예 기간동안 인스턴스가 하던 작업을 우아하게 중지시키거나 바로 종료시킬 수 있다.

    • AWS가 스팟 인스턴스를 회수하는 것을 원하지 않는다면, 스팟 블록을 사용할 수 있다. 스팟 블록은 지정된 기간(1~6시간) 동안 스팟 인스턴스를 차단한다. 그동안 중단 없이 해당 블록을 사용할 수 있다.

    • 스팟 요청에서는 원하는 인스턴스 수, 최대 가격 및 시작 사양, 유효 기간을 지정하고 요청의 유형을 설정해야 한다.

    • 다음은 두 가지 요청의 유형이다.

      • 스팟 인스턴스 일회성 요청

        • 스팟 요청이 완료되는 즉시 인스턴스가 시작된다.

        • 이후 스팟 요청은 사라진다.

        • 영구 인스턴스 요청

          • 스팟 요청이 유효한 기간 동안은 인스턴스 수도 유효하다

          • 인스턴스가 중지되거나 스팟 가격을 기준으로 중단되는 경우, 스팟 요청이 다시 실행되고 유효성이 확인되면 스팟 인스턴스가 다시 시작된다.

          • 스팟 인스턴스를 중지했는데, 스팟 요청이 여전히 활성 상태라면 스팟 요청은 자동으로 인스턴스를 다시 시작할 수 있다.

          • 스팟 요청을 취소하려면, 스팟 요청이 활성 상태이거나, 비활성화 상태여야 한다.

          • 스팟 인스턴스를 더 이상 사용하지 않으려면 스팟 요청을 취소한 후 스팟 인스턴스를 종료해야 한다.

          • 스팟 인스턴스를 먼저 종료하면, AWS는 스팟 요청으로 돌아가 요청된 상태에 맞게 다시 스팟 인스턴스를 시작한다.

          • 스팟 플릿

            • 스팟 인스턴스의 집합이다. 선택적으로 온디맨드 인스턴스가 될 수 있다.

            • 여러 개의 런치 풀과 여러 인스턴스 유형을 정의할 수 있다.

            • 다양한 인스턴스 유형, 다양한 OS 및 다양한 가용성 영역을 기반으로 런치 풀을 정의한다.

            • 런치 풀을 여러 개 정의해두면, 플릿이 가장 적합한 런치 풀을 선택한다.

            • 스팟 플릿이 예산에 도달하거나 원하는 용량에 도달하면 인스턴스 시작을 중지한다. 스팟 플릿에 스팟 인스턴스를 할당하는 전략을 정의해야 한다.

              • 최저 가격: 가장 낮은 가격인 풀에서 인스턴스를 시작하도록 하여 비용이 최적화된다. 워크로드가 매우 짧은 경우 적합하다.

              • 다양성: 스팟 인스턴스를 직접 정의한 모든 풀에 분산한다. 가용성과 긴 워크로드에 적합하다.

                용량 최적화: 원하는 인스턴스 수에 맞는 최적의 용량을 가진 풀을 사용한다.

              • 가격 용량 최적화(추천): 사용 가능한 용량이 가장 큰 풀을 선택하고, 그 중 가격이 가장 낮은 풀을 선택한다.

  • Dedicated Hosts

    • 물리 서버 전체를 예약하여 인스턴스 배치를 제어할 수 있다.

    • 소켓, 코어, VM 소프트웨어 라이선스 마다 비용이 청구될 수 있다.

    • 물리적인 서버를 예약하기 때문에 가장 비싸다.

    • 복잡한 라이센싱 모델이 있거나 회사에서 강력한 규제와 규정 준수 요건이 있는 경우 적합하다.

    • 기존에 온프레미스 환경에서 사용하던 소프트웨어 라이선스를 그대로 사용 가능하다.

    • 저수준 하드웨어에 대한 가시성을 제공한다.

  • Dedicated Instances

    • 전용 하드웨어 사용

    • 사용자 하드웨어에 고유한 인스턴스를 갖는 것

    • 같은 계정의 다른 인스턴스와 하드웨어를 공유할 수 있다.

    • 인스턴스 배치는 제어할 수 없다.

  • Capacity Reservations

    • AZ의 특정 기간동안 얼마 만큼의 용량을 이용할 지 예약할 수 있다.

    • 온디맨드 인스턴스가 실행중이든 아니든 용량 기반이므로 요금은 계속 나간다.

    • 시간 약정이 없다.

    • 특정 AZ에 존재하는 단기 연속적인 워크로드에 적합하다.

EBS

특징

  • Elastic Block Store

  • 인스턴스가 실행중인 동안 연결 가능한 네트워크 드라이브

    • 물리 드라이브가 아니다. 따라서 인스턴스와 EBS 볼륨이 통신하기 위해 네트워크 연결이 필요하다. 이로 인해 지연이 발생할 수 있다.

    • 하지만 인스턴스가 내려가고 다른 인스턴스를 구동시켜야 할 때 다시 쉽게 붙일 수 있다.

  • CCP 레벨의 EBS는 한 번에 하나의 인스턴스에만 마운트 가능하다.

  • Associate 레벨의 경우 일부 EBS를 다중 연결 가능하다.

  • 특정 AZ에만 바운드되어 사용 가능하다. 스냅샷을 이용하면 서로 다른 AZ 간 이동이 가능하다. (매핑할 EC2와 같은 AZ에 있어야 한다.)

  • 사용할 용량을 미리 결정해야 한다.

  • EC2와 함께 삭제될 지 여부는 직접 설정할 수 있다.

    • 루트 EBS 볼륨은 기본적으로 EC2 인스턴스가 삭제될 때 함께 삭제되도록 설정되어 있다. 다른 EBS 볼륨은 기본적으로 함께 삭제되지 않는다.

스냅샷

  • EBS 볼륨의 특정 시점에서의 백업

  • EBS 스냅샷을 다른 AZ 혹은 리전에 복사할 수 있다.

  • 재해 복구 시에 AWS의 다른 리전에 데이터를 백업해둘 수 있다. 백업 시에는 IO를 사용하므로 애플리케이션에 많은 부하가 있을 때에는 진행하면 안된다.

  • AZ 간에 EBS 볼륨을 이동시키려면 스냅샷을 이용해야 한다.

    • ex) AZ-1에서 스냅샷 생성 -> AZ-2에서 스냅샷을 기반으로 EBS 볼륨 생성 후 사용

기능

  • 스냅샷 아카이브

    • 스냅샷을 75% 저렴한 아카이브 티어로 옮겨둘 수 있다.

    • 아카이브된 스냅샷은 복원하는 데에 24~72시간 정도가 걸린다.

  • 스냅샷을 휴지통 보관

    • 실수로 스냅샷을 지웠을 때 복원할 수 있도록 한다.

    • 휴지통에 스냅샷을 보관하는 기간을 Retention Rules로 설정 가능하다.

  • 빠른 스냅샷 복원

    • 스냅샷을 완전히 초기화한다.

    • 스냅샷이 매우 클 때 EBS 볼륨을 초기화해야 하거나 매우 빠르게 인스턴스화해야 할 때 유용하다.

    • 비용이 비싸다.

볼륨 유형

  • 크기, 처리량, 초당 I/O 작업 수(IOPS)로 구분된다.

  • 범용 SSD

    • gp2 / gp3

      • 다양한 워크로드에 대해 가격과 성능의 균형을 맞추는 범용 SSD 볼륨

        • 비용 효율적이다.

        • 지연이 적고 시스템 부트 볼륨, 가상 데스크톱, 개발 및 테스트 환경에 적합하다.

        • gp3는 gp2보다 최근에 개발되었으며 IOPS와 처리량을 각각 독립적으로 설정할 수 있다. 이 때 볼륨 크기와는 상관 없다.

        • gp2는 볼륨의 크기와 IOPS가 연관되어 있다. 즉, 볼륨 크기가 커져야 IOPS가 올라갈 수 있다.

        • 둘 다 최대 16000 IOPS 까지 지원한다.

  • IOPS 프로비저닝 SSD

    • io1 / io2 Block Express

      • 지연이 적고 처리량이 높은 워크로드에 적합한 가장 높은 성능의 SSD 볼륨 (프로비저닝 되어 있다.)

      • 16000 IOPS 이상이 필요한 경우 사용해야 한다.

      • io1의 경우 기본 32000 IOPS, Nitro EC2 인스턴스와 함께 사용 시 64000 IOPS까지 지원한다.

      • io2의 경우 최대 256,000 IOPS까지 지원한다.

      • 데이터베이스 워크로드와 같이 스토리지 성능과 일관성에 민감한 경우에 적합하다.

      • EBS 다중 연결 기능을 지원한다.

  • 하드디스크 드라이브

    • st1

      • 자주 접근되고 처리량이 많은 작업을 위한 저비용 대용량 볼륨

      • 빅데이터, 데이터 웨어하우스, 로그 프로세싱 등에 적합하다.

    • sc1

      • 자주 접근되지 않는 데이터를 위한 가장 저렴한 HDD

  • EC2의 부팅 볼륨(OS의 루트가 실행되는 위치)으로는 gp2/gp3/io1/io2 만 사용 가능하다.

다중 연결

  • 동일한 EBS 볼륨을 동일 AZ에 있는 여러 개의 EC2 인스턴스와 연결할 수 있다.

  • io1, io2 제품에서만 사용 가능하다.

  • 각 EC2 인스턴스는 고성능 볼륨에 대한 동시 읽기 및 쓰기 권한을 갖게 된다.

  • 클러스터링된 리눅스 애플리케이션 사용 시 가용성이 높아진다.

  • 지정된 AZ에서만 사용 가능하다.

  • 한 번에 최대 16개의 EC2 인스턴스에 연결 가능하다.

암호화

  • EBS 볼륨을 생성하면 데이터가 볼륨 내부에 암호화되고, 인스턴스와 볼륨 간의 데이터 전송 시에도 암호화된다.

  • 스냅샷 뿐만 아니라 스냅샷으로 생성한 볼륨 역시 모두 암호화된다.

  • 이때 암호화 및 복호화 메커니즘은 백그라운드에서 처리된다.

  • 지연 시간에는 영향이 거의 없다.

  • KMS에서 암호화 키를 생성해 AES-256 암호화 표준을 갖는다.

  • 암호화되지 않은 스냅샷을 복사해 암호화할 수 있다.

  • 암호화된 볼륨의 스냅샷은 암호화되어 있다.

EC2 인스턴스 스토어

  • EBS 볼륨은 네트워크 드라이브이므로 확장성 이식성은 좋지만 성능이 제한되어 있다.

  • 고성능의 하드디스크가 필요하다면 EC2 인스턴스 스토어를 사용해 같은 서버에 물리적으로 연결된 디스크 공간을 이용할 수 있다.

  • EC2 인스턴스가 중지되거나 종료되면 스토리지가 사라지므로 임시 스토리지로 부른다.

  • 버퍼나 캐시, 스크래치 데이터, 임시 콘텐츠 등을 담아둘 수 있다.

  • EC2 인스턴스의 서버에 장애가 발생할 때(hardware fail) 데이터가 사라질 위험이 있다.

  • 필요 시 주기적으로 백업하거나 복제해두어야 한다.

EFS

  • Elastic File System

  • 수백개의 EC2 인스턴스에 마운트 가능한 네트워크 파일 시스템

  • 기본적으로 여러 AZ에 분포된 EC2 인스턴스들에 마운트될 수 있다.

  • 고가용성, 확장성을 지원하지만 EBS 볼륨에 비해 3배 정도 비싸다. 사용하는 데이터 용량(GB)에 따라 비용이 과금된다.

  • 파일 시스템이 자동으로 petabytes 단위까지 확장되므로 미리 용량을 지정하지 않아도 된다.

  • 콘텐츠 관리, 웹서비스 제공, 데이터 공유, 워드프레스 등을 위해 사용 가능하다.

  • NFS 프로토콜을 사용한다.

  • EFS에 대한 접근을 제어하기 위해서 보안 그룹을 사용해야 한다. 이는 EC2 생성 시 EFS와 연동하면 AWS가 자동으로 만들어준다.

  • Linux 기반 AMI와 호환된다. POSIX 파일 시스템을 사용하고 표준 파일 API를 가진다.

  • KMS를 사용해 암호화를 활성화할 수 있다.

모드

  • 성능 모드

    • General Purpose (기본으로 활성)

      • 웹서버, CMS 등 지연 시간에 민감한 경우 사용한다.

    • Max I/O

      • 낮은 지연 시간, 많은 처리량, 병렬성이 필요한 빅데이터, 미디어 프로세싱 등에 사용한다.

  • 처리량 모드

    • Bursting

      • 파일 시스템의 사용 용량에 따라 처리량을 조금 더 확장할 수 있다.

      • 버스팅 성능은 TiB 당 100MiBps가 제공된다.

    • Provisioned

      • 스토리지 크기에 관계 없이 처리량을 지정할 수 있다.

      • ex) 1TB 스토리지에서 1 GiB/s의 처리량이 나오도록 지정

    • Elastic (추천)

      • 워크로드에 따른 처리량 자동 조절

      • ex) 읽기는 최대 3GiB/s, 쓰기는 최대 1GiB/s가 되도록 지정

      • 일정 주기로 실행되는 배치 작업으로 디스크에 접근하는 것이 아니라 특정 요인으로 인해 랜덤하게 접근되는 등 워크로드를 예측하기 어려울 때 유용하다.

스토리지 클래스

스토리지 계층

  • 파일을 일정 시간을 기준으로 스토리지 계층 간 이동을 시키기 위해 수명 주기 정책을 구현할 수 있다.

  • Standard

    • 자주 접근하는 파일을 위한 계층

  • Infrequenct access (EFS-IA)

    • 자주 접근하지 않을 때 사용

    • 파일을 조회 시 비용이 발생한다.

    • 이 스토리지 계층을 이용해 비용을 절감시킬 수 있다.

  • Archive

    • 1년에 n번 접근하는 경우 사용

파일 시스템 타입

  • 가용성과 지속성을 기준으로 두 타입으로 나뉜다.

  • Standard(Regional): multi AZ, 운영 환경에 적합하다.

  • One Zone: 하나의 AZ에서만 사용 가능하며 개발 환경에 적합하다. 백업이 기본적으로 활성화되어 있으며, 접근 빈도가 낮은 스토리지 계층인 EFS One Zone-IA와 호환된다.

AMI

  • Amazon Machine Image

  • 사용자 지정 EC2 인스턴스를 의미한다.

  • 각 소프트웨어 구성에 대한 설정 파일, OS, 모니터링 도구 등을 정의해 부팅과 설정 시간이 단축된다.

  • 보안 소프트웨어, 필수 소프트웨어 등 EC2 인스턴스에 설치하고자 하는 소프트웨어가 AMI를 통해 사전에 패키징된다.

  • 특정 리전에 맞도록 구축하고, 원하는 리전에 복사해놓을 수 있다.

  • EC2 인스턴스를 여러 종류의 AMI에 실행시킬 수 있다.

    • Public AMI: AWS가 제공하는 AMI

    • Custom AMI: 직접 사용자가 만들어서 유지하는 AMI

    • AWS Marketplace AMI: 마켓플레이스에서 특정 판매자가 만든 AMI

  • AMI 사용 과정

    • EC2 인스턴스를 시작하고 커스터마이즈한다.

    • 인스턴스를 중지시켜 데이터 무결성을 확보한다.

    • AMI를 빌드한다. 이 때 EBS 스냅샷이 같이 생성된다.

    • 다른 AMI들에 인스턴스를 실행할 수 있다.

Last updated