Amazon EC2 (1)

wjdghks95·2024년 7월 5일

Amazon EC2 기초

Amazon Elastic Compute Cloud(EC2)는 안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스입니다. 개발자가 더 쉽게 웹 규모의 클라우드 컴퓨팅 작업을 할 수 있도록 설계되었습니다.

EC2의 장점

  • 초 단위 온디맨드 가격 모델
    • 온디맨드 모델에서는 가격이 초 단위로 결정
    • 서비스 요금을 미리 약정하거나 선입급이 필요 없음
  • 빠른 구축 속도와 확장성
    • 몇 분이면 전 세계에 인스턴스 수 백여대를 구축 가능
  • 다양한 구성 방법 지원
    • 머신러닝, 웹 서버, 게임 서버, 이미지 처리 등 다양한 용도에 최적화된 서버 구성 가능
    • 다양한 과금 모델 사용 가능
  • 여러 AWS 서비스와 연동
    • 오토 스케일링, Elastic Load Balancer(ELB), CloudWatch

EC2의 사용 사례

  • 데이터베이스
  • 웹 서버
  • 머신 러닝
  • 어플리케이션의 백엔드 서버
  • 데이터 프로세싱
  • 기타 서버가 필요한 모든 작업

EC2 인스턴스

EC2 인스턴스란?

  • EC2에서 컴퓨팅을 담당
    • 다양한 유형과 크기로 구성
    • 저장을 담당하는 EBS와 네트워크로 연결
  • 저장 방법에 따라 두 가지로 분류
    • EBS 연동
    • 인스턴스 스토어
  • 하나의 가용영역(AZ)에 존재

인스턴스 유형(패밀리)

  • 인스턴스의 역할에 따라 CPU, 메모리, 스토리지, 네트워크 등을 조합한 구성
  • 각 인스턴스 유형 별로 사용 목적에 따라 최적화
    • 예: 메모리 위주, CPU 위주, 그래픽 카드 위주 등등
  • 유형 별로 이름 존재
    • 예: t유형, m유형, inf유형 등
    • 같은 유형의 인스턴스들을 인스턴스 패밀리라 부름
  • 타입 별 세대 별로 숫자 부여
    • 예: m5 = m인스턴스의 5번째 세대
  • 아키텍쳐 및 프로세서/추가기술에 따라 접미사
    - c7gn = c인스턴스 중 AWS Gravition 프로세서를 사용(g) + Network Optimized(n) = c7gn

인스턴스 크기

  • 같은 인스턴스 패밀리에서 다양한 크기가 존재
  • 인스턴스의 cpu 갯수, 메모리 크기, 성능 등으로 크기 결정
  • 크기가 클수록 더 많은 메모리, 더 많은 CPU, 더 많은 네트워크 대역폭, EBS와의 통신 가능한 대역폭을 가짐

EBS와 AMI

Amazon EBS

Amazon Elastic Block Store(EBS)는 AWS 클라우드의 Amazon EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공합니다. 각 Amazon EBS 볼륨은 가용 영역 내에 자동으로 복제되어 구성요소 장애로부터 보호해주고, 고가용성 및 내구성을 제공합니다.

EBS란?

  • 가상 하드드라이브
  • EC2 인스턴스가 종료되어도 계속 유지 가능
    • 루트 볼륨으로 사용 시 EC2가 종료되면 같이 삭제됨
    • 단 설정을 통해 EBS만 따로 존속 가능
  • 용량을 범위에 따라 자유롭게 설정 가능
  • 특수하게 하나의 EBS를 여러 EC2로 장착 가능한 경우도 있음(EBS Multi Attach)
  • EC2 인스턴스와 같은 가용영역에 존재. 즉, 하나의 가용영역 안에서만 존재
  • 가용영역 안에 자동으로 분산 저장: 99.999% 가용성 목표

EBS 유형

  • 범용(General Purpose or GP): SSD
  • 프로비저닝 된 IOPS(Provisioned IOPS or io): SSD
    • 속도 위주
  • 쓰루풋 최적화(Throughput Optimized HDD or st): HDD
    • 용량 위주
  • 콜드 HDD(sc): HDD
  • 네틱(Standard): HDD

