EC2 기초
Amazon EC2
- EC2는 AWS 제품 중 가장 인기 있는 제품 중 하나입니다.
- EC2 = Elastic Compute Cloud = 서비스로서의 인프라
- 가상 머신 대여 (EC2)
- 가상 드라이브(EBS)에 데이터 저장
- 머신 간에 부하 분산 (ELB)
- 자동 확장 그룹(ASG)을 사용하여 서비스 확장
EC2 sizing & configuration options
- 운영 체제(OS):
Linux
,Windows
또는MacOS
- 컴퓨팅 성능 및 코어(CPU)
- 임의 메모리 액세스(RAM)
- 네트워크 연결 (EBS 및 EFS)
- 하드웨어 (EC2 인스턴스 스토어)
- 네트워크 카드: 카드의 속도, 공인 IP 주소
- 방화벽 규칙: Security Group
- Bootstrap 스크립트 (처음 시작할 때 구성): EC2 사용자 데이터
EC2 User Data
- EC2 사용자 데이터 스크립트를 사용하여 인스턴스를 부트스트랩할 수 있습니다.
- 부트스트래핑은 컴퓨터가 시작될 때 명령을 실행하는 것을 의미합니다.
- 해당 스크립트는 인스턴스가 처음 시작될 때 한 번만 실행됩니다.
- EC2 사용자 데이터 스크립트는 루트 사용자로 실행됩니다.
- 업데이트 설치
- 소프트웨어 설치
- 인터넷에서 일반 파일 다운로드
EC2 Instance Types
General Purpose (범용)
Compute Optimized (컴퓨팅 최적화)
Memory Optimized (메모리 최적화)
Accelerated Computing (가속화된 컴퓨팅)
Storage Optimized (스토리지 최적화)
Instance Features (인스턴스 기능)
Measuring Instance Performance (인스턴스 성능 측정)
AWS naming convention
m5.2xlarge
-
m
: 인스턴스 클래스 -
5
: generation (AWS improves them over time) -
2xlarge
: 인스턴스 클래스 내 크기
EC2 Instance Types
범용
- Compute
- Memory
- Networking
Compute Optimized (컴퓨팅 최적화)
- Batch processing workloads
- Media transcoding
- High performance web servers
- High performance computing (HPC)
- Scientific modeling & machine learning
- Dedicated gaming servers
Memory Optimized (메모리 최적화)
- High performance, relational/non-relational databases
- Distributed web scale caches stores
- In-memory databases optimized for BI (Business intelligence)
- Applications performing real-time processing of big unstructured data
Storage Optimized (스토리지 최적화)
- High frequency online transaction processing (OLTP) systems
- Relational & NoSQL databases
- Cache for in-memory databases (for example, Redis)
- Data warehousing applications
- Distributed file systems
Security Groups
- 보안 그룹은 AWS 네트워크 보안의 기본입니다.
- EC2 인스턴스 안팎으로 트래픽이 허용되는 방식을 제어합니다.
- 보안 그룹에는 허용 규칙만 포함됩니다.
- 보안 그룹 규칙은 IP 또는 보안 그룹을 참조할 수 있습니다.
- 보안 그룹은 EC2 인스턴스에서 방화벽 역할을 합니다.
보안그룹 구성: Type
, Protocol
, Port Range
, Source
, Destination
- Access to Ports
- Authorized IP ranges -
IPv4
andIPv6
- Control of inbound network (from other to the instance)
- Control of outbound network (from the instance to other)
- 여러 인스턴스에 연결 가능
- 지역 / VPC 조합으로 잠김
- EC2 외부에 존재 - 트래픽이 차단되면 EC2 인스턴스가 이를 볼 수 없음
- SSH 접근을 위해 하나의 별도 보안 그룹을 유지하는 것이 좋습니다.
- 애플리케이션에 액세스할 수 없는 경우(시간 초과) 보안 그룹 문제입니다.
- 응용 프로그램에서 `“connection refused”` 오류가 발생하면 응용 프로그램 오류이거나 실행되지 않습니다.
- 모든 수신 트래픽은 기본적으로 차단됩니다
- 모든 발신 트래픽은 기본적으로 승인됩니다.
Referencing other security groups
Classic Ports to know
22
= SSH (Secure Shell): log into a Linux instance
21
= FTP (File Transfer Protocol): upload files into a file sharer
22
= SFTP (Secure File Transfer Protocol): upload files using SSH
80
= HTTP : access unsecured websites
443
= HTTPS: access secured websites
3389
= RDP (Remote Desktop Protocol): log into a Windows instance
Database Port
PostgreSQL
: 5432MySQL
: 3306Oracle RDS
: 1521MSSQL
: 1433MariaDB
: 3306
Aurora
- 5432 (PostgreSQL)
- 3306 (MySQL)
EC2 인스턴스 구매 옵션
- On-Demand Instances - 짧은 워크로드, 예측 가능한 가격, 초 단위 지불 예약됨 (1년 / 3년)
- Reserved (1 & 3 years)
- 예약 인스턴스: 긴 워크로드
- 전환형 예약 인스턴스 - 유연한 인스턴스가 있는 긴 워크로드
- Saving Plans (1 & 3 years) - 사용량에 대한 약정, 긴 작업량
- Spot Instances - 워크로드가 짧고 저렴하며 인스턴스를 잃을 수 있음 (안정성이 떨어짐)
- Dedicated Hosts - 전체 물리적 서버 예약, 인스턴스 배치 제어 (전세)
- Dedicated Instances - 다른 고객과 하드웨어를 공유하지 않습니다. (호텔)
- Capacity Reservations - 특정 기간 동안 특정 AZ의 용량 예약
EC2 On Demand
- Linux 또는 Windows - 처음 1분 후 초당 청구
- 기타 모든 운영체제 - 시간당 청구
- 비용이 가장 높지만 선결제가 없음
- 장기 약정 없음
- 애플리케이션이 어떻게 작동할지 예측할 수 없는 단기 및 중단 없는 워크로드에 권장
EC2 Reserved Instances
- On-demand에 비해 최대 72% 할인
- 특정 인스턴스 속성(인스턴스 유형, 지역, 테넌시, OS)을 예약해야 합니다.
- 예약 기간 - 1년 또는 3년
- 결제 옵션 - 부분 선결제, 전체 선결제
- 예약 인스턴스의 범위 - 지역 또는 영역 (AZ의 예약 용량)
- 안정적인 애플리케이션에 권장됨 (데이터베이스)
- 예약 인스턴스를 마켓플레이스에서 사고 팔 수 있습니다.
- 장기적인 워크로드에 비용 효율적입니다.
Convertible Reserved Instance
- EC2 인스턴스 유형, 인스턴스 패밀리, OS, 범위 및 테넌시를 변경할 수 있습니다.
- 최대 66% 할인
EC2 Savings Plans
- 장기 사용에 따라 할인 (최대 72% - RI와 동일)
- 특정 유형의 사용량 약정 (1년 또는 3년 동안 시간당 $10)
- EC2 Savings Plans 이외의 사용량은 온디맨드 가격으로 청구됩니다.
- 인스턴스 크기(ex: m5.xlarge, m5.2xlarge)
- OS (ex: Linux, Windows)
- 테넌시 (호스트, 전용, 기본)
EC2 Spot Instances
📖 스팟 인스턴스를 사용하려면 원하는 인스턴스 수, 인스턴스 유형, 가용 영역 및 인스턴스 시간 당 지불하고자 하는 최고가가 포함된 스팟 인스턴스 요청을 생성합니다. 최고 가격이 현재 스팟 가격을 초과하는 경우 Amazon EC2는 용량이 가용 상태가 되는 즉시 요청을 이행합니다. 그렇지 않으면 요청이 이행될 수 있을 때까지 또는 사용자가 요청을 취소할 때까지 Amazon EC2가 대기합니다.
- 온디맨드 대비 최대 90% 할인
- max가 현재 spot price보다 낮은 경우 언제든지 잃을 수 있는 인스턴스
- AWS에서 가장 비용 효율적인 인스턴스
- Batch jobs
- Data analysis
- Image processing
- Any distributed workloads
- Workloads with a flexible start and end time
⚠️ 중요한 작업이나 데이터베이스에는 적합하지 않습니다.
스팟 인스턴스 요청 작동 방식
📖 요청 유형(일회성 또는 영구적)에 따라 Amazon EC2가 스팟 인스턴스를 중단할 때 또는 사용자가 스팟 인스턴스를
중지하는 경우 요청이 다시 열리는지 여부가 결정됩니다. 요청이 영구적인 경우 스팟 인스턴스가 중단된 후 요청이 다시
열립니다. 요청이 영구적이고 사용자가 스팟 인스턴스를 중지하는 경우 스팟 인스턴스를 시작한 후에만 요청이 열립니다.
open
, active
, or disabled
상태에서만 스팟 인스턴스 요청을 취소할 수 있습니다. 스팟 요청을 취소해도 인스턴스가 종료되지 않습니다. 먼저 스팟 요청을 취소한 다음 연결된 스팟 인스턴스를 종료해야 합니다.
EC2 Dedicated Hosts (전세)
- 사용자 전용 EC2 인스턴스 용량을 갖춘 물리적 서버
- 규정 준수 요구 사항을 해결하고 기존 서버를 사용할 수 있습니다. - 바인딩된 소프트웨어 라이센스(소켓당, 코어당, VM 소프트웨어 라이선스)
- Amazon EC2 전용 호스트를 사용하면 Amazon EC2에서 Microsoft 및 Oracle과 같은 공급업체의 적격 소프트웨어 라이선스를 사용할 수 있으므로 AWS의 탄력성, 단순성을 통해 라이선스 사용의 유연성과 비용 효율성을 얻을 수 있습니다. Amazon EC2 전용 호스트는 전적으로 고객 전용의 물리적 서버이므로 기업 규정 준수 요구 사항을 해결하는 데 도움이 될 수 있습니다.
Purchasing Options:
On-demand
- 활성 전용 호스트에 대해 초당 지불
Reserved
- 1년 또는 3년 (선결제 없음, 부분 선결제, 전체 선결제)
- 가장 비싼 옵션
- 라이선스 모델이 복잡한 소프트웨어에 유용 (BYOL - 사용자 라이선스 사용)
- 또는 강력한 규제 또는 규정 준수 요구 사항이 있는 회사
EC2 Dedicated Instances (호텔)
- 인스턴스는 전용 하드웨어에서 실행됩니다.
- 동일한 계정의 다른 인스턴스와 하드웨어 공유 가능
- 인스턴스 배치를 제어할 수 없음 (중지/시작 후 하드웨어를 이동할 수 있음)
Dedicated Hosts > Dedicated Instances
EC2 Capacity Reservations (용량 예약)
- 기간에 관계없이 특정 AZ에서 온디맨드 인스턴스 용량 예약
- 필요할 때 항상 EC2 용량에 액세스할 수 있습니다.
- 시간 약정 없음 (언제든지 생성 / 취소), 청구 할인 없음
- Regional Reserved Instances 및 Saving Plan과 결합하여 청구 할인 혜택을 받을 수 있습니다.
- 인스턴스 실행 여부에 관계없이 온디맨드 요금으로 청구됩니다.
- 특정 AZ에 있어야 하는 중단 없는 단기 워크로드에 적합
Which purchasing option is right for me ?
On demand
: 리조트에 언제든지 방문 및 숙박 전액 지불Reserved
: 미리 계획하고 장기 체류할 계획이라면 좋은 할인을 받을 수 있습니다.Saving Plans
: 일정 기간 동안 시간당 일정 금액을 지불하고 모든 객실 유형에 숙박Spot instances
: 호텔은 사람들이 빈 방을 입찰할 수 있도록 허용하고 가장 높은 입찰자가 객실을 유지합니다. 하지만 언제든지 쫓겨날 수 있습니다.Dedicated Hosts
: 리조트 건물 전체를 예약합니다.Capacity Reservations
: 숙박하지 않더라도 일정 기간 동안 객실을 정가로 예약
EC2 Spot Instance Requests
- 온디맨드 대비 최대 90% 할인 가능
- 최대 Spot price (Max)를 정의하고 현재
Spot price
<Max
일 동안 인스턴스 유지
시간당 스팟 가격은 제안 및 용량에 따라 다릅니다.
현재
spot price
> **max
**인 경우 2분의 유예 기간으로 인스턴스를 중지하거나 종료하도록 선택할 수 있습니다.
다른 전략: 지속 시간이 정의된 스팟 인스턴스 (Spot Block이라고도 함)
Spot Block Instance
- 지정된 시간(1~6시간)동안 중단 없이 스팟 인스턴스 차단
- 드문 경우 인스턴스가 회수될 수 있음
2021년 7월 1일
부터 더 이상 신규 고객에게 제공되지 않습니다. 이전에 이 기능을 사용한 고객의 경우2022년 12월 31일
까지 지속 시간이 정의된 스팟 인스턴스를 계속 지원합니다.- 배치 작업, 데이터 분석 또는 실패에 대한 복원력이 있는 워크로드에 사용
- 중요한 작업이나 데이터베이스에는 부적합
Spot Fleets
스팟 플릿은 사용자가 지정한 기준에 따라 시작되는 스팟 인스턴스의 집합이며 선택적으로 온디맨드 인스턴스 집합입니다. 스팟 플릿은 사용자의 요구 사항을 충족하는 스팟 용량 풀을 선택하고 플릿에 대한 목표 용량을 충족하는 스팟 인스턴스를 시작합니다. 기본적으로 스팟 집합은 플릿에서 스팟 인스턴스가 종료된 후 교체 인스턴스를 시작하여 목표 용량을 유지하도록 설정되어 있습니다. 스팟 플릿을 인스턴스가 종료된 후에는 유지되지 않는 일회성 요청으로 제출할 수도 있습니다.
스팟 플릿 요청에 온디맨드 인스턴스 요청을 포함할 수 있습니다.
스팟 집합 = 스팟 인스턴스 세트 + (선택 사항) 온디맨드 인스턴스
- Spot Fleet은 가격 제약으로 목표 용량을 충족하려고 시도합니다.
- 가능한 시작 풀 정의: 인스턴스 유형(m5.large), OS, 가용 영역 플릿이 선택할 수 있도록 여러 시작 풀을 가질 수 있습니다.
- 스팟 집합은 용량 또는 최대 비용에 도달하면 인스턴스 시작을 중지합니다.
스팟 인스턴스 할당 전략:
lowPrice
: 최저가 풀에서 (비용 최적화, 짧은 워크로드)
diversified
: 모든 풀에 분산 (가용성, 긴 워크로드에 적합)
capacityOptimized
: 인스턴스 수에 대한 최적의 용량을 가진 풀
스팟 Fleets을 사용하면 가장 저렴한 가격으로 스팟 인스턴스를 자동으로 요청할 수 있습니다.
EC2 요약
EC2 Instance
: AMI (OS) + Instance Size (CPU + RAM) + Storage + Security Groups + EC2 User DataSecurity Groups
: Firewall attached to the EC2 instance**EC2 User Data**
: Script launched at the first start of an instanceSSH
: start a terminal into our EC2 instances (port 22)EC2 Instance Role
: link to IAM rolesPurchasing Options
: On-Demand, Spot, Reserved (Standard + Convertible + Scheduled), Dedicated Host, Dedicated Instance
EC2 vCPU
vCPU
: 코어
x 코어당 스레드
, 논리 프로세서라고도 불리는 하나의 스레드
- 코어: 물리적인 CPU당 코어 개수
- 코어당 스레드: 1 or 2, 하이퍼스레딩을 지원하는지에 따라 지원하면 2
Amazon EC2 인스턴스는 여러 개의 스레드를 하나의 CPU 코어에서 동시에 실행할 수 있도록 하는 멀티스레딩을 지원하며 각 스레드는 인스턴스에서 가상 CPU(vCPU)로 표현됩니다.
ex) **m5.xlarge
**는 인스턴스 유형으로 기본 2개의 CPU코어와 코어당 2개의 스레드가 있어 vCPU는 총 4개이다.