Search

EC2 (Elastic Compute Cloud)

EC2
Infrastructure as a Service
Virtual Machine 서비스
다양한 OS 지원
Auto Scaling을 통한 탄력적 확장 / 축소
성능에 따른 다양한 인스턴스 타입 제공

EC2 인스턴스 타입 종류 (family)

EC2 인스턴스 타입 설명

인스턴스 구매 옵션

인스턴스 구매 옵션
온디맨드 인스턴스
약정 없이 초당 사용한 만큼 비용 지불
처음 60초 이후 초당 과금
장기 약정이나 선 결제가 없음
단기간 동안 예측할 수 없는 워크로드 및 중단되어서는 안되는 애플리케이션에 적합
EC2에서 처음으로 개발 중이거나 시험 중인 애플리케이션 사용에 적합
스팟 인스턴스
사용하지 않는 예비 EC2 용량을 경매방식으로 구매하여 사용하는 방식
온디맨드 인스턴스보다 최대 90% 저렴
경매 조건에 미달하면 인스턴스가 정지 또는 종료되므로 언제든지 시작 및 종료가 가능한 경우에 사용
여러 개의 스팟 인스턴스를 하나의 그룹으로 묶어 스팟 집합(Spot Fleets)으로 구매해서 사용
예약 인스턴스 + 스팟 인스턴스(짧은 시간 급격하게 증가된 용량이 필요한 경우)의 조합으로 사용
예약 인스턴스
1년 또는 3년 기간을 약정하여 인스턴스를 사용
온디맨드에 비해 최대 72% 저렴
수요가 꾸준하고 예측가능한 경우에 유용
결제옵션은 선결제, 부분 선결제, 선결제 없음 3가지 선택 가능
예약 인스턴스 유형
표준 예약 인스턴스(Standard Reserved Instances) : 인스턴스 타입을 지정하면 예약기간동안 변경 불가능
전환형 예약 인스턴스(Convertible Reserved Instances) : 예약기간동안 인스턴스 타입 변경가능
정기 예약 인스턴스(Scheduled Reserved Instances) : 지정된 시간, 날짜 동안에 인스턴스가 시작되어 사용
Saving Plan
1년 또는 3년 기간의 일정 사용량을 약정하여 시간당 요금으로 인스턴스를 사용
EC2 뿐만 아니라 LambdaFargate 서비스도 사용 가능
사용량은 시간당 USD 요금으로 측정
온디맨드에 비해 최대 66~72% 저렴
Compute Saving Plans 와 EC2 Instance Saving Plans 두 가지 유형이 있음
EC2 인스턴스 패밀리, 인스턴스 사이즈, 리전, OS 관계 없이 적용 및 변경 가능한 유연성이 있음
전용 호스트 / 전용 인스턴스
전용 호스트
물리적인 전용 서버를 할당 받아 사용하는 방식
CPU 소켓, 코어 등이 표시됨
사용자가 인스턴스 배치 방법을 지정할 수 있음
소켓, 코어당 또는 VM 당으로 사용하는 소프트웨어 라이선스 사용 가능
CPU 코어나 물리적 서버에 할당되는 라이선스를 기존에 보유한 경우에 적합
전용 인스턴스
물리적인 전용 서버를 할당 받아 사용하는 방식
전용 호스트에서 사용가능한 CPU 코어, 인스턴스 배치, 사용자 라이선스 사용 불가

ENI (Elastic Network Interface)

ENI
가상 네트워크 인터페이스
IP 주소, MAC 주소 등이 부여됨
인스턴스에 연결되어 네트워크 통신을 하는 역할
인스턴스 생성시 기본 네트워크 인터페이스가 IP 주소 등의 정보 할당과 함께 생성됨
EC2에 추가로 여러 개의 네트워크 인터페이스 연결 가능

Security Group

Security Group
EC2 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할
EC2 인스턴스의 ENI와 연결됨
보안 그룹은 허용 규칙만 지정 가능하고 거부 규칙은 지정 할 수 없음
보안 그룹은 연결 상태를 추적하는 상태저장 방화벽 (Stateful Firewall)

트래픽 종류

인바운드 트래픽
외부에서 EC2 인스턴스로 들어오는 트래픽
아웃바운드 트래픽
EC2 인스턴스에서 외부로 나가는 트래픽

제어 규칙

