[AWS] EC2 - Elastic Compute Cloud
EC2는 AWS에서 제공하는 깡통 컴퓨터라고 생각하면 된다.
보통 EBS, ELB, ASG 등 EC2를 더 쉽게 사용할 수 있도록 도와주는 여러 AWS 서비스들과 함께 사용한다.
용도에 따라 CPU, RAM, GPU, 스토리지, OS 등을 선택해 맞춤형 인스턴스를 구성할 수 있고
대여한 EC2 인스턴스에 Security Group을 설정해 방화벽을 구성할 수 있다.
Security Group은 클라우드 환경에서 수행되는 방화벽으로 AWS가 제공하는 소프트웨어 방화벽으로 생각하면 된다.
물리적인 방화벽을 직접 제어하는게 아니고 가상화된 네트워크 수준에서 트래픽을 제어하는 방식으로 작동한다.
설정한 Security Group은 재사용 할 수 있고, 한 번 정의한 그룹을 다른 EC2 인스턴스에도 재사용 할 수 있다.
ssh -i key.pem ec2-user@<EC2-IP>
SSH로 EC2 인스턴스에 연결할 때는 기본으로 제공되는 ec2-user 계정을 사용한다. (AMI에 따라 기본 계정 다름)
EC2를 사용할 때, 기본적으로는 On-Demand로 사용한 만큼 비용을 지불하지만 AWS는 상황에 따라 다양한 구독 옵션을 제공한다.
Reserved Instances - 1년이나 3년동안 예약해서 사용해 On-Demand 대비 저렴하게 사용한다.
Savings Plans - Reserved Instances처럼 장기간 예약 기반이지만 유형, 크기, 리전 OS를 유연하게 변경할 수 있다.
Dedicated Hosts - 물리적 서버 전체를 사용자 전용으로 할당해 서버의 전체 권한을 사용자가 직접 관리한다.
Dedicated Instances - Dedicated Hosts와 유사하지만 물리적 서버는 AWS가 직접 관리한다.
Spot Instances - AWS에서 사용되지 않는 EC2 용량을 경매 방식으로 제공한다. 저렴하지만 인스턴스가 중단될 수 있다. 인스턴스를 종료할 때는 Spot Request를 먼저 종료해야 한다.
Spot Fleet를 사용해 Spot Instances와 On Demand Instances를 묶어서 관리할 수 있다.
일반적인 가정용 네트워크 공유기는 ISP로부터 하나의 Public IP를 할당받아 내부 장치로 연결해주는데, AWS에서는 Public IP를 EC2 인스턴스나 Elastic IP로 직접 할당한다.
공유기를 거치지 않고 바로 EC2 인스턴스에 Public IP가 직접적으로 매핑되고, VPC의 Private IP와 연결된다.
기본적으로 EC2 인스턴스를 내렸다 올리면 Public IP가 재할당되지만, Elastic IP를 통해 공유기에서 고정 IP를 요청하는 것 처럼 IP를 고정해서 사용할 수 있다.
Elastic IP는 ENI에 할당되고 해당 ENI가 EC2인스턴스에 연결되면 Elastic IP가 EC2에 적용된다.
ENI(Elastic Network Interface)는 EC2 인스턴스가 VPC에서 네트워크와 상호작용 할 수 있도록 지원하는 AWS의 가상 네트워크 카드로 네트워크 관련 속성을 관리하고 EC2에 해당 속성을 연결하거나 분리하는 역할을 수행한다.
EC2와 ENI는 독립적으로 설계되어있어 ENI는 AWS VPC 내에서 독립적으로 존재해 네트워크 속성을 EC2와 분리된 상태로 유지한다.
덕분에 ENI를 유동적으로 다른 EC2에 옮길 수 있고, 기존의 네트워크 속성을 새 인스턴스에 쉽게 옮길 수 있어 장애 대응에 유리하다.
VPC 내 Availability Zone은 독립적으로 관리되고, ENI는 특정 서브넷에 속하고 서브넷은 Availability Zone에 속하기에 ENI는 해당 Availability Zone에 있는 리소스에만 연결될 수 있다.
ENI가 다른 Availability Zone에 있는 EC2 인스턴스에 연결될 수 있다면 영역 간 네트워크 지연이 발생하니 설계 원칙에 어긋난다.
AWS 인프라에 EC2 인스턴스를 배치할 때는 Placement Group을 사용한다.
Cluster Placement Group
여러 EC2 인스턴스를 하나의 Availability Zone에 집중시킨다.
Availability Zone이 비활성화되면 모든 인스턴스가 한 번에 비활성화되지만, 클러스터 내에 위치한 인스턴스들이 서로 통신할 때의 오버헤드가 크게 감소한다.
Spread Placement Group
MSA와 비슷한 철학으로, 여러 EC2 인스턴스를 여러 물리적 서버에 분산시킨다.
한 서버에서 발생한 장애가 다른 인스턴스에 영향을 주지 않는다.
네트워크 성능은 낮아지지만 장애 시 영향이 줄어든다.
Partition Placement Group
인스턴스를 논리적 파티션으로 나누어 물리적 서버에 배치한다.
각 파티션은 서로 독립적으로 동작해 파티션끼리는 장애가 전파되지 않는다.
물리적 서버에 문제가 생길 경우 해당 서버에 배치된 파티션 전체가 영향을 받을 수 있다.
EC2 인스턴스에 HDD를 붙일 때는 EBS를 사용한다.
EBS(Elastic Block Store)는 HDD와 유사한 방식으로 작동하는 스토리지로 EC2 인스턴스에 붙는 저장소로 활용된다.
인스턴스가 종료되거나 재시작 될 때도 EBS 데이터는 유지되고, 인스턴스를 Hibernate로 중지할 때도 RAM 내용을 암호화해서 EBS 루트 볼륨에 저장해 Hibernate 상태의 인스턴스를 재시작 시 RAM을 EBS로부터 복원해 애플리케이션을 이어서 실행시킬 수 있다.
Volume 종류에 따라 단일 EBS 볼륨을 최대 16개의 EC2 인스턴스에 연결하는 Multi-Attach 기능을 제공하지만 동기화와 락을 애플리케이션 수준에서 처리해야 한다.
도커의 바인드 마운트와 유사하다.
도커 컨테이너와 EC2가 같은 역할을 수행하고, 호스트PC와 AWS EBS가 같은 역할을 수행한다.
EBS는 접속 시 네트워크 I/O 가 발생하니 고성능 작업이 필요한 경우 EC2 Instance Store를 사용한다.
EC2 인스턴스가 실행되는 호스트의 로컬 디스크에 데이터를 저장해 I/O 성능이 뛰어나지만 인스턴스가 내려갈 때 데이터가 손실된다.
몇 Volume을 제외하고 EBS가 단일 EC2 인스턴스에 연결되는데에 반해, EFS는 여러 EC2 인스턴스와 여러 Availability Zone에서 동시에 접근할 수 있는 파일 스토리지를 제공한다.
크기가 고정된 EBS와 는 다르게 EFS(Elastic File System)는 저장된 데이터의 양에 따라 용량이 유동적으로 조정되고, 여러 EC2 인스턴스가 공유가 가능해 분산 애플리케이션 데이터 및 컨테이너 기반 애플리케이션에서 자주 사용된다.
'DevOps > Amazon Web Service' 카테고리의 다른 글
[AWS] S3 - Simple Storage Service (0) | 2025.01.22 |
---|---|
[AWS] Route53 (0) | 2025.01.18 |
[AWS] RDS - Relational Database Service (0) | 2025.01.17 |
[AWS] Availability and Scalability (0) | 2025.01.14 |
[AWS] IAM - Identity and Access Management (0) | 2025.01.06 |
댓글
이 글 공유하기
다른 글
-
[AWS] Route53
[AWS] Route53
2025.01.18 -
[AWS] RDS - Relational Database Service
[AWS] RDS - Relational Database Service
2025.01.17 -
[AWS] Availability and Scalability
[AWS] Availability and Scalability
2025.01.14 -
[AWS] IAM - Identity and Access Management
[AWS] IAM - Identity and Access Management
2025.01.06