📌 Amazon EC2
- AWS에서 가장 많이 사용되는 서비스 중 하나로, 가상 서버를 임대하는 서비스.
- Elastic Compute Cloud(EC2)는 Infrastructure as a Service (IaaS)의 일환.
- 주요 기능:
- 가상 머신 임대.
- EBS 볼륨으로 데이터 저장.
- Elastic Load Balancer(ELB)로 로드 분산.
- Auto-scaling group(ASG)으로 서비스 확장.
- 운영체제(OS), CPU, RAM, 저장 공간(예: EBS, EFS, EC2 인스턴스 스토어), 네트워크 카드, 방화벽 규칙(보안 그룹) 등을 선택할 수 있음.
- 클라우드의 장점은 다양한 가상 머신 설정을 선택하고 임대할 수 있다는 것.
📌 EC2 User Data
- EC2 사용자 데이터를 통해 인스턴스를 bootstrapping 할 수 있음.
- bootstrapping은 머신이 시작될 때 명령을 실행하는 과정이며, 한 번만 실행됨.
- 사용자 데이터 스크립트로 인스턴스가 부팅할 때 할 일을 자동화할 수 있음:
- 업데이트 설치.
- 소프트웨어 설치.
- 파일 다운로드 등.
- 스크립트는 루트 사용자 권한, 즉 sudo 권한으로 실행됨.
📌 EC2에 사용가능한 인스턴스
📌실습_EC2 인스턴스 생성
사용자 데이터라는 코드를 EC2 인스턴스에 전달해 EC2 인스턴스에서 직접 웹 서버를 시작해볼 것.
- 위 스크립트는 인스턴스가 처음 시작될 때 한 번만 실행되는 스크립트
- 몇 개의 업데이트와 httpd 웹 서버 설치 및 웹 서버가 될 HTML 파일 작성 등
다양한 사용 사례에 맞게 최적화된 다양한 유형의 EC2 인스턴스를 사용할 수 있음 >>>(https://aws.amazon.com/ec2/instance-types/)
📌 AWS 명명 규칙
- m: instance class (범용의 인스턴스)
- 5: 인스턴스의 세대
- 하드웨어의 세대가 업그레이드되면 숫자가 증가
- 2xlarge: 인스턴스 클래스 내에서 크기를 나타냄 (small, large, xlarge).. 크기가 클수록 인스턴스에 더 많은 메모리와 cpu를 가짐
📌 EC2 Instance Types - General Purpose
- 범용의 인스턴스는 웹 서버 또는 코드 저장소와 같은 다양한 작업에 적합
- 컴퓨팅, 메모리, 네트워킹 성능이 균형 잡혀 있음.
- 이 강의에서는 범용 EC2 인스턴스의 프리티어인 t2.micro를 사용
컴퓨팅 최적화 인스턴스는 컴퓨팅 집약적인 작업에 최적화된 인스턴스임.
- 일부 데이터의 일괄 처리에 사용
- 미디어 트랜스코딩
- 고성능 웹 서버 및 컴퓨팅(HPC)
- 과학적 모델링 및 머신 러닝, 전용 게임 서버
등에 사용
>> 컴퓨터 최적화의 모든 인스턴스는 모두 C 로 시작되는 이름으로 시작함
📌 EC2 Instance Types - Memory Optimized
- 메모리 최적화 인스턴스는 대규모 데이터셋을 메모리(RAM)에서 처리하는 작업에서 빠른 성능을 제공함
- 고성능 관계형/비관계형 인메모리 데이터베이스에 사용.
- 분산형 웹 스케일 캐시 스토어(예: 엘라스틱 캐시).
- BI(비즈니스 인텔리전스)에 최적화된 인메모리 데이터베이스
- 대규모 비정형 데이터의 실시간 처리를 수행하는 애플리케이션
- 이름을 보면 대부분 RAM을 R로 시작됨. (X1이나 대용량 메모리 Z1도 있음)
📌 EC2 Instance Types - Storage Optimized
- 로컬 스토리지에서 대규모 데이터셋에 접근할 때 필요한 인스턴스
Use cases:
- 고주파 온라인 거래 처리(OLTP) 시스템
- 관계형 및 NoSQL(비관계형) 데이터베이스
- 메모리 내 데이터베이스용 캐시(예: Redis)
- 데이터 웨어하우스 애플리케이션
- 분산 파일 시스템
- 스토리지 최적화 인스턴스는 I, G 또는 H1으로 시작됨
📌 보안 그룹 및 클래식 포트 개요
- 보안 그룹은 EC2 인스턴스의 방화벽 역할을 함
<아래의 것들을 규제하는 역할>
- 포트에 대한 액세스
- 공인 IP 범위 (IPv4 및 IPv6)
- 인바운드 네트워크 제어(외부에서 인스턴스로 들어오는 것)
- 아웃바운드 네트워크 제어(인스턴스에서 외부로 나가는 것)
유형, 프로토콜, 포트 범위(인스턴스에서 통과할 수 있도록 허용하는 범위), 소스(IP주소 범위), 디스크립션
📌 Security Groups Diagram
<방화벽 작동 방식>
보안 그룹은 인바운드 규칙과 아웃바운드 규칙을 설정하여 EC2 인스턴스로 들어오고 나가는 트래픽을 제어함
- 인바운드 트래픽:
- 예: 우리 컴퓨터는 포트 22에서 SSH로 인증을 받아 EC2에 접근할 수 있음 (초록 화살표).
- 다른 컴퓨터(허가되지 않은 IP)는 포트 22로 EC2에 접근하려고 하면 방화벽이 차단하여 액세스하지 못함 (빨간 화살표).
- 아웃바운드 트래픽:
- 기본적으로 EC2 인스턴스에서 모든 트래픽은 나가는 것이 허용됨.
- EC2가 웹사이트나 외부 서비스에 접속할 때는 아무 문제가 없이 트래픽이 나갈 수 있음 (초록 화살표).
<💡보안 그룹에 대해 알아야 할 사항💡>
- 보안 그룹은 여러 인스턴스에 연결 가능 (1:1 관계가 아님).
- 특정 리전과 VPC에 제한되며, 리전을 변경하거나 새로운 VPC를 만들면 보안 그룹을 다시 생성해야 함.
- 보안 그룹은 EC2 외부에 위치하여, 차단된 트래픽은 EC2에 도달하지 않음.
- SSH 접근을 위해 개별 보안 그룹을 유지하는 것이 좋음.
- 타임아웃 발생 시 보안 그룹 문제일 가능성이 큼.
- 응용 프로그램에 "연결 거부" 오류가 발생하면, 실제로 보안 그룹이 작동하고 트래픽이 통과했지만 애플리케이션이 오류나거나 실행되지 않은 것
- 기본적으로 모든 인바운드 트래픽은 기본적으로 차단되고
- 모든 아웃바운드 트래픽은 기본적으로 승인됨
📌 Referencing other security groups Diagram
<다른 보안 그룹의 보안 그룹을 참조하는 방법>
- 보안 그룹 참조:
- 보안 그룹 1의 인바운드 규칙은 보안 그룹 2와 보안 그룹 1에서 온 트래픽을 허용하도록 설정됨.
- 보안 그룹 2 연결된 EC2 인스턴스:
- 만약 새로운 EC2 인스턴스에 보안 그룹 2가 연결되어 있으면, 보안 그룹 1의 규칙을 따라 포트를 통해 직접 연결 가능.
- 이는 첫 번째 EC2 인스턴스와 두 번째 EC2 인스턴스 간의 직접 통신을 가능하게 함.
- IP를 사용하지 않고도 통신 가능:
- 보안 그룹끼리 설정이 되어 있으면 EC2 인스턴스의 IP 주소에 관계없이 직접 통신 가능.
- 이는 IP 주소를 신경 쓰지 않아도 되는 장점이 있음.
- 보안 그룹 3의 경우:
- 보안 그룹 3은 보안 그룹 1의 인바운드 규칙에 허용되지 않았기 때문에 포트 접근이 차단됨.
- 즉, 보안 그룹 3이 연결된 EC2 인스턴스는 통신할 수 없음.
📌 Classic Ports to Know
- 22 = SSH (Secure Shell) - log into a Linux instance
- 21 = FTP (File Transfer Protocol) – upload files into a file share
- 22 = SFTP (Secure File Transfer Protocol) – upload files using SSH
- 80 = HTTP – access unsecured websites (보안되지 않은 웹사이트에 접속하기 위함)
- 443 = HTTPS – access secured websites
- 3389 = RDP (Remote Desktop Protocol) – log into a Windows instance (RDP 또는 원격 데스크톱 프로토콜용 포트이며 윈도우 인스턴스에 로그인하는 데 사용됨)
🧐💡타임아웃이 되는 경우, 연결을 계속 시도하지만 성공하지 못하는 경우.
EC2 인스턴스에 어떤 종류의 연결을 설정하려고 할 때 타임아웃이 된다면,
(SSH, HTTP를 시도했을 때 타임아웃) 모두 보안그룹 때문🧐💡
📌 SSH 개요
리눅스 서버에서는 SSH, 보안 셸을 통해 서버에 연결함
- Mac/Linux: 기본적으로 SSH를 통해 EC2 인스턴스에 연결.
- Windows <= 10: Putty 프로그램을 사용하여 SSH 연결.
- Windows >= 10: SSH, Putty, EC2 Instance Connect 모두 사용 가능.
- EC2 Instance Connect: 터미널 대신 웹 브라우저를 통해 EC2 인스턴스에 연결하는 방법. (현재는 Amazon Linux 2에서만 사용 가능).
- SSH를 사용하여 EC2 인스턴스에 연결
- .pem 키 파일을 사용해 EC2 인스턴스에 안전하게 접근.
- 서버에 로그인되면 Amazon Linux 2 환경에 접속 가능.
- EC2 Instance Connect를 사용하여 웹 브라우저에서 EC2 인스턴스에 접속
- SSH 대신 웹 인터페이스를 통해 더 간편하게 연결 가능.
📌 EC2 인스턴스 역할 데모
🚨 EC2 인스턴스에 IAM API 키를 절대 입력하지 말 것 🚨
>> aws configure 명령을 사용하여 API 키를 입력하면, 다른 사용자가 EC2 인스턴스에 접근해 자격 증명을 회수할 수 있는 보안 위험이 발생함.
✅ 대신 IAM 역할을 사용하여 안전하게 권한을 부여 ✅
IAM 역할을 EC2 인스턴스에 할당하면, 인스턴스는 필요할 때마다 자동으로 권한을 사용하여 IAM 작업을 수행할 수 있음.
API 키를 공유하지 않고도 IAM 작업을 처리할 수 있는 안전한 방법
📌 EC2 인스턴스 구매 옵션
- On-Demand 인스턴스:
- 요청 시 언제든지 인스턴스를 실행할 수 있음.
- 단기 작업에 적합하며 사용한 만큼만 비용을 지불.
- 장기 약정 필요 없음, 가격은 높지만 예측 가능.
- Reserved(예약) 인스턴스 (1~3년):
- 장기 작업에 적합, 1년 또는 3년 단위로 예약.
- 예약을 통해 최대 72%까지 비용 절감 가능.
- Savings Plans (1~3년):
- 특정 사용량을 정해두고 장기 약정(1~3년)을 통해 비용 절감.
- 최대 70% 할인 가능, 특정 사용량 초과 시 On-Demand 요금 적용.
- Spot 인스턴스:
- 아주 저렴(최대 90% 할인)하지만 언제든지 중단될 수 있음.
- 단기 작업이나 중단에 민감하지 않은 작업에 적합 (배치 작업, 데이터 분석 등).
- Dedicated Hosts:
- 물리적 서버 전체를 사용하며, CPU, 메모리, 스토리지 등을 완전히 제어.
- 특정 라이센스 요구 사항이나 규제 준수가 필요한 경우에 사용.
- AWS에서 가장 비싼 옵션이며, 1년 또는 3년 예약 가능.
- Dedicated Instances:
- 물리적 서버에서 독점적으로 사용하지만 서버의 구체적인 배치나 제어는 불가능.
- Dedicated Host보다 간소화된 버전.
- Capacity Reservations:
- 특정 가용 영역(AZ)에 용량을 예약하여 필요한 경우 언제든지 사용 가능.
- 할인 혜택은 없으며, 온디맨드 요금이 청구됨.
- 단기 작업에서 용량 부족을 방지하고자 할 때 적합.
'AWS' 카테고리의 다른 글
AWS Section 6-2. EC2 인스턴스 스토리지 (0) | 2024.09.27 |
---|---|
AWS Section 6-1. EC2 인스턴스 스토리지 (4) | 2024.09.27 |
AWS Section 4-2. IAM 및 AWS CLI (0) | 2024.09.27 |
AWS Section 4-1. IAM 및 AWS CLI (0) | 2024.09.27 |
Section 3. (0) | 2024.09.27 |