스냅샷

  • EBS의 특정 시점을 저장한 이미지
  • 이후 EBS로 다시 복구 가능
  • EBS의 백업 용도로 활용 가능
  • 증분식: 바뀐 부분만 저장
    • 100gb 볼륨의 스냅샷을 5번 찍어도 500gb가 아닌 100gb+4번의 변경 부분만 저장
    • 비용 역시 최적화
  • S3에 저장: 99.999999999% 내구성
  • Data Lifecycle Manager / AWS Backup 등으로 자동화해서 생성 가능
  • 기타 여러 기능
    • 암호화
    • 아카이브: 더 적은 비용으로 저장할 수 있으나 몇 가지 제약사항 적용
      • 최소 90일 이상 저장
      • 복원에 최대 72시간 소요
    • 공유: 다른 계정 등에 공유 가능
    • EBS Direct API를 활용해서 스냅샷에 직접 내용을 쓰거나 읽기 가능

AMI

AMI(Amazon Machine Image)란?

  • EC2 인스턴스를 실행하기 위해 필요한 정보를 모은 템플릿
  • 구성
    • 1개 이상의 EBS 스냅샷
    • 사용 권한(어떤 AWS 어카운트가 사용할 수 있는지)
    • 블록 디바이스 맵핑(EC2 인스턴스를 위한 볼륨 정보 = EBS가 무슨 용량으로 몇 개 붙는지)
  • 필요에 따라 Private으로 가지고 있거나 Public으로 공개 가능

인스턴스 저장 유형에 따른 AMI의 생성 방법

  • EBS: 스냅샷을 기반으로 루트 디바이스 생성
  • 인스턴스 저장: S3에 저장된 템플릿을 기반으로 생성

Amazon EC2 요금 모델 기초

EC2 요금모델

  • On-Demand: 사용한 시간 만큼만 요금 지불
  • Reserved Instances: 인스턴스 사용 기간을 약정
  • Savings Plan: AWS의 컴퓨팅 사용량을 약정
  • Spot Instances: 남는 인스턴스를 저렴하게 사용
  • Dedicated: 물리적인 전용 인스턴스 임대
    • Dedicated Instance / Dedicated Host

온디맨드(On-Demand)

  • 실행하는 인스턴스에 따라 초당 혹은 시간 당 컴퓨팅 파워로 측정된 가격을 지불
  • 약정 필요 없음
  • 수요 예측이 힘들거나 유연하게 EC2를 사용하고 싶을 때
  • 한번 써보고 싶을 때

예약 인스턴스(Reserved Instances)

  • EC2 인스턴스를 일정 기간 약정하여 요금을 할인 받는 방식
    • 온디맨드 EC2 사용 요금을 할인 받는 방식으로 적용
    • 할인 받고 싶은 EC2 인스턴스와 같은 리전, 유형 구매 필요
  • 약정 기간이 길 수록 더 큰 할인율 적용
    • 1년 혹은 3년 선택 가능
  • 최대 72% 저렴

Savings Plan

  • 컴퓨팅 파워의 사용량을 약정하는 요금 모델
  • 종류
    • Compute Savings Plans: 다른 서비스(Lambda, Fargate 등과 같이 사용)와 같이 약정
    • EC2 Instance Savings Plans: EC2 인스턴스 패밀리를 지정해서 약정
  • 최대 72% 저렴

스팟 인스턴스(Spot Instance)

  • AWS에서 보유중인 남는 인스턴스를 저렴한 가격으로 제공
    • 가용영역 별, 인스턴스 유형 별 다른 풀로 관리
  • 최대 90%까지 절약 가능
    • 가격을 상황에 따라 변동. 단, 항상 가격은 On-Demand 이하를 보장
  • 단, 인스턴스가 언제 종료될지 예측 불가능(Spot Instance interruption)

전용 인스턴스(Dedicated Instance)

  • 물리적으로 인스턴스/호스트 단위로 격리된 서버에서 EC2를 실행
  • 주로 라이선스 이슈/퍼포먼스 이슈를 해결하기 위해서 활용

