본문 바로가기
AWS

AWS Section 5. EC2 기초

by _비니_ 2024. 9. 27.

📌 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 파일 작성 등

 

Http로 접근 ! Https는 우리가 열어두지 않았기에 무한로딩 상태로 표시됨.

다양한 사용 사례에 맞게 최적화된 다양한 유형의 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으로 시작

 

작은 메모리나 많은 cpu등 네트워크 성능에 따라 EBS 대역폭 등이 달라짐

 

 

📌 보안 그룹 및 클래식 포트 개요

  • 보안 그룹은 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 환경에 접속 가능.

 

ssh보다 쉽게 EC2 인스턴스에 연결하는 법 (백그라운드에서 ssh에 의존하고 있음)

  • 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