[AWS] EC2 : 주요 구성 요소와 인스턴스 생성 및 연결 방법
이번 포스팅에서는 AWS의 가장 근간이 되는 EC2 서비스를 구성하는 요소들의 개념을 실제 EC2 인스턴스를 생성하는 과정과 함께 살펴보려고 한다.
1. EC2 소개 : 사용 목적 및 요금 모델
2. EC2 구성 요소
- EC2 인스턴스 : 인스턴스 타입, 패밀리, 사이즈
- 스토리지 : EBS, 인스턴스 스토어
- AMI (Amazone Machine Image)
- VPC와 보안 그룹, 키 페어
3. EC2 접속 방법 : 인스턴스 연결, SSH 클라이언트, 직렬 콘솔
4. EC2 인스턴스 제어와 생명주기
5. EC2 인스턴스 타입 변경
EC2
크기 조정이 가능한 컴퓨팅 파워를 빌려 쓸 수 있는 서비스
EC2는 AWS에서 제공하는 클라우드 기반의 컴퓨팅 서비스로, 필요한 만큼 서버 자원을 유연하게 사용할 수 있다.
- 빠른 구축과 확장성: 인스턴스를 신속히 생성하고 필요에 따라 확장 가능.
- 다양한 용도: 데이터베이스, 머신러닝, 웹/게임 서버 등 다양한 애플리케이션에 최적화 가능.
- 유연한 과금 모델: 온디맨드, 예약 인스턴스, 스팟 인스턴스 등 다양한 비용 모델 제공.
- AWS 서비스와의 통합: Auto Scaling, ELB, CloudWatch 등과 연동하여 고가용성과 성능 최적화 가능.
EC2 요금 모델
온디멘드 (On-Demand) : 사용한 시간만큼 요금 지불 → AWS의 권장 정책.
스팟 인스턴스 (Spot Instances) : 남는 인스턴스를 임대하여 저렴하게 사용.
예약 인스턴스 (Reserved Instances) : 인스턴스 사용 기간을 약정하여 사용.
전용 인스턴스 (Dedicated) : 물리적으로 실제로 격리된 전용 인스턴스 임대.
EC2의 주요 구성 요소
1. 인스턴스 (EC2 Instance)
- EC2 서비스로 생성한 가상 서버
- 유형과 크기 : 요구사항에 따라 CPU, 메로리, 스토리지, 네트워크 등을 조합한 구성 및 그 크기에 따라 구분된 서비스 유형.
2. AMI (Amazone Machine Image) : 인스턴스에서 실행할 소프트웨어(예: 운영 체제)가 포함된 템플릿 이미지
3. VPC (Virtual Private Cloud) : AWS 계정 전용 가상 네트워크. 계정에는 각 AWS 리전에 대한 기본 VPC가 제공되며 각 기본 VPC에는 각 가용 영역에 기본 서브넷이 존재한다.
- 보안 그룹 (Security Group) - 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할
4. 스토리지 볼륨
- EBS 볼륨 : 가상 하드드라이브, EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨 제공, 네트워크로 EC2와 연결
- 인스턴스 스토어 : EC2 내부의 스토리지를 사용하는 방식.
EC2 인스턴스
EC2 서비스로 생성한 가상 서버로서, 실질적인 컴퓨팅을 담당한다.
EC2 인스턴스는 사용자 요구에 맞춰 CPU, 메모리, 스토리지 등의 사양을 선택해 생성할 수 있다.
저장 방법에 따라 두 가지로 분류한다.
- EBS 연동 : 네트워크를 통해 볼륨에 연결된 방식. 데이터를 인스턴스 종료 후에도 영구적으로 저장 가능.
- 인스턴스 스토어 : EC2 내부의 스토리지가 있는 방식. 빠른 입출력 속도를 제공하나 인스턴스 종료 시 데이터가 삭제된다.
하나의 EC2 인스턴스는 항상 하나의 가용영역 (AZ)에 존재한다는 점을 항상 염두에 두어야 한다. 기본적으로 EC2 서비스만으로는 고가용성 서비스를 제공받을 수 없으며, Auto-scaling을 비롯한 고가용성 서비스와의 결합을 고려할 수 있다.
이제 직접 콘솔에서 EC2 인스턴스를 생성할 때의 인터페이스 구성 설정과 함께, EC2의 구성에 대해서 살펴보려고 한다.
인스턴스 유형 (Instance Type)
인스턴스 패밀리와 인스턴스 사이즈가 조합되어 아래의 명명 규칙에 따라 인스턴스 유형이 결정된다.
인스턴스 패밀리
- 첫 번째 자리 : 시리즈 (c).
- 두 번째 자리 : 세대 (7).
- 세 번째 자리 : 옵션 (gn).
인스턴스 사이즈
- Dot 뒤 : 인스턴스 크기(2xlarge)
인스턴스 패밀리 (Instance Family)
인스턴스의 주요 사용 목적에 따라 분류된 그룹. 목적에 따라 CPU, 메모리, 스토리지, 네트워크 등을 조합한 구성.
시리즈 : 유형 별로 이름 존재 (T 유형, M 유형 등..)
세대 : 타입 별 세대별로 숫자 부여 (m5 = m인스턴스의 5번째 세대)
옵션 : 프로세서/추가기술에 따라 추가 접미사가 붙음.
일반적으로 무엇을 선택해야 할 지 모르겠다면, 가장 많이 사용되는 패밀리는 M 시리즈와 T 시리즈이다.
T 시리즈는 테스트 서버의 목적으로 M 시리즈는 프로덕션 서버의 용도로 자주 사용되는 시리즈이다.
인스턴스 크기 (Instance Size)
동일한 인스턴스 패밀리 내에서 자원(CPU, 메모리) 규모에 따라 세분화된 옵션, 컴퓨팅 자원의 크기에 따라서 인스턴스 패밀리가 분리된다.
스토리지 (Storage)
EC2 서버를 운영하기 위해서는, 하드드라이브에 해당하는 저장 공간이 필요할 것이다. EC2 인스턴스는 이런 저장 공간의 유형을 EBS 혹은 인스턴스 스토어 방식으로 제공하며, AWS 측에서는 EBS 사용을 권장한다.
EBS (Elastic Block Store)
1. 가상 하드드라이브, EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨 제공,
2. EC2가 종료되어도 계속 유지 가능하다. 용량을 범위에 따라 자유롭게 설정 가능.
3. EBS 역시 EC2 인스턴스와 동일한 하나의 가용영역에 존재. → 가용영역 안에 자동으로 분산 저장(내구성)
4. EC2와 EBS는 네트워크로 느슨하게 결합되어 있기 때문에, 인스턴스가 종료되거나 교체되더라도 기존 스토리지 볼륨을 유지할 수 있음.
EBS의 유형
- 범용(SSD)
- 프로비전된 IOPS(SSD) : 빠른 전송 , 쓰루풋 최적화(HDD) → 대용량 전송
- 콜드 HDD(HDD), 마그네틱(HDD) : 저렴한 비용과 낮은 성능 →백업 용도
스냅샷 : EBS의 특정 시점을 저장한 이미지 → EBS의 백업 용도 및 복원과 공유 목적으로 활용 가능
- 증분식 : 바뀐 부분만 저장하는 방식으로 스냅샷 저장. → 비용 최적화
- 스냅샷은 S3에 저장되기 때문에 높은 내구성. 암호화, 공유 및 아카이브 가능.
인스턴스 스토어
EC2 내부에 스토리지가 있는 방식. 빠른 입출력 속도를 제공하나 인스턴스 종료 시 데이터가 삭제된다.
애플리케이션 캐싱, 중간 계산 데이터 저장, 로컬 로그 파일 저장 등 일시적인 데이터가 필요한 경우에 적합하다.
AMI (Amazone Machine Image)
가장 대표적인 구성 요소인 운영체제를 포함한 EC2 인스턴스를 실행하기 위한 필요한 정보를 모은 템플릿 이미지.
AMI를 기반으로 동일한 환경 구성의 EC2를 생성하거나, 기존 EC2를 복원하거나 복제하는 용도로 사용될 수 있다.
AMI 의 구성
1. 운영체제, 애플리케이션 및 SW 등. → ex) Ubuntu 환경의 MySQL이 설치되어 있는 AMI
2. 사용 권한 (어떤 AWS Account의 소유인지)
3. 루트 디바이스 정보 : EC2 인스턴스가 OS 부팅에 사용하는 메인 스토리지 (EBS 기반, 인스턴스 스토어 기반)
4. 블록 디바이스 매핑 : EC2 인스턴스가 사용할 스토리지 볼륨 정보들을 정의
AMI 생성 프로세스
그렇다면 기존의 EC2의 환경을 기반으로 AMI는 어떻게 생성될까? 인스턴스 저장 유형에 따라 AWS에서 AMI가 생성되는 과정이 달라진다.
EBS : 스냅샷을 기반으로 루트 디바이스 생성
- EBS 볼륨을 스냅샷으로 저장하고 이를 기반으로 AMI 생성.
- 즉 인스턴스의 루트 디바이스 볼륨에 대한 스냅샷이 있으면 이 스냅샷에서 AMI를 생성할 수 있다.
- AMI를 사용하여 EC2 인스턴스를 시작하면 EBS 볼륨이 루트 디바이스로 연결
인스턴스 스토어 : S3에 저장된 임시 템플릿을 기반으로 생성.
- S3에 임시로 현재 인스턴스의 AMI 정보를 저장해두고, 저장된 템플릿을 기반으로 생성.
- 이 유형의 AMI는 임시 스토리지를 제공하며, 인스턴스를 종료하면 데이터가 사라진다.
네트워크 (VPC) 설정과 보안 그룹
EC2 인스턴스에 대한 네트워크 트래픽을 관리하고 접근을 제어하기 위한 네트워크 설정을 하는 부분이다.
- VPC(가상 사설 클라우드): EC2 인스턴스가 어떤 가상 네트워크 환경에서 실행될 지 구성한다. VPC에 대해서는 추후 포스팅에서 자세히 다루려고 한다.
- 퍼블릭 IP 자동 할당: 퍼블릭 IP 주소를 자동으로 동적 할당할지 여부를 설정한다. 동적 할당받게 된다면, 인스턴스를 중지하거나 재시작 시 IP 주소가 변경될 수 있다. → Elastic IP 설정을 통해 고정시킬 수 있다.
- 보안 그룹(Security Group): EC2 인스턴스에 들어오는 트래픽과 나가는 트래픽인 인바운드 규칙 및 아웃바운드 규칙을 설정하는 방화벽 설정을 구성한다.
- SSH 트래픽 허용: 기본적으로 22번 포트를 통해 SSH 접속을 허용한다.
- HTTP/HTTPS 트래픽 허용: 웹 서버를 운영하는 경우 HTTP(80번 포트) 및 HTTPS(443번 포트) 트래픽을 허용한다.
- 사용자 정의 규칙 구성 : 위의 사진의 예시와 같이 8080 포트로의 접근을 허용하는 인바운드 규칙을 직접 구성할 수 있다.
키 페어 (Key Pair)
EC2 인스턴스에 안전하게 접근하기 위해 사용하는 인증 수단이다.
키 페어는 공개 키 암호화 방식을 사용하여 Public Key와 Secret Key로 구성된다. 재발급이 불가능하며 리전 단위로 적용된다.
뒤에서 후술할 SSH 클라이언트 인증 방식을 통한 EC2 접속에 사용된다.
EC2 접속 방식
생성된 EC2에 접근할 때 다양한 옵션을 사용하여 인스턴스에 접속할 수 있다.
1. EC2 인스턴스 연결 : IAM 인증을 통해 연결 → 임시 SSH키를 생성하여 연결하는 방식.
- 기본적인 SSH 통신을 활용한다.
2. SSH 클라이언트 : 발급받은 Key Pair인 SSH Key를 통한 인증.
- SSH 연결 : SSH 통신 방식을 활용한 EC2 인스턴스와의 통신
- FTP 연결 : 기본적인 FTP 통신 (파일 전송)
3. EC2 직렬 콘솔 : EC2 시리얼 포트를 사용하는 방식
- IAM 인증 + Root Password 필요.
- 계정 단위 활성화 및 OS Password 설정이 필요하다. 특정 인스턴스 타입 및 리전에서만 사용 가능.
- 가장 직접적으로 연결되는 방식으로, 부팅 및 네트워크 문제 해결에 주로 사용.
4. Session Manager : AWS Systems Manager의 기능으로 Agent 기반의 접속.
EC2 인스턴스 연결
콘솔에서 IAM 사용자로 로그인(인증)한 상태라면 언제든지 해당 방식으로 EC2에 접근 가능하다.
SSH 클라이언트 방식
SSH
발급받은 Key Pair를 기반으로 SSH 프로토콜 기반의 연결을 통해서 EC2 인스턴스 내부에 접근 가능하다.
FTP
FileZilla와 같은 FTP(File Transfer Protocol)을 활용한 파일 전송 시에도, Key Pair를 통한 인증을 통해서 EC2 인스턴스에 파일을 전송할 수 있다.
EC2 직렬 콘솔
네트워크 연결이 불가능한 상황(예: 잘못된 방화벽 설정)에서도 직접적으로 EC2에 접근할 수 있는 방법이다.
EC2에 대한 직렬 포트 접근을 제공하며, 인스턴스의 부팅 문제나 네트워크 문제를 해결하는 데 유용하다.
필요 조건 : IAM 역할에 대한 적절한 권한 부여, OS 계정의 비밀번호 설정.
따라서 사전에 OS 계정에 비밀번호를 설정해두자.
EC2 인스턴스 제어와 생명주기
생성된 인스턴스에서 우리는, 중지, 시작, 재부팅, 종료 등 여러가지 행위로 인스턴스를 제어할 수 있다. 이는 EC2 인스턴스 생명 주기 모델에 따라서 동작하게 된다.
Pending (대기 중): 인스턴스가 생성되며 시작 준비 중인 상태
Running (실행 중): 인스턴스가 활성 상태이며 작업을 수행할 수 있는 상태. 재부팅, 중지, 종료 작업 수행 가능
Stopping (중지 중): 인스턴스가 중지 명령을 받아 실행 중지 단계로 진입한 상태. 이후 Stopped (중지됨) 상태로 전환.
- EBS 기반 인스턴스에서만 사용 가능하다. (인스턴스 스토리지 기반의 경우에는 내부 내용을 유지할 수 없기 때문이다.)
Shutting-down (종료 중): 종료 명령이 내려져 인스턴스가 종료 단계로 진입한 상태. 이후 Terminated (종료됨) 상태로 전황.
- 종료됨(Terminated) 상태에서는 인스턴스를 복구할 수 없다. 즉 인스턴스를 제거하는 것과 마찬가지이다.
Hibernation (최대 절전 모드) : 메모리 내용을 보존해서 재시작시 해당 중단 지점에서 시작할 수 있는 모드.
EC2 인스턴스에 대한 비용은 Running 상태와 최대 절전 모드 시에만 청구된다.
EC2 인스턴스 타입 변경
AWS의 장점은 필요한 만큼 서버 자원을 유연하게 조절할 수 있다는 것이었다. 따라서 사용중인 EC2의 패밀리나 사이즈 등의 변경이 필요할 때 유동적으로 변경할 수 있다.
- 사이즈 변경 : 같은 인스턴스 패밀리 → 사용량에 따라 크기 조절
- 패밀리 변경 : 워크로드 성격에 따라 다른 패밀리로 변경, 특히 호환성을 체크해보아야 함.
주의할 점
- 호환성 체크 필요 : 가상화 타입, 아키텍쳐, EBS 볼륨 등
- 인스턴스 정지 필요 : 스팟 인스턴스 변경 불가능, HealthCheck X → Autoscaling 사전조치 필요
변경 전략
기존 인스턴스 타입과 변경하려는 인스턴스 타입이 호환되는 경우
- "인스턴스 타입 변경"을 통해 변경 가능
변경하려는 인스턴스 타입과 호환되지 않는 경우
- 기존 인스턴스의 "루트 디바이스 EBS"의 스냅샷 생성
- 스냅샷을 기반으로 새로운 AMI 생성
- 새로운 EC2 인스턴스 생성 후 해당 AMI 사용
References
'Cloud > AWS' 카테고리의 다른 글
[AWS] EC2 : ENI & Elastic IP 설정을 통한 Public IP 고정시키기 (1) | 2025.01.13 |
---|---|
[AWS] EC2 : 유저데이터와 메타데이터 (EC2 User Data & Meta Data) (0) | 2025.01.13 |
[AWS] IAM : 인증과 접근 방식 (장기 자격 증명 & 임시 자격 증명) (0) | 2025.01.11 |
[AWS] IAM : 사용자 및 권한 정책 관리 기초 (그룹, 역할) (0) | 2025.01.09 |
[AWS] 인프라 구조 기본 이해 : 리전과 가용 영역(AZ) (0) | 2025.01.08 |