EC2 기초
EC2 (Amazon Elastic Computer Cloud) 아마존 정의 : 안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스입니다. 개발자가 더 쉽게 웹 규모의 클라우드 컴퓨팅 작업을 할 수 있도록 설계되었습니다.
EC2 장점
온디맨드 가격 모델
- 가격이 초 단위로 결정
- 서비스 요금을 미리 약정하거나 선입슴이 필요 없음
빠른 구축 속도와 확장성
- 몇 분이면 전 세계에 인스턴스 수백여대를 구축 가능
다양한 구성방법 지원
- 머신러닝, 웹서버, 게임서버, 이미지처리 등 다양한 용도에 맞는 최적화된 서버 구성 가능
- 다양한 과금 모델 사용 가능
여러 AWS 서비스와 연동
- 오토스케일링, Elastic Load Balance(ELB), CloudWatch
사용 사례
- 데이터베이스, 웹 서버, 머신 러닝, 어플리케이션의 백엔드 서버, 데이터 프로세싱, 기타 서버가 필요한 모든 작업
요금 구성
- 인스턴스 요금
- 데이터 전송
- EBS
- 기타 서비스
- Carrier IP(awveLength), Elastic IP 등
- 연동 서비스
EC2 가격 정책
요금 순서 : S < R < O < D
EC2의 요금 모델은 EBS와는 별도 : EBS는 사용한 만큼 지불
기타 데이터 통신 등의 비용은 별도로 청구 : AWS 바깥으로 나가는 트래픽에 대해서만 요금을 부과On-Demand
- 실행하는 인스턴스에 따라 시간 또는 초당 컴퓨팅 파워로 측정된 가격을 지불
- 약정은 필요 없음
- 수요 예측이 힘들거나 유연하게 사용하고 싶을 때
- 한번 써보고 싶을 때
Spot Instance
- AWS에서 보유중인 남는 인스턴스를 저렴한 가격으로 제공
- 경매 형식으로 가격을 저렴하게 지정
- 최대 90%정도 저렴
- 단 언제 도로 내주어야 할 지 모름
- 내가 지정한 가격보다 현재 가격이 낮다면 사용, 높아진다면 반환
- 시작, 종료가 자유롭거나 추가적인 컴퓨팅 파워가 필요한 경우
- 분산 아키텍쳐가 필요
- 주로 빅데이터 처리, ML등 많은 인스턴스가 필요한 작업에 사용
Reserved Instances-RI
- EC2 인스턴스를 일정 기간 약정하여 요금을 할인 받는 방식
- 온디맨드 EC2 사용 요금을 할인 받는 방식으로 적용
- 할인 받고 싶은 EC2 인스턴스와 같은 리전, 유형 구매 필요
- 미리 일정 기간(1~3년) 약정해서 사용
- 최대 75%정도 저렴
- 수요 예측이 확실할 때
- 총 비용을 절감하기 위해 어느정도 기간의 약정이 가능한 사용자
- 종류
- 결제 방법 기준
- 전체 선결제 : 모든 금액을 기간 시작 전에 결제 → 가장 저렴
- 부분 선결제 : 비용 중 일부만 시작 전에 결제 → 나머지 비용은 할인 가격으로 시간당 청구
- 선결제 없음 : 모든 비용을 할인 가격으로 시간당 청구
- 범위 기준
- 리전 : 리전 전체에 사용할 수 있는 예약 인스턴스
- 영역 : 특정 가용영역에서만 사용할 수 있는 예약 인스턴스
- 클래스 기준
- 표준 : 큰 할인 혜택, 단 교환 불가능 (수정만 가능)
- 컨버터블 : 낮은 할인 혜택. 다른 인스턴스 패밀리 예약 인스턴스로 교환 가능
약정 기간이 길 수록 더 큰 할인율 적용
리전별로 적용 : 다른 리전과 공유 불가
Dedicated(전용 호스트)
- 가상화된 서버에서 EC2를 빌리는 것이 아닌 지정된 물리 서버에서 EC2 대여
- 실제 물리적인 서버를 임대받아 사용
- 라이선스 이슈 (Windows Server 등)
- 규정에 따라 필요한 경우
- 퍼포먼스 이슈 (CPU Steal 등)
EC2의 구성
![](https://velog.velcdn.com/images/ebab_1495/post/fa075af9-20a0-4e61-aefe-ced83faa5974/image.png)
EC2 인스턴스
- EC2에서 컴퓨팅을 담당
- 다양한 유형과 크기로 구성
- 저장을 담당하는 EBS와 네트워크로 연결
- 저장 방법에 따른 분류
- EBS 연동 : EBS 볼륨이 따로 있고 네트워크 연결
- 인스턴스 스토어 : 인스턴스 스토리지 볼륨이 인스턴스와 함께 존재
- 이 경우, 인스턴스가 사라지면 스토리지 볼륨도 함께 사라짐
- 빠름
- 하나의 가용영역(AZ) 안에 존재
인스턴스 유형
- 인스턴스의 역할에 따라 CPU, 메모리, 스토리지, 네트워크 등을 조합한 구성
- 각 인스턴스 유형 별로 사용 목적에 따라 최적화
- 각 인스턴스 유형 별로 사용 목적에 따라 최적화
- ex. 메모리 위주, CPU위주, 그래픽카드 위주 등등
- 유형별로 이름을 부여
- t유형, m유형, inf유형 등
- 같은 유형의 인스턴스들을 인스턴스 패밀리라 부름
- 타입 별 세대별로 숫자 부여
- 아키텍쳐 및 사용 기술에 따라 접두사
- ex. t4g = t4 인스턴스 중 AWS Graviton 프로세스(g)를 사용
![](https://velog.velcdn.com/images/ebab_1495/post/5838deea-baed-4001-adee-b099cf626e53/image.png)
인스턴스 크기
- 같은 인스턴스 패밀리에서 다양한 크기가 존재
- 인스턴스 cpu 갯수, 메모리 크기, 성능 등으로 사이즈 결정
- 크기가 클수록 → 메모리 CPU, 네트워크 대역폭, EBS와의 통신 가능 대역폭 많아짐
EBS
Amazon의 EBS 의미 : EBS(Amazon Elastic Block Store)는 클라우드 Amazon EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공합니다. 각 EBS 볼륨은 가용 영역 내에 자동으로 복제되어 구성 요소 장애로부터 보호해주고, 고가용성 및 내구성을 제공합니다.
- 가상의 하드 드라이브. EC2 인스턴스가 종료되어도 계속 유지 가능
- 루트 볼륨으로 사용 시 EC2가 종료되면 같이 삭제됨
- 단 설정을 통해 EBS만 따로 존속 가능
- 용량을 범위에 따라 자유롭게 설정 가능
- 하나의 EBS를 여러 EC2 장착 가능 (EBS Multi Attach)
- EC2 인스턴스와 같은 가용영역에 존재
- 가용성을 목표로 가용영역 안에 자동으로 분산 저장
유형
- 범용 (General Purpose or GP) : SSD
- 프로비저닝 된 IOPS (Provisioned IOPS or Io) : SSD
- 쓰루풋 최적화 (Throughput Optimized HHD or ST) : HDD
- 콜드 HDD (SC) : HHD
- 마그네틱 (Standard) : HDD
![](https://velog.velcdn.com/images/ebab_1495/post/e51365d5-7764-4dd0-9d58-e5bbfa32def2/image.png)
Amazon EBS 스냅샷
- 특정 시간에 EBS 상태를 저장한 데이터
- 필요시 스냅샷을 통해 특정 시간의 EBS를 복구 가능
- S3에 보관
- 증분식 저장 : 바뀐 부분만 저장
- ex. 10TB에 1MB를 10번 수정 → 총 스냅샷 크기는 10TB + 10MB
- 증분식이 아니라면 10TB x 10
AMI (Amazon Machine Image)
- EC2 인스턴스를 실행하기 위해 필요한 정보를 모은 템플릿
- 구성
- 1개 이상의 EBS 스냅샷
- 사용 권한 (어떤 AWS 어카운트가 사용할 수 있는지)
- 블록 디바이스 매핑(EC2 인스턴스를 위한 볼륨 정보 = EBS가 무슨 용량으로 몇 개 붙는지)
- 저장 유형에 따른 생성 방법
- EBS : 스냅샷을 기반으로 루트 디바이스 생성
- 인스턴스 저장 : S3에 저장된 템플릿을 기반으로 생성
![](https://velog.velcdn.com/images/ebab_1495/post/3f2768e1-6b93-4577-9724-9c3eff08f25d/image.png)
보안 그룹
AWS 설명 : 보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다.
- EC2의 방화벽 역할을 하는 서비스
- Port 허용
- 기본적으로 모든 포트는 비활성화
- 선택적으로 트래픽이 지나갈 수 있는 Port와 Source를 설정 가능
- Deny는 불가능
- 인스턴스 단위
- 하나의 인스턴스에 하나 이상의 보안 그룹 설정 가능
- 인스턴스에 여러 보안 그룹이 적용될 경우 모든 보안 그룹의 규칙을 적용 받음
EC2의 연결 방법
SSH/RDP 연결
연결 방법 : SSH 연결
동작 방식 : SSH
연결 인증 방식 : SSH 키 페어로 인증
- SSH 키페어
- 인스턴스에 연결할 때 자격 증명 입증에 사용하는 보안 자격 증명 집합
- 재발급 불가능
- 분실 시 , EBS를 분리해서 다른 인스턴스에 연결 혹은 스냅샷을 통해 재생성 필요
- 리전 단위
- 다른 리전에서 사용하기 위해서는 import 필요
주요기능 : 기본적인 SSH 통신 (Linux)
연결 방법 : RDP연결
동작 방식 : RDP
연결 인증 방식 : 아이디, 패스워드 접속
주요 기능 : 기본적인 통신 (windows)
EC2 인스턴스 연결
연결 방법 : EC2 인스턴스 연결
동작 방식 : 임시 SSH키를 생성해서 EC2로 밀어 넣어 연결하는 방식
연결 인증 방식 : IAM 인증
주요 기능 : 기본적인 SSH 통신
이 외에 Session Manager, EC2 직렬 콘솔 방법이 있음.
EC2의 권한 부여
IAM 자격 증명을 등록
- IAM 사용자를 생성하고 IAM 자격 증명을 발급받아 EC2에 등록
- AWS Configure를 통해 자격 증명을 파일로 등록
- 관리가 어렵고 바꾸기 힘듬
- ex. EC2 100대의 자격 증명을 교체하는 상황
IAM 역할을 부여 (권장)
- 권한이 부여된 IAM 역할을 만들고 EC2에 부여
- 관리가 쉽고 교체가 쉬움
- 내부적으로 지속적으로 자격증명을 변경
- ex. EC2 + EC2 서비스 관리 역할(Role) = 서비스 관리 EC2
ENI(Elastic Network Interface)와 탄력적 IP
ENI - AWS 설명 : 탄력적 네트워크 인터페이스는 VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소입니다.
- EC2의 가상의 랜카드
- IP주소와 Mac 주소를 보유
- 하나의 인스턴스에 여러 개의 ENI를 연동 가능
- 하나의 인스턴스가 한 개 이상의 아이피를 보유 가능
- 인터느스 유형 및 사이즈에 따라 최대 보유 가능한 IP주소가 변동
- 내부적으로는 보안 그룹은 ENI에 장착
Elastic IP
EC2 - ENI 구조는 연결되어 있기에 EC2가 종료되면 ENI도 종료가 되며 IP가 해제되고 재실행 시 IP의 주소가 바뀜.
→ Elastic IP address는 ENI로부터 독립적이기에 EC2 인스턴스 실행이 멈춰도 고정적인 IP를 유지 가능.
![](https://velog.velcdn.com/images/ebab_1495/post/63c3e97b-2bcb-411b-aa30-15cb614c14cd/image.png)
- EC2의 퍼블릭 IP를 고정해주는 서비스
- 즉 인스턴스를 중지 → 재시작 해도 고정적인 IP를 확보 가능
- 사용할 때는 무료, 단 확보하고 사용하지 않을 경우 비용 발생
- EC2 이외에 다른 서비스(예:NLB)에도 사용 가능
- 내가 보유한 IP 주소를 AWS에서 사용 가능
- 리전 단위
- 할당 방법 : EC2 → 탄력적 IP → 탄력적 IP 주소 할당 → 탄력적 IP 주소 연결 → 인스턴스 선택
- 비용
- 실행 중인 인스턴스에 연결된 각 추가 IP 주소에 대해 시간당 0.005 USD(비례 할당으로 계산)
- 실행 중인 인스턴스에 연결되지 않은 탄력적 IP 주소에 대해 시간당 0.005 USD(비례 할당으로 계산)
- 매달 처음 100개의 재매핑에 대해 탄력적 IP 주소 재매핑당 0.00 USD
- 매달 100개의 추가 재매핑에 대해 탄력적 IP 주소 재매핑당 0.10 USD
EC2 Auto Scailing
배경 지식
수직 확장 (Vertical Scale, Scale Up)
- 인스턴스 성능을 업그레이드 → 성능이 16배 증가한다면 비용은 그 이상으로 증가
- 아주 큰 스케일의 확장 불가능
수평 확장 (Horizontal Scale, Scale Out) (지향점)
- 인스턴스 갯수를 추가 → 성능이 16배 증가한다면 비용도 16배
- 아주 큰 스케일의 확장 가능
Auto Scailing
AWS 설명 : Auto Scailing은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지합니다. Auto Scailing을 사용하면 몇 분 만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있습니다.
- EC2 뿐만 아니라 DDB, Spot Fleet, Aurora, ECS 에서도 서비스
EC2 Auto Scailing 목적
- 정확한 수의 EC2 인스턴스를 보유하도록 보장
- 그룹의 최소 인스턴스 숫자 및 최대 인스턴스 숫자 : 최소/최대 숫자 이하/이상으로 내려가지 않도록 인스턴스를 추가 삭제하며 유지
- 다양한 스케일링 정책 적용
- ex. CPU의 부하에 따라 인스턴스 크기 조정
- 가용 영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배
EC2 Auto Scailing 구성
- 시작 구성/시작 템플릿 : 무엇을 실행시킬 것인가
- EC2의 유형, 크기
- AMI
- 보안 그룹, Key, IAM 역할
- 유저 데이터
- 모니터링 : 언제 실행시킬 것인가? & 상태 확인
- ex. CPU 점유율이 일정 %를 넘어섰을 때 추가 실행
- ex. 2개 이상이 필요한 스택에서 EC2하나가 죽었을 때
- Cloud Watch ELB와 연계
- 설정 : 얼마나 어떻게 실행시킬 것인가?ㅁ
- 최대/최소 인스턴스 갯수
- ELB와의 연동
ELB (Elastic Load Balancer)
AWS 설명 : 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산합니다. 등록된 대상의 상태를 모니터링 하면서 상태가 양호한 대상으로만 트래픽을 라우팅합니다.
Load Balancer의 위치
![](https://velog.velcdn.com/images/ebab_1495/post/6e5b9e6c-c71f-4b76-b5e8-aa25dbf71cdd/image.png)
-
다수의 EC2에 트래픽을 분산 시켜주는 서비스
-
총 4가지 종류
-
Application LB
-
똑똑한 녀석
-
OSI Model Layer 7![](https://velog.velcdn.com/images/ebab_1495/post/f1d646ee-137b-4c88-b73c-8faa3805bfbe/image.png)
-
트래픽을 모니터링하여 라우팅 가능
-
Network LB
- 빠른 녀석
- OSI Model Layer 4
- TCP 기반 빠른 트래픽 분산
- Elastic IP 할당 가능 (IP 고정 가능)
-
Classic LB
-
Gateway LB
- 먼저 트래픽을 체크하는 녀석
- OSI Layer 3
- 가상 어플라이언스 배포/확장 관리를 위한 서비스
-
Health Check : 지겆ㅂ 트래픽을 발생시켜 인스턴스가 살아있는지 체크
-
Auto Scailing과 연동 가능
-
지속적으로 IP 주소가 바뀌며 IP 고정 불가능 : 항상 도메인 기반으로 사용
EC2 Auto Scailing과 연동
Auto Scailing을 통해 EC2 인스턴스 숫자를 관리하고 ELB를 통해 분산 트래픽 처리
Auto Scailing의 인스턴스 증감과 같이 ELB에 연결
![](https://velog.velcdn.com/images/ebab_1495/post/e5d6d0c0-0d10-42c9-8097-bd7aeafeef2f/image.png)
대상 그룹 (Target Group)
ELB가 라우팅할 대상의 집합
구성
- 대상종류
- 프로토콜 (HTTP,HTTPS,gRPC,TCP 등)
- 기타 설정
설정 방법 (로드 밸런서 설정)
- EC2 → 대상 그룹 → 대상 그룹 생성
- 프로토콜은 대체로 HTTP
- 상태 검사 경로 : 말 그대로 상태를 검사할 URL
- 이후 인스턴스 선택
- EC2 → 로드 밸런서 → 로드 밸런서 유형 선택(ALB)
- 가용영역 매핑 : 어디 가용영역에 할당될지 (다 선택해도 무방)
- 나머진 디폴트 값 그대로
- 로드 밸런서 활성 상태 후 → 접속
- 여러 인스턴스에 번갈아가며 트래픽 할당
Auto Scailing 적용
- EC2 → 시작 구성 → 시작 구성 생성
- EC2 → Auto Scailing 그룹 → Auto Scailing 그룹 생성
- 시작 템플릿을 시작 구성으로 전환
- 시작 구성 : 1에서 설정한 시작 구성 선택
- 기존 로드 밸런서에 연결 : 설정한 로드 밸런서 선택
- 상태 확인 : 로드 밸런서를 사용할 거면 ELB 선택
- 태그 : Auto Scailing으로 만들어진 그룹에 이름 부여
- 이후 설정에 따라 자동으로 EC2 생성
- 가끔 Failed가 나는 것은 가용 영역에 인스턴스가 없어서. 무시해도 무방
- 리소스 정리는 최소, 최대 용량을 0으로 할 시 자동 정리
- 만약 종료가 늦게 되다면 : ALB→속성을 보면 ‘등록 취소 지연’ 시간이 존재
- 바로 종료시 디버깅이 불가능해서 지연 시간이 존재
Amazon EFS, Amazon FSx
![](https://velog.velcdn.com/images/ebab_1495/post/512e8e09-e6eb-40a0-80ab-3b9249489d55/image.png)
EFS AWS 설명 : Elastic File System은 AWS 클라우드 서비스와 온프레미스 리소스에서 사용할 수 있는 간단하고 확장 가능하며 탄력적인 완전관리형 NFS 파일 시스템을 제공합니다. 이 제품은 애플리케이션을 중단하지 않고 온디맨드 방식으로 페타바이트 규모까지 확장하도록 구축되어 파일을 추가하고 제거할 때 자동으로 확장하고 축소하며 확장 규모에 맞게 용량을 프로비저닝 및 관리할 필요가 없습니다.
- NFS 기반 공유 스토리지 서비스 (NFSv4)
- 따로 용량을 지정할 필요 없이 사용한 만큼 용량이 증강 ↔ EBS는 미리 크기를 지정
- 몇 천개의 동시 접속 유지 가능
- 데이터는 여러 AZ에 나누어 분산 저장
- Read After Write 일관성
FSx
FSx for Windows File Server
- EFS의 윈도우즈 버전
- SMB 프로토콜을 활용
- Microsoft Active Directory와 통합 등의 관리 기능 사용 가능
- Linux, MacOS 등의 다른 OS에서 활용 가능
FSx for Lustre
- 리눅스를 위한 고성능 병렬 스토리지 시스템
- 주로 머신러닝, 빅데이터 등의 고성능 컴퓨팅에 사용
- AWS 밖의 온프레미스에서 액세스 가능
설정 방법
- EC2 → 보안 그룹 → 보안 그룹 생성
- EFS → 파일 시스템 생성
- 파일 시스템 → 생성한 파일 시스템 → 아래 블록의 네트워크 → 관리
- 보안 그룹이 디폴트값이라 이전에 만든 보안그룹으로 교체
- EC2 → 시작 구성 → 시작 구성 생성
- EC2 → Auto Scailing 그룹 → Auto Scailing 그룹 생성
- 시작 구성은 4단계의 설정 선택
- ELB 필요 x