트래픽 유형 (SSH, HTTP 등)
프로토콜 (TCP, UDP 등)
포트 (22, 8080 등)
대상 (개별 UP 주소, IP 주소대역, 다른 보안 그룹)

Stateful

아웃바운드 규칙에 상관없이 허용된 인바운드 트래픽에 대한 반응으로 외부로 나가는 흐름이 수행
사용자가 인스턴스에서 요청을 전송하면 해당 요청의 응답 트래픽은 인바운드 보안 그룹 규칙에 관계없이 인바운드 흐름이 허용

탄력적 IP (Elastic IP)

Elastic IP
인터넷에 연결 가능한 고정적인 퍼블릭 IP 주소
인스턴스 생성시 자동으로 할당 받은 Public IP는 인스턴스를 재시작하면 다른 IP로 재할당 받기에 Public IP 주소가 변경됨
EC2 인스턴스의 ENI에 Elasitc IP주소를 연결하면 EC2 인스턴스를 다시 시작해도 동일한 IP 주소로 접속할 수 있음
실행 중인 인스턴스에 연결된 Elastic IP 한 개는 무료로 사용
리전당 5개의 Elastic IP로 제한됨

AMI (Amazon Machine Image)

AMI
OS, 애플리케이션, 서버 프로그램 설정 등이 미리 구성된 이미지
EC2 인스턴스를 시작하는데 AMI 사용하여 EC2 시작 시 OS 설치나 서버 소프트웨어 설정 등을 별도로 할 필요 없음
3가지 유형
AWS 제공 AMI
AWS 마켓플레이스 AMI
AWS 커스텀 AMI
운영중인 EC2 인스턴스를 커스텀 AMI로 만들어서 동일한 환경으로 구성된 EC2를 빠르게 시작 가능

배치 그룹 (Placement Groups)

Placement Groups
EC2 인스턴스 배치를 구성하는 방법

3가지 유형의 배치 그룹

클러스터 배치 그룹
고성능 네트워크 연결로 이루어진 인스턴스 묶음
근접한 서버를 고속 네트워크로 연결하여 그룹화
네트워크 지연시간이 매우 짧음
짧은 대기시간이 필요한 고성능 컴퓨팅(HPC) 등에 적합
짧은 네트워크 지연 시간, 높은 네트워크 처리량 또는 대부분의 네트워크 트래픽이 그룹 내 인스턴스 간에 전송되는 경우에도 권장
파티션 배치 그룹
인스턴스 그룹을 하드웨어를 공유하지 않는 파티션 단위로 분할
EC2는 각 그룹을 파티션이라고 하는 논리 세그먼트로 나뉨
하드웨어를 파티션으로 그룹화
파티션끼리는 서로 다른 하드웨어 사용 (하드웨어를 공유하지 않음)
하나의 하드웨어 장애 발생시 다른 하드웨어에 영향이 없음 (파티션간 장애의 영향을 분리 가능)
하둡 등의 빅데이터 분산처리 시스템에 사용
파티션 배치 그룹은 가용 영역당 파티션을 최대 7개까지 가질 수 있음
분산형 배치 그룹
인스턴스 그룹을 별개의 서버랙 단위로 분할
같은 서버랙의 서버를 그룹화
분산 그룹의 서버는 다른 서버랙에 있음
분산 그룹끼리 서버랙을 공유하지 않으므로 서버랙에 장애 발생시 안전
매우 중요하고 고가용성이 필요한 애플리케이션에 적합

라이프 사이클

라이프 사이클
시작 (Start)
인스턴스 전원을 켜는 것
재부팅 (Reboot)
인스턴스를 재부팅
중지 (Stop)
인스턴스 전원을 끄는 것
종료 (Termination)
인스턴스 삭제
최대절전 모드 (Hibernate)
RAM에 있는 애플리케이션 상태를 저장 후 중지상태 전환
노트북에서 종료를 안하고 스크린만 닫을 때와 동일함
서버 부팅시 프로세스 로드시간이 오래 걸리는 시스템의 경우 유용

ELB (Elastic Load Balancing)

ELB

확장성 (Scalability)

수직적 확장
자원을 추가하는 방식
EC2 인스턴스를 t2.micro에서 t2.large로 변경하는 것

Load Balancing 알고리즘