보안 그룹

보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다.

보안 그룹이란?

  • EC2의 방화벽 역할을 하는 서비스
  • Port 허용
    • 기본적으로 모든 포트는 비활성화
    • 선택적으로 트래픽이 지나갈 수 있는 Port와 Source를 설정 가능
    • Deny는 불가능
  • 인스턴스 단위
    • 하나의 인스턴스에 하나 이상의 보안 그룹 설정 가능
    • 인스턴스에 여러 보안 그룹이 적용될 경우 모든 보안 그룹의 규칙을 적용 받음

실습 - EC2로 웹서버 만들기

EC2 구축하기

  1. 리전 선택 후 EC2 메뉴로 접속
  2. 인스턴스 시작
  3. 이름, AMI, 인스턴스 유형, 키페어, 네트워크 설정, 스토리지 구성 등 설정
    ※ 웹 서버에 접속하기 위해 HTTP 트래픽 허용

AMI 생성

EC2 접속 방법

SSH 연결

FTP 연결

* SSH 키 페어

  • 인스턴스에 연결할 때(SSH/FTP) 자격 증명 입증에 사용하는 보안 자격 증명 집합
  • 프라이빗 키와 퍼블릭 키로 구성
  • 다시 발급 불가능
    • 분실 시 EBS를 분리해 다른 인스턴스에 연결 혹은 스냅샷을 통해 재생성 필요
  • 리전 단위
    • 다른 리전에서 사용하기 위해서는 import 필요

EC2 인스턴스 연결

EC2 직렬 콘솔 연결

실습 - FTP 연결

  1. EC2 시작하기
  2. 키 페어 생성
  3. FTP 새 사이트 연결

    - 프로토콜: SFTP
    - 호스트: public IPv4
    - 로그온 유형: 키 파일
    - 사용자: ec2-user
    - 키 파일: 생성한 키 파일(.pem) 선택
  4. /var/www/html 경로에 인덱스 파일 붙여넣기

실습 - 직렬 콘솔 연결

  1. EC2 시작하기
  2. Manage access 허용
  3. password 셋업
    a. EC2 인스턴스 연결
    b. sudo -s
    c. sudo passwd root
  4. EC2 직렬 콘솔 연결

EC2 생명 주기

  • 중지
    • 중지 중에는 인스턴스 요금 미청구
    • 단 EBS 요금, 다른 구성요소(Elastic IP 등)는 청구
    • 중지 후 재시작 시 퍼블릭 IP 변경
    • EBS를 사용하는 인스턴스만 중지 가능 = 인스턴스 저장 인스턴스는 중지 불가
  • 재부팅
    • 재부팅 시에는 퍼블릭 IP 변동 없음
  • 최대 절전모드
    • 메모리 내용을 보존해서 재시작 시 중단 지점에서 시작할 수 있는 정지모드

ENI와 Elastic IP

ENI

ENI(Elastic Network Interface)는 VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소입니다.

ENI란?

  • EC2의 가상의 랜카드
  • IP 주소와 Mac 주소를 보유
  • 하나의 인스턴스에 여러개의 ENI를 연동 가능
    • 하나의 인스턴스가 한 개 이상의 ip를 보유 가능
  • 인스턴스 유형 및 사이즈에 따라 최대 보유 가능한 IP 주소가 변동
  • 내부적으로 보안 그룹은 ENI에 부착

탄력적 IP(Elastic IP)

탄력적 IP란?

  • EC2의 퍼블릭 IP를 고정해주는 서비스. 즉, 인스턴스를 중지해도 재시작 시 고정적인 IP를 확보 가능
  • EC2 이외에 다른 서비스(예:NLB)에도 사용
  • 내가 보유한 IP 주소를 AWS에서 사용 가능
  • 리전 단위
  • 연결하지 않아도 보유하기만 해도 비용 발생(IPv4 비용 발생)

실습 - 탄력적 IP 생성하기

  1. 탄력적 IP 주소 할당
  2. 탄력적 IP 주소 연결
  3. 인스턴스 연결

