EC2 Instance Storage
이번 장에서는 SAA를 준비하며 EC2 인스턴스 스토리지에 대해서 알아보도록 한다.
EBS(Elastic Block Store)
- EBS 볼륨은 인스턴스가 실행되는 동안 연결할 수 있는 네트워크 드라이브로 인스턴스가 종료된 후에도 데이터를 유지할 수 있다.
- 네트워크 드라이브이기 때문에 네트워크를 통해 인스턴스와 통신하고 이것은 약간의 지연시간이 발생할 수 있음을 의미한다.
- 손쉽게 하나의 인스턴스에서 분리하여 다른 인스턴스에 연결할 수 있다.
- 한 번에 하나의 인스턴스에만 마운트할 수 있다. (CCP 수준에서)
- 특정 가용지역에 바운드된다.
- 다른 가용지역으로 이전하기 위해서는 스냅샷을 생성하여 다른 가용지역에 EBS를 생성할 때 이전에 생성한 스냅샷을 연결해야 한다.
- “네트워크 상의 USB”로 생각하면 EBS의 개념을 이해하기 쉽다.
- 사용량 기준이 아니라 프로비저닝된 용량 기준으로 비용이 청구되며 용량은 동적으로 늘릴 수 있다.
Delete on Termination
속성을 통해서 EC2 인스턴스가 종료될 때 EBS의 삭제 여부를 결정할 수 있다.
- 특정 시점의 EBS 상태를 스냅샷으로 생성할 수 있다.
- 스냅샷을 생성할 때 인스턴스에서 볼륨을 분리할 필요는 없지만 분리하는 것이 권장된다.
- 생성된 스냅샷은 EBS와 다르게 다른 가용영역에서 사용될 수 있다.
EBS 볼륨 유형
- EBS 볼륨은 6가지 유형으로 제공되고, gp2/gp3, io1/io2만 부팅 볼륨으로 사용할 수 있다.
- gp2/gp3(SSD): 다양한 워크로드에 대해 가격과 성능의 균형을 유지하는 범용 SSD 볼륨
- 비용 효율적인 스토리지로, 대기 시간이 짧다.
- 시스템 부팅 볼륨, 가상 데스크톱, 개발 및 테스트 환경에 사용된다.
- 1GiB부터 최대 16TiB까지의 용량을 지원한다.
- gp3는 기본적으로 3,000 IOPS와 125 MiB/s를 지원한다. 독립적으로 최대 16,000 IOPS 및 처리량 최대 1,000MiB/s까지 증가가 가능하다.
- gp2는 3,000 IOPS까지 버스트할 수 있으며 최대 16,000 IOPS까지 지원할 수 있다.
- 3 IOPS per GB는 5,334 GB에서 최대 IOPS에 있음을 의미한다.
- io1/io2(SSD): 미션 크리티컬한 저지연 또는 고처리량 워크로드를 위한 고성능 SSD 볼륨
- 지속적인 IOPS 성능을 제공하는 중요한 비즈니스 애플리케이션 또는 16,000 IOPS 이상을 지원해야 할 때 사용된다.
- 스토리지 성능 및 일관성에 민감한 데이터베이스 워크로드에 적합하다.
- io1/io2 (4GiB - 16TiB): Nitro EC2 인스턴스의 경우 최대 PIOPS 64,000까지 지원하며 다른 인스턴스의 경우 32,000까지 지원한다.
스토리지 크기와 독립적으로 PIOPS를 늘릴 수 있다.
io2는 io1과 가격이 동일하지만 내구성이 더 높고 GiB당 IOPS가 더 많다. - io2 Block Express (4 GiB - 64 TiB): 밀리초 미만의 지연시간을 제공한다. 최대 PIOPS는 256,000, IOPS:GiB 비율은 1,000:1이다.
- EBS 다중 연결을 지원한다.
- st1(HDD): 자주 액세스하고 처리량이 많은 워크로드를 위해 설계된 저렴한 HDD 볼륨
- 125MiB부터 16TiB까지의 용량을 지원하며 부트 볼륨으로는 사용될 수 없다.
- st1(Throughtput Optimized HDD)의 경우 처리량에 최적화 되어 있으며 빅데이터, 데이터 웨어하우스, 로그 처리에 사용된다.
최대 처리량은 500MiB, IOPS 500이다.
- sc1(HDD): 액세스 빈도가 낮은 워크로드용으로 설계된 가장 저렴한 HDD 볼륨
- sc1(Cold HDD)의 경우 최저 비용으로 자주 액세스하지 않는 데이터를 저장할 때 사용한다.
최대 처리량은 250MiB/s - IOPS 250이다.
- sc1(Cold HDD)의 경우 최저 비용으로 자주 액세스하지 않는 데이터를 저장할 때 사용한다.
- EBS 볼륨 유형을 표로 정리하면 아래와 같다.
EBS Multi-Attach - io1/io2 famaily
- 동일한 EBS 볼륨을 같은 가용지역 내의 여러 인스턴스에 연결할 수 있다.
- 연결된 각 인스턴스에는 볼륨에 대한 전체 읽기 및 쓰기 권한이 있다.
- 더 높은 애플리케이션 가용성을 달성하기 위해 클러스터형 Linux 애플리케이션에 사용된다.(예. Teradata)
- 실행되는 애플리케이션은 동시 쓰기 작업을 관리해야 한다.
- 다중 연결을 위해서는 클러스터를 인식하는 파일 시스템을 사용해야 한다.
EBS Encryption
- 암호화된 EBS 볼륨을 사용하면 아래와 같은 특징이 있다.
- 미사용 데이터는 볼륨 내에서 암호화된다.
- 인스턴스와 볼륨 간에 이동하는 모든 데이터는 암호화된다.
- 모든 스냅샷은 암호화된다.
- 스냅샷으로부터 생성된 모든 볼륨은 모두 암호화된다.
- 암호화 및 복호화는 투명하게 처리되기 때문에 사용자가 할 일이 없다.
- 암호화는 대기 시간에 미치는 영향을 최소화한다.
- EBS 암호화는 KMS(AES-256)의 키를 활용한다.
- 암호화되지 않은 스냅샷을 복사하면 암호화가 가능하다.
- 암호화된 볼륨의 스냅샷은 암호화된다.
- 아래와 같은 과정을 통해서 암호화되지 않은 볼륨을 암호화할 수 있다.
- 볼륨의 EBS 스냅샷을 생성하고 스냅샷을 암호화한다.
- 스냅샷에서 새 EBS 볼륨을 생성한다. 이 때 볼륨도 암호화된다.
- 새롭게 생성된 암호화된 볼륨을 인스턴스에 연결한다.
EFS(Elastic File System, 네트워크 파일 시스템)
- 여러 인스턴스에 탑재할 수 있는 관리형 NFS(Network File System)다.
- EFS는 다중 AZ에서 인스턴스와 작동한다.
- 고가용성을 유지할 수 있고 확장성이 높지만 비용이 비싸다.
- 콘텐츠 관리, 웹 서비스, 데이터 공유, Wordpress와 같은 서비스에서 사용되며 NFSv4.1 프로토콜을 사용한다.
- 보안 그룹을 사용하여 EFS에 대한 액세스를 제어할 수 있다.
- Linux 기반의 AMI와 호환된다.
- KMS를 통한 저장 데이터 암호화를 지원한다.
- 표준 파일 API가 있는 POSIX 파일시스템에서 사용된다.
- 파일 시스템은 자동으로 확장되며, 사용량에 따라 비용을 지불하고 용량에 대한 계획을 제공하지 않는다.
- EFS 확장성(Scale)
- 1000개의 동시 NFS 클라이언트를, 10GB+/s의 처리량으로 처리할 수 있다.
- 자동으로 페타바이트 규모의 네트워크 파일 시스템으로 확장할 수 있다.
- 성능 모드(Performance mode, EFS 생성 시 설정)
- 범용(기본값): 지연 시간에 민감한 웹서버, CMS와 같은 서비스에 사용한다.
- 최대(I/O): 높은 지연 시간, 처리량, 높은 병렬성(빅데이터, 미디어 처리)을 위해 사용된다.
- 처리량 모드(Throughput mode)
- 버스팅: 1TB = 50MiB/s + 최대 100MiB/s 버스트
- 프로비저닝: 스토리지 크기에 관계없이 처리량 설정, 1TB 스토리지의 경우 1GiB/s
- 스토리지 계층(Storage Tiers), 수명주기 관리 기능 - N일 후 파일 이동
- 표준(Standard): 자주 액세스하는 파일용
- 자주 액세스하지 않는 데이터(Infrequent access, EFS-IA): 파일 검색 비용과 저장 비용을 절감할 수 있다.
EBS vs EFS
- EBS(Elastic Block Storage)는 아래와 같은 특징을 가지고 있다.
- 한 번에 하나의 인스턴스에만 연결할 수 있다.
- 가용영역에 종속적이다.
- gp2: 디스크 크기가 증가하면 IO가 증가한다.
- io1: 독립적으로 IO를 증가시킬 수 있다.
- EBS는 아래의 과정을 통해 다른 가용지역으로 마이그레이션될 수 있다.
- 스냅샷을 생성한다.
- 스냅샷을 다른 AZ로 복원한다.
- EBS 백업의 경우 IO를 사용하기 때문에 애플리케이션이 많은 트래픽을 처리하는 동안에는 실행하면 안된다.
- EC2 인스턴스가 종료되면 인스턴스의 루트 EBS 볼륨이 기본적으로 종료되지만 관리자에 의해 비활성화할 수 있다.
- EFS(Elastic Block Storage)는 아래와 같은 특징을 가지고 있다.
- 가용지역 전체에 최대 100개의 인스턴스를 마운트할 수 있다.
- 오직 리눅스 인스턴스에서만 사용이 가능하다.
- EFS는 EBS 대비 많은 비용이 발생한다.
- EFS-IA를 통해서 비용 절감이 가능하다.
- EFS, EBS 그리고 인스턴스 스토어도 비교대상임을 기억해야 한다.
AMI(Amazon Machine Image)
- AMI는 Amazon Machine Image의 약자로 EC2 인스턴스의 사용자 지정 이미지이다.
- 자체 소프트웨어, 설정, OS, 모니터링 등을 추가할 수 있다.
- 사전에 준비되어야 하는 소프트웨어가 포함되어 있기 때문에 인스턴스를 빠르게 부팅하고 설정할 수 있다.
- AMI는 특정 리전에서 사용되도록 구축되며 리전간 복사가 가능하다.
- 아래와 같은 AMI 종류 중에서 필요한 AMI를 선택하여 인스턴스를 실행할 수 있다.
- 퍼블릭 AMI: AWS에서 제공하는 AMI
- 자체 AMI: 직접 만들고 유지 관리하는 AMI
- AWS Marketplace AMI: 다른 사람이 만든 AMI (잠재적으로 판매를 목적으로 생성된)
- 일반적으로 인스턴스에서 AMI를 사용하는 프로세스는 아래와 같다.
- 인스턴스를 생성하고 구성한다.
- 구성이 완료된 인스턴스를 데이터 무결성을 위해 중지시킨다.
- AMI를 빌드한다. 이 때 EBS 스냅샷도 생성된다.
- 다른 AMI에서 인스턴스를 실행한다.
인스턴스 스토어(Instance Store)
- EBS 볼륨은 좋은 성능을 발휘하지만, 네트워크 드라이브로 제한된 성능을 보여준다.
- 고성능 하드웨어 디스크가 필요한 경우 EC2 인스턴스 스토어를 사용하는 것이 좋다.
- 더 좋은 I/O 성능을 보여주지만, 인스턴스 스토어가 중지되면 스토리지가 손실된다.
- 버퍼/캐시/스크래치 데이터/임시 콘텐츠에 적합하다.
- 하드웨어 고장 시 데이터 손실의 위험이 있기 때문에 관리자는 백업 및 복제를 신경써야 한다.
참고 자료
'Infrastructure > Certificate' 카테고리의 다른 글
[SAA] High Availability and Scalability: ASG (0) | 2022.11.01 |
---|---|
[SAA] High Availability and Scalability: ELB (0) | 2022.11.01 |
[SAA] EC2 Associate (0) | 2022.11.01 |
[SAA] EC2 Basics (0) | 2022.11.01 |
[SAA] IAM & AWS CLI (0) | 2022.11.01 |