Round Robin (RR) / 라운드 로빈
현재 구성된 장비에 부하를 순차적으로 분산
Least Connection / 최소 접속 방식
현재 구성된 장비 중 가장 활성화된 세션 수가 적은 장비로 부하를 분삭
Weighted Round Robin / 가중치 기반 라운드 로빈
라운드 로빈 방식과 동일하지만 각 장비에 가중치를두어 가중치가 높은 장비에 부하를 더 많이 분산하는 방식 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘
Weighted Least Connection / 가중치 기반 최소 접속 방식
최소 접속 방식과 동일하지만 각 장비에 가중치를 부여해 가중치가 높은 장비에 부하를 더 많이 분산하는 방식 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘
Heah / 해시
해시 알고리즘을 이용한 부하 분산
수평적 확장
노드를 추가하는 방식
EC2 인스턴스 개수를 늘리는 것
탄력성이라고도 함애플리케이션 확장 방법으로 주로 사용됨

고 가용성

고 가용성
지속적으로 정상 운영이 가능한 상태
이중화

개요

트래픽을 분산하는 서비스
EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상으로 자동으로 분산 가능
비정상 대상을 감지하면 해당 대상으로 트래픽 라우팅을 중단하고 대상이 다시 정상으로 감지되면 트래픽을 해당 대상으로 다시 라우팅

종류

ALB (Application Load Balancer)

Layer 7
HTTP, HTTPS
HTTP header Content를 사용하여 라우팅 요청 처리
웹 애플리케이션, 서비스에 적합

NLB (Netwrok Load Balancer)

Layer 4
TCP, UDP, TLS
Protocol, Port Number를 사용하여 라우팅 요청 처리
수백만의 대용량 트래픽 처리에 적합

GWLB (Gateway Load Balancer)

Layer 3 - Gateway Load Balancer Endpoint
Layer 4 - Gateway Load Balancer
Transparency한 네트워크 게이트웨이를 제공하므로 보안 검사를 위한 방화벽, IPS, IDS 등의 원본 패킷 의 데이터가 중요한 가상 어플라이언스에 적합

CLB (Classic Load Balancer)

Layer 4, Layer 7
HTTP, HTTPS, TCP, TLS
Protocol, Port Number를 사용해 라우팅 요청 처리
이전 세대 EC2-Classic 네트워크에서 사용

구성 (GWLB 제외)

ALB (Application Load Balancer)

ALB
HTTP / HTTPS 요청을 로드 밸런싱 해야 하는 경우 사용
웹 애플리케이션 처리에 적합
리스너 규칙을 기반으로 라우팅 설정이 가능함
데이터 전송 보안을 위한 HTTPS 프로토콜 사용시 SSL/TLS 인증서를 배포해야함
인증서는 ACM 사용 또는 클라이언트 인증서 사용 가능

Listener 규칙

Host header
각 요청의 호스트 이름을 기반으로 라우팅
aaa.example.com 또는 bbb.example.com
Path
요청의 URL의 경로 기반으로 라우팅
www.example.com/audio 또는 www.example.com/video
Http Header
각 요청의 HTTP 헤더를 기반으로 라우팅
Http Request Method
각 요청의 HTTP 요청 매서드를 기반으로 라우팅
Query String
쿼리 문자열의 키/값 페어 또는 값을 기반으로 라우팅
Source IP
각 요청의 소스 IP 주소를 기반으로 라우팅

NLB (Network Load Balancer)

NLB
TCP, UDP, TLS 요청을 로드 밸런싱 해야 하는 경우에 사용
고도의 성능이 요구되거나 대기 시간이 낮아야 하는 애플리케이션에 적합
게임 등의 수백만의 동시 사용자 처리에 적합
고정 IP 주소 할당 가능
클라이언트 IP 주소 전달 가능 (Source IP Preservation)
ALB 처럼 리스너 규칙 설정 없음
리스너 프로토콜은 TCP, TCP/UDP, UDP, TLS를 사용 할 수 있음
데이터 전송보안을 위한 TLS 프로토콜 사용시 SSL/TLS 인증서를 배포해야함
인증서는 ACM 사용 또는 클라이언트 인증서 사용 가능

TG (Target Groups)

TG

Target Type (대상 유형)

인스턴스
EC2 Instance
EC2 Auto Scaling Groups
IP 주소
Local VPC CIDR
Public IP 주소
Fargate
Lambda
Application Load Balancer

Protocols

Protocols
ALB
HTTP
HTTPS
NLB
TCP
TLS
UDP
TCP_UDP
GWLB
GENEVE

Health Checks (상태 검사)

Health Checks
등록된 대상(Target)에게 상태 확인 메시지를 보내서 대상의 상태를 확인

Health Checks 종류

ICMP (Internet Control Message Protocol)
VIP에 연결된 Real Server에 대해 ICMP(ping)로 Health Check를 수행하는 방법 단순히 서버가 살아 있는지 여부만 체크하는 방법
TCP Service Port
Load Balancer에 설정된 서버의 서비스 포트를 확인하는 방법 SYN, ACK를 받으면서 서버에 다시 ACK로 응답하고 FIN을 보내 Health Check를 종료합니다. (3 Way-Handshake 방식)
TCP Service Port - Half Open
초기 3 Way-Handshake 방식 SYN을 보내고 SYN, ACK를 받지만 이후 ACK 대신 RST를 보내 세션을 끊습니다.
HTTP 상태코드
Load Balancer가 Server로부터 3 Way-Handshake를 거치고나서 HTTP를 요청해 정상적인 상태 코드를 응답하는지 확인하는 방법
콘텐츠 확인(문자열)
Load Balancer에 Server로 Content를 요청하고 응답받은 내용을 확인하여 지정된 Content가 정상적으로 출력됐는지 확인하는 방법

Attributes (속성)

Attributes - HTTP/HTTPS
등록 취소 지연 (Deregistration delay / Connecting Draining)
Auto Scaling 축소 등으로 Deregistration 된 인스턴스에 더 이상의 요청을 보내지 않도록 하는 기능
해당 인스턴스에 진행중인 요청이 있을 경우 설정해 놓은 시간동안 여결이 유효상태가 되지 않으면 해당 인스턴스에 연결 요청을 하지 않음
느린 시작 기간 (Slow start duration)
기본적으로 대상은 대상 그룹으로 등록되자 마자 전체 요청 공유를 받기 시작하고 초기 상태 확인을 전달
느린 시작 모드에서는 로드 밸런서가 대상으로 보낼 수 있는 요청의 수를 선형으로 증가
알고리즘
라운드 로빈 (Round-Robin) : 일정 시간마다 라우팅을 변경
최소 미해결 요청 (Least Outstanding Requests) : 처리하고 있는 요청이 가장 적은 대상에게 라우팅
고정 (Stickiness Sessions / Session Affinity)
클라이언트가 세션을 유지한 상태라면 모든 요청을 동일한 인스턴스로 유지하는 기능
세션 유지를 위해 쿠키를 사용하기에 클라이언트에서 쿠키를 지원해야함
세션 데이터를 잃지 않으려는 상태정보를 유지하는 서버에 적합
Attributes - TCP/UDP/TLS
등록 취소 지연 (Deregistration delay)
Auto Scaling 축소 등으로 Deregistration 된 인스턴스에 더 이상의 요청을 보내지 않도록 하는 기능
해당 인스턴스에 진행중인 요청이 있을 경우 설정해 놓은 시간동안 여결이 유효상태가 되지 않으면 해당 인스턴스에 연결 요청을 하지 않음
등록 해제 시 연결 종료 (Connection Termination on deregistration)
등록 취소 지연에 도달 했을 때 NLB가 활성 연결 종료
프록시 프로토콜 v2
클라이언트 IP 주소 보존 (Preserve client IP addresses)
들어오는 모든 트래픽의 클라이언트 IP를 애플리케이션으로 전달
고정 (Stickiness Sessions / Session Affinity)
클라이언트가 세션을 유지한 상태라면 모든 요청을 동일한 인스턴스로 유지하는 기능
세션 유지를 위해 쿠키를 사용하기에 클라이언트에서 쿠키를 지원해야함
세션 데이터를 잃지 않으려는 상태정보를 유지하는 서버에 적합

Auto Scaling

Auto Scaling
EC2 인스턴스르 자동으로 확장하고 축소하는 기능
사용자가 정의한 조정 정책에 따라 인스턴스 수가 증가되거나 축소됨
서버의 로드가 증가하면 EC2 인스턴스 개수가 추가됨 (Scale out)
서버의 로드가 감소하면 EC2 인스턴스 개수가 줄어듬 (Scale in)

구성요소

오토 스케일링 그룹
EC2의 인스턴스 그룹
시작 템플릿
EC2서버를 시작하기 위한 AMI
인스턴스 유형 정보를 가진 템플릿
조정 옵션 (조정 정책)
Auto Scaling을 실행하기 위한 조건

조정 정책

항상 현재 인스턴스 수준 유지 관리
지정된 수의 실행 인스턴스를 항상 유지하도록 Auto Scaling 그룹을 구성
인스턴스가 비정상 상태임을 확인하면 해당 인스턴스를 종료한 다음 새 인스턴스를 시작
수동 조정
최대, 최소 또는 원하는 용량의 변경 사항만 지정하는 경우 사용
일정을 기반으로 조정
확장 작업이 시간 및 날짜 함수에 따라 자동으로 수행됨
온디맨드 기반 조정
수요 변화에 맞춰 Auto Scaling 그룹의 크기를 동적으로 조정
예측 조정 사용 (Predictive Scaling)
머신러닝을 사용하여 CloudWatch의 기록 데이터를 기반으로 용량 필요량을 예측

동적 조정 (Dynamic Scaling)

대상 추적 조정 (Target Tracking Scaling)
지정한 지표가 목표값을 초과할 때 한해서 Auto Scaling 그룹을 확장하는 방식
CPU 평균 사용률, 네트워크 인터페이스에서 송/수신한 평균 바이트 수, 로드밸런서 요청 수 등의 지표 사용 가능
단계 조정 (Step Scaling)
CloudWatch alarm의 지표를 기반으로 Auto Scaling 그룹을 확장하는 방식
크기 조정 활동이 시작된 후 정책은 크기 조정 활동 또는 상태 확인 교체가 완료되고 휴지 기간 (Cooldown Period)이 끝날 때까지 기다린 후 추가 경보에 응답
단순 조정 (Simple Scaling)
CloudWatch alarm의 지표를 기반으로 Auto Scaling 그룹을 확장하는 방식
크기 조정 활동 또는 상태 확인 교체가 진행 중인 동안에도 정책이 추가 경보에 계속 응답
Amazon SQS 기반 크기 조정
Amazon SQS 대기열의 시스템 로드 변경에 따라 Auto Scaling 그룹을 조정

조정 휴지 (Scaling Cooldowns)

EC2가 증가 또는 감소하는 활동이 발생하면 조정 휴지 시간 (Cooldown Period)을 가짐
디폴트 조정 휴지 기간은 300초
조정 휴지 기간 동안 Auto Scaling Group은 EC2를 종료하거나 시작하지 않음
EC2 인스턴스가 처음 시작된 다음 안정적인 서비스 상태가 될 때까지 시간이 소요됨
EC2가 안정적인 서비스 상태가 될 때까지 스케일링을 하지 않도록 차단하는 역할을 함
불필요한 EC2 인스턴스가 생성되거나 종료되는 것을 방지하는 기능

수명 주기 후크

Auto Scaling 인스턴스 수명 주기의 이벤트를 인식한 다음 해당 수명 주기 이벤트가 발생할 때 사용자 지정 작업을 수행
인스턴스가 In Service 상태에 가기 전에 추가적인 작업을 수행할 수 있음 (Pending State)
인스턴스가 Terminated 상태에 가기 전에 추가적인 작업을 수행할 수 있음 (Terminating State)
예시
인스턴스 시작 및 종료 시 감사 시스템에 데이터를 보내 사용자 지정 스크립트 실행

Instance Store

블록 수준의 임시 스토리지
특정 인스턴스 유형은 Instance Store라고 하는 스토리지를 가지고 있음
Instance Store는 서버에 직접 장착되어 있는 물리적 SSD 또는 HDD 스토리지
Instance Store는 IOPS 성능이 매우 높은 고성능 스토리지
인스턴스를 중지하거나 최대 절전 모드로 전환하거나 종료하면 Instance Store의 모든 스토리지 블록이 리셋됨
임시 파일을 보관하는 가장 빠른 성능의 저장 옵션
Instance StoreEC2 인스턴스가 종료되면 데이터가 삭제되므로 영구적인 저장소가 아닌 고성능을 요구하는 애플리케이션의 임시 저장소로 적합
중요한 장기 데이터의 경우 S3, EBS, EFS 등의 데이터 스토리지를 사용