EC2란?
EC2(Elastic Compute Cloud)는 AWS에서 제공하는 AWS 클라우드의 핵심 가상 서버 서비스로 서버를 생성하고 필요에 따라 성능을 조정하며 사용한 만큼만 비용을 지불하게 해 가상 서버를 유연하게 관리할 수 있게 해준다.
EC2 특징
1. 탄력성(Elasticity)
- 트래픽 증가 시 서버를 추가하고, 감소 시 제거 가능
- 수 분 내에 인스턴스 생성 및 삭제
- Auto Scaling으로 자동 확장/축소
2. 다양한 인스턴스 타입
- 범용, 컴퓨팅 최적화, 메모리 최적화, 스토리지 최적화 등
- 워크로드에 맞는 최적의 타입 선택 가능
3. 유연한 요금 모델
- 온디맨드: 초 단위 과금
- 예약 인스턴스: 1~3년 약정으로 최대 75% 할인
- 스팟 인스턴스: 경매 방식으로 최대 90% 할인
EC2 인스턴스 타입
인스턴스 타입은
패밀리 + 세대 + 크기 형식으로 구성됩니다.예: t3.medium
t: 범용(버스터블) 패밀리
3: 3세대
medium: 크기
주요 인스턴스 패밀리
패밀리용도특징T3, T4범용, 개발/테스트CPU 크레딧 방식, 저렴M5, M6범용, 중간 규모 앱균형잡힌 컴퓨팅/메모리C5, C6컴퓨팅 최적화고성능 프로세서, 배치 작업R5, R6메모리 최적화대용량 메모리, 데이터베이스P3, G4GPU 인스턴스머신러닝, 그래픽 작업T 패밀리의 CPU 크레딧
T 시리즈는 CPU 크레딧을 사용하는 버스터블 인스턴스
- 기본 성능 이하로 사용 시 크레딧 축적
- 기본 성능 이상 필요 시 크레딧 소비
- 크레딧 소진 시 기본 성능으로 제한
- 개발 환경이나 트래픽이 일정치 않은 서비스에 적합
EC2 인스턴스 생성하기
1단계: AMI(Amazon Machine Image) 선택
AMI는 인스턴스의 운영체제와 초기 설정을 포함한 템플릿
주요 AMI 유형:
- Amazon Linux 2023: AWS 최적화, 무료
- Ubuntu: 인기 있는 Linux 배포판
- Windows Server: Windows 기반 애플리케이션
- Red Hat, CentOS: 엔터프라이즈 환경
2단계: 인스턴스 타입 선택
워크로드에 맞는 타입을 선택합니다.
웹 서버: t3.micro ~ t3.medium
데이터베이스: r5.large ~ r5.2xlarge
배치 처리: c5.xlarge ~ c5.4xlarge3단계: 네트워크 설정
VPC(Virtual Private Cloud)
- 격리된 가상 네트워크 환경
- 여러 가용 영역(AZ)에 분산 배치 가능
서브넷
- Public: 인터넷 접근 가능
- Private: 내부 통신만 가능
보안 그룹(Security Group)
인바운드 규칙 예시:
- SSH (22번 포트): 개발자 IP만 허용
- HTTP (80번 포트): 모든 IP 허용
- HTTPS (443번 포트): 모든 IP 허용
- MySQL (3306번 포트): 애플리케이션 서버만 허용4단계: 스토리지 설정
EBS(Elastic Block Store)
- 영구 블록 스토리지
- 인스턴스와 독립적으로 존재
- 스냅샷으로 백업 가능
볼륨 타입:
- gp3: 범용 SSD, 가성비 우수
- io2: 프로비저닝 IOPS, 고성능 DB
- st1: 처리량 최적화 HDD, 빅데이터
- sc1: Cold HDD, 아카이빙
5단계: 키 페어 설정
SSH 접속을 위한 키 페어를 생성
# 키 페어 권한 설정 (Linux/Mac)
chmod 400 my-key-pair.pem
# SSH 접속
ssh -i my-key-pair.pem ec2-user@ec2-xx-xx-xx-xx.compute.amazonaws.com인스턴스 수명 주기
pending → running → stopping → stopped → terminating → terminated주요 상태:
- Running: 실행 중, 과금됨
- Stopped: 중지, EBS 비용만 과금
- Terminated: 삭제, 복구 불가
EC2 인스턴스 메타데이터
인스턴스 내부에서 자신의 정보를 조회 가능
bash
# 인스턴스 ID 조회
curl http://169.254.169.254/latest/meta-data/instance-id
# 공인 IP 조회
curl http://169.254.169.254/latest/meta-data/public-ipv4
# IAM 역할 조회
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/사용자 데이터(User Data)
인스턴스 시작 시 자동으로 실행되는 스크립트
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello from EC2</h1>" > /var/www/html/index.html이를 통해 웹 서버 설치와 같은 초기 설정을 자동화할 수 있습니다.
EC2 모니터링
CloudWatch 기본 지표 (무료)
- CPU 사용률
- 네트워크 입출력
- 디스크 읽기/쓰기
- 5분 간격 수집
CloudWatch 상세 모니터링 (유료)
- 1분 간격 수집
- 더 빠른 Auto Scaling 대응
모니터링 명령어
# CloudWatch CLI로 CPU 사용률 조회
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2024-11-17T00:00:00Z \
--end-time 2024-11-17T23:59:59Z \
--period 3600 \
--statistics Average비용 최적화 팁
1. 적절한 인스턴스 크기 선택
- 과도한 사양은 비용 낭비
- CloudWatch로 사용률 모니터링 후 다운사이징
2. 예약 인스턴스 활용
- 장기 운영 서버는 예약 인스턴스로 할인
- 1년 약정: 약 40% 할인
- 3년 약정: 약 60% 할인
3. 스팟 인스턴스
- 개발/테스트 환경
- 배치 작업, 빅데이터 분석
- 중단되어도 무방한 워크로드
4. 사용하지 않는 리소스 제거
# 중지된 인스턴스 조회
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=stopped" \
--query "Reservations[].Instances[].[InstanceId,Tags[?Key=='Name'].Value|[0]]" \
--output table
# 미사용 EBS 볼륨 조회
aws ec2 describe-volumes \
--filters "Name=status,Values=available" \
--query "Volumes[].[VolumeId,Size,CreateTime]" \
--output table간단 정리
- 인스턴스 타입은 워크로드에 맞게 선택
- 보안 그룹으로 네트워크 접근 제어
- 사용자 데이터로 초기 설정 자동화
- CloudWatch로 모니터링 및 최적화
Share article