EC2 User Data / Metadata

EC2 UserData

  • EC2 인스턴스의 최초 실행 시 지정한 스크립트 실행 가능
    • 별도 설정을 통해서 재부팅 마다 실행하도록 설정 가능
  • 두 가지 모드
    • Shell Script
    • cloud-init: 리눅스 이미지의 부트스트래핑을 위한 오픈소스 어플리케이션
  • 주요 사용 사례
    • EC2 인스턴스 설정(보안 설정, 인스턴스 설정 등)
    • 외부 패키지 다운로드
    • 설치 어플리케이션 실행
    • 기타 EC2 실행 시 필요한 동작

Amazon EC2 Instance Metadata

인스턴스 메타데이터는 실행 중인 인스턴스를 구성 또는 관리하는 데 사용될 수 있는 인스턴스 관련 데이터입니다. 인스턴스 메타데이터는 호스트 이름, 이벤트 및 보안 그룹과 같은 범주로 분류됩니다.

EC2 Instance Metadata란?

  • EC2 인스턴스의 속성 및 정보 데이터
    • AMI ID, IPv4/IPv6주소, EBS 맵핑, 보안 그룹 연동상황, IAM 역할 연동 등
  • 실행중인 EC2 인스턴스의 메타데이터 IMDS(Instance Metadata Service)로 조회 가능
    • HTTP Endpoint 지원
    • IP주소: 169.254.169.254(IPv4), fd00:ec2::254(IPv6)
    • 두 가지 모드
      • IMDS v1: Request/Response 기반
      • IMDS v2: 세션 기반(default)
  • 주요 사용 사례
    • 인스턴스 별 설정, IAM 임시 자격증명 조회 등(AWS CLI, SDK 등이 내부적으로 활용)
  • EC2 실행 시 메타데이터 액세스 가능 여부 설정 가능
    • 기본 활성화
    • 버전 선택 가능
  • 가격: 무료

Instance Metadata Service V1

  • 별도의 보안 인증이 필요 없는 Request/Response 기반
    • Link Local IP(169.254.169.254)를 사용하기 때문에 해당 EC2 인스턴스에서만 요청 가능
  • CloudWatch Metric을 활용해서 조회 횟수 기록 가능
  • 인스턴스 이름 가져오기 예시
    • curl http://169.254.169.254/latest/meta-data/tags/instance/Name

Instance Metadata Service V2

  • 보안 토큰을 발급 받아 요청할 때 마다 토큰을 사용해 인증하는 세션 방식
    • 토큰의 유효기간은 1초에서 최대 6시간
  • IMDSv1보다 더 높은 보안 수준 제공
    • IAM 정책 등을 활용하여 EC2 인스턴스가 IMDSv2를 사용하도록 강제 가능
  • 예시
    • TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds:21600"`
    • curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/metadata/tags/instance/Name

실습 - 메타데이터 액세스 활성화 및 Userdata 등록

  1. EC2 시작하기
  2. 고급 세부 정보
  3. 메타데이터 액세스 활성화 및 버전(V2) 선택(default)
  4. 사용자 데이터 등록

EC2 권한 부여

IAM 자격 증명을 등록

  • IAM 사용자를 생성하고 IAM 자격 증명을 발급 받아 EC2에 등록
  • AWS Configure를 통해 자격 증명을 파일로 등록(~/.aws/credentials)
  • 관리가 어렵고 바꾸기 힘듦

IAM 역할을 부여

  • 권한이 부여된 IAM 역할을 만들고 EC2에 부여
  • 관리가 쉽고 교체가 쉬움
  • 내부적으로 지속적으로 자격 증명을 변경
    • 뛰어난 보안성

실습 - IAM 역할을 사용하여 EC2 권한 부여하기

  1. IAM 역할 생성
  2. 사용 사례 EC2 선택 후 권한 선택하여 생성
  3. EC2 인스턴스 시작
  4. 고급 세부 정보에서 IAM 인스턴스 프로파일 선택

참고

https://www.inflearn.com/course/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-aws-%EA%B8%B0%EC%B4%88/dashboard

0개의 댓글