Table of Contents
EC2
- Elastic Compute Cloud
- 컴퓨팅 파워를 제공하는 서비스
EC2의 특성
- Virtual Machine 서비스
- 다양한 OS 지원
- Auto Scaling을 통한 탄력적 확장/축소
- 다양한 인스턴스 타입 제공
- 사용한만큼만 지불하는 초단위 온디맨드 가격 모델
EC2의 구성
- 인스턴스: 클라우드에서 사용하는 가상 서버로 CPU, GPU, 메모리 등 연산을 위한 하드웨어를 담당
- EBS: Elastic Block Storage의 줄임말로 클라우드에서 사용하는 가상 하드디스크
- AMI: EC2 인스턴스를 실행하기 위한 정보를 담고 있는 이미지
- 보안 그룹: 가상 방화벽
EC2 종류
- AMI
- OS, 파일 시스템과 같은 것들을 담고 있는 이미지
- AWS에서 기본적으로 다음과 같은 이미지를 제공하며, 직접 만들어 관리할 수도 있다
- 인스턴스 타입
- 아키텍처, CPU, GPU, 메모리, 용량에 따라 구분
- 범용(T, M): 균형 있는 컴퓨팅, 메모리 및 네트워킹 리소스를 제공하며, 다양한 여러 워크로드에 사용 가능
- 컴퓨팅 최적화(C): 고성능 프로세서를 활용하는 컴퓨팅 집약적인 애플리케이션에 적합
- 메모리 최적화(R, X): 메모리에서 대규모 데이터 세트를 처리하는 워크로드를 위한 빠른 성능을 제공
- 스토리지 최적화(H, I, D): 로컬 스토리지에서 매우 큰 데이터 세트에 대해 많은 순차적 읽기 및 쓰기 액세스를 요구하는 워크로드를 위해 설계
- 가속 컴퓨팅(G, F, P): 하드웨어 액셀러레이터를 사용하여 부동 소수점 계산이나 그래픽 처리 등의 기능을 훨씬 효율적으로 수행
EC2 생명주기
- 중지
- 중지 중에는 인스턴스 요금 미청구
- (단, EBS, Elastic IP 등 다른 구성요소는 청구됨)
- 중지 후 재시작시 퍼블릭 IP 주소 변경됨
- 종료
- 인스턴스 영구적으로 삭제
EC2 인스턴스의 스토리지 옵션
-
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Storage.html
- EBS
- EBS(Elastic Block Store)는 인스턴스와 연결하고 분리할 수 있는 내구성이 뛰어난 블록 수준 스토리지 볼륨을 제공합니다. 여러 EBS 볼륨을 하나의 인스턴스에 연결할 수 있습니다. EBS 볼륨은 연결된 인스턴스의 수명과 독립적으로 유지됩니다. EBS 볼륨을 암호화할 수 있습니다. 데이터의 백업 사본을 유지하기 위해 EBS 볼륨에서 스냅샷을 생성할 수 있습니다. 스냅샷은 Amazon S3에 저장됩니다. 스냅샷에서 EBS 볼륨을 생성할 수 있습니다.
- 인스턴스 스토어
- 인스턴스 스토어는 인스턴스에 블록 수준의 임시 스토리지를 제공합니다. 인스턴스 스토어 볼륨의 수, 크기 및 유형은 인스턴스 유형과 인스턴스 크기에 따라 결정됩니다. 인스턴스 스토어에 저장된 데이터는 연관 인스턴스의 수명 기간 동안에0000 유지되고, 해당 인스턴스를 중단하거나 최대 절전 모드로 전환하거나 종료하면 인스턴스 스토어 볼륨의 데이터가 손실됩니다.
- EFS
- EFS는 Amazon EC2에서 사용할 수 있는 확장 가능한 파일 스토리지를 제공합니다. EFS 파일 시스템을 만든 후 파일 시스템을 마운트하도록 인스턴스를 구성할 수 있습니다. 하나의 EFS 파일 시스템을 여러 인스턴스에서 실행하는 워크로드 및 애플리케이션에 대한 공통 데이터 소스로 사용할 수 있습니다.
- S3
- Amazon S3를 활용하면 저렴하지만 신뢰성이 있는 데이터 스토리지 인프라에 액세스할 수 있습니다. S3은 언제든지 Amazon EC2 내 또는 웹의 어디서나 원하는 데이터의 양을 저장하고 가져올 수 있게 해주어 웹 규모의 컴퓨팅 작업을 쉽게수행할 수 있도록 설계되었습니다. 예를 들어 Amazon S3를 사용하여 데이터 및 애플리케이션의 백업 복사본을 저장할 수 있습니다. Amazon EC2는 Amazon S3를 사용하여 EBS 스냅샷과 인스턴스 스토어 지원 AMI를 저장합니다.
EC2 구성요소
EBS
- EC2 인스턴스에서 사용할 영구 블록 스토리지 볼륨
- EC2 인스턴스와 네트워크로 연결되어 있어 생명주기를 같이 할 수도 있고, 따로 분리할 수도 있음
- EC2 인스턴스 하나에 여러개의 EBS를 추가로 구성할 수 있음
- EC2 인스턴스와 같은 가용영역에 존재해야함
- SSD, HDD 등 다양한 타입 제공
- 증분 형태로 스냅샷을 찍어서 S3에 저장할 수 있음
보안그룹
Auto Scaling
- EC2 인스턴스의 숫자를 상황에 따라 탄력적으로 변경 가능하도록 도와준다
- CPU 부하, 실행중인 인스턴스의 개수와 같이 특정 조건에 따라 여러 가용 영역에 걸쳐 인스턴스 숫자를 조절한다
- 실행되어야 하는 인스턴스의 최소, 최대 개수를 설정할 수 있다
- 애플리케이션이 항상 현재 트래픽 수요를 처리할 수 있는 적절한 용량을 보유하도록 보장한다
오토 스케일링 실습
- AMI, EC2 타입, 보안그룹 등이 정의된 시작 템플릿을 만든다
- 1개 이상의 가용 영역과 인스턴스의 최소, 최대 개수를 설정한다
Load Balancer
- 트래픽을 지정한 인스턴스 그룹내에서 적절히 분산한다
- 오토 스케일링과 같은 방식으로 여러 개의 EC2 인스턴스를 실행중인 경우를 생각해보자
- 로드 밸런서가 없다면
- 모든 EC2 인스턴스의 IP 주소를 알고 있어야 한다
- 새로운 인스턴스가 추가, 삭제 될 때마다 해당 인스턴스의 IP 주소를 관리해줘야 한다
- 로드 밸런서를 생성하면
- 모든 인스턴스의 IP 주소를 알 필요없이, 로드 밸런서의 도메인 네임에 트래픽을 전송하면 된다
- (로드밸런서의 IP 주소는 고정되지 않음)
- 로드 밸런서가 EC2 인스턴스의 IP 주소를 알아서 관리한다
- 특정 인스턴스에만 트래픽이 과부하되지 않고, 여러 인스턴스에 골고루 트래픽이 전달되도록 해준다
- EC2의 추가/삭제를 자동으로 감지해 트래픽을 실행중인 인스턴스에만 전달한다
로드 밸런서 실습
- 먼저 대상그룹을 통해 로드 밸런싱할 EC2 인스턴스 그룹을 만든다
- 로드 밸런서 유형을 선택한다
- 대상그룹을 지정해 로드 밸런서를 만든다