EC2 - Elastic Compute Cloud (IaaS)

JINWOO OH·2023년 7월 14일

SAA

목록 보기
3/19
post-thumbnail

Amazon EC2

  • AWS에서 제공하는 서비스형 인프라스트럭처
  • 많은 기능들이 있다
    • EC2 - VM을 대여
    • EBS - 데이터를 가상 드라이브 또는 EBS 볼륨에 저장
    • ELB - 로드를 분산 시킬 수 있다
    • ASG - 오토 스케일링 그룹을 통해 서비스를 확장 시킬 수 있다

EC2 sizing & configuration options

  • Operating System(OS)
    • 리눅스
    • 맥OS
    • 윈도우
  • CPU
  • RAM
  • Storage
    • 네트워크를 통해 연결할 스토리지 (EBS, EFS)
    • 하드웨어를 통해 연결할 스토리지 (EC2 Instance Store)
  • Network
  • Security Group
  • Bootstrap script
    • 인스턴스를 구성하기 위한 스크립트

EC2 User Data

  • bootstrap은 머신이 작동될 때 명령을 시작하는 것을 말한다
  • 스크립트는 실행 될 때 한번만 실행되고 그 후엔 실행되지 않는다
  • 부팅 작업을 자동화하기 때문에 bootstrapping이라는 이름을 가지게 되었다
    • Installing updates
    • Installing software
    • Downloading common files from the internet

EC2 instance types

  • 어플리케이션에 적합한 인스턴스를 선택하는 것

EC2 인스턴스 생성

  • Name and tags

    • 인스턴스를 다르게 태깅하기 위해 태크를 추가 할 수 있다

  • Application and OS Images

  • Instance type

    • CPU 개수나 메모리 용량, 비용에 따라 달라진다

  • Key pair(login)

    • 인스턴스에 접근하기 위해 SSH 유틸리티를 사용할 경우 필요

    • Mac, Linux 또는 Window10이라면 .pem 형식을 사용할 수 있음

    • Window 버전이 10 미만이면, .ppk를 사용하고 PuTTY를 사용

  • Network settings

  • Configure storage

    • free tier에서 사용할 수 있는 최대 30GB의 EBS 범용 스토리지를 사용

  • Advanced details

    • IAM이나 도메인을 설정 할 수 있음

    • User data
      - 스크립트, 즉 EC2인스턴스에 약간의 명령을 제공하며 처음 생성할 때만 적용

  • Summary

    • 인스턴스 생성에 대한 요약
  • 인스턴스가 생성된 화면

  • 퍼블릭 IP로 접속해서 User data에 작성한 스크립트가 제대로 작동하는지 확인
    • 화면에 나오는 주소는 사설 네트워크 IP주소로 나온다

인스턴스 중지 & 삭제

  • 인스턴스를 중지 하지 않고 계속 Running상태로 두면 그에 따른 요금이 청구된다
  • 인스턴스를 중지했다가 다시 Running상태로 바꿀 경우 IP가 변동된다(사설 IP는 변경되지 않는다)
  • 삭제를 하고 싶다면 Terminate instance를 통해 삭제가 가능하다

EC2 Instance Types

  • General Purpose
    • 웹 서버나 코드 저장소와 같은 다양한 작업에 적합
    • Compute, Memory, Networking간의 균형이 좋음
  • Compute Optimized (C로 시작하는 이름)
    • compute-intensive 작업에 적합 (고성능 프로세서)
    • Batch processing workloads
    • 미디어 트랜스 코딩 작업
    • 고성능 웹 서버
    • High performance computing (HPC)
    • 머신러닝
  • Memory Optimized (R로 시작하는 이름)
    • 메모리에서 대규모 데이터셋을 처리하는 유형의 작업에 적합
    • 고성능을 필요로하는 데이터베이스
  • Accelerated Computing
  • Storage Optimized
    • 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스
    • 고주파 온라인 트랜잭션 처리 시스템
    • 관계형, 비관계형 데이터베이스
    • 분산 파일 시스템
  • Instance Features
  • Measuring Instance Performance

AWS naming convention

“m5.2xlarge”

  • “m” : 인스턴스 클래스
  • “5” : 인스턴스의 generation
  • “2xlarge” : 인스턴스 클래스 내에서 크기
  • https://www.ec2instances.info/ 에서 사용 가능한 인스턴스를 자세하게 볼 수 있다

Security Groups

  • AWS에서 네트워크 보안을 실행하는데 핵심
  • Port로의 액세스를 통제하며 인증된 IP주소 범위를 확인
  • EC2 인스턴스에서 트래픽을 제어
  • Security groups는 오로지 “allow rules”만 허용한다 ****
  • IP 주소를 참조해서 규칙을 만들 수 있다
  • 보안 그룹끼리 서로 참조 할 수도 있다

“Inbound traffic” - 외부에서 EC2인스턴스로 들어오는 트래픽

“Outbound traffic” - EC2인스턴스에서 외부로 나가는 트래픽

Security Groups에서 알아야 할 사항

  • 여러 인스턴스에 연결 할 수있다
  • 지역과 VPC 결합으로 되어 있다
  • 보안 그룹은 EC2 외부에 존재한다 (EC2 외부의 방화벽)
    • 트래픽이 차단되면 EC2 인스턴스는 확인 할 수 없다
  • SSH 액세스를 위해 하나의 별도의 보안 그룹을 유지하는 것이 좋다
  • 타임아웃으로 애플리케이션에 접근할 수 없다면 보안 그룹 문제
    • Connection refused 에러가 발생했다면 애플리케이션의 문제이거나 실행되지 않았다는 것
  • Default로 모든 인 바운드 트래픽은 차단되어 있다
  • Default로 모든 아웃 바운드 트래픽은 허용되어 있다

Referencing other security groups

보안 그룹의 다른 보안 그룹을 참조하는 방법

  • 여러 보안 그룹을 참조해서 보안 그룹을 설정하면 각각의 보안 그룹을 설정한 EC2 인스턴스들이 트래픽을 보낼 수 있다

Classic Ports to know

  • “22” - SSH (Secure Shell)
    • Linux 인스턴스에 로그인할 때 사용
  • “21” - FTP (File Transfer Protocol)
    • 파일 공유 시스템에 파일을 업로드 하는데 사용
  • “22” - SFTP (Secure File Transfer Protocol)
    • SSH를 사용해서 업로드 하기 때문에 SSH와 같은 포트를 사용
  • “80” - HTTP
    • 보안이 되지 않은 사이트에 액세스 하기 위해 사용
  • “443” - HTTPS
    • 보안 사이트에 액세스 하기 위해 사용
  • “3389” - RDP (Remote Desktop Protocol)
    • 윈도우 인스턴스에 로그인할 때 사용

SSH

  • 명령줄 인터페이스
    • 터미널이나 명령줄을 이용해서 머신이나 서버를 제어할 수 있다
  • SSH
    • Mac, Linux, Windows 10 이상
  • Putty
    • Windows 모든 버전
  • EC2 Instance Connect
    • 모든 운영체제 사용 가능

SSH를 통한 EC2 접근

## 주의해야 할 점은 모든 SSH 접근을 시도 할 때는 EC2의 보안 그룹에서 22번 포트가 열려있는지 확인

# .pem 파일에 권한 부여
chmod 0400 {{key_file_name}}.pem

# .pem 파일에 권한 부여 2번째 방법
chmod 600 {{key_file_name}}.pem

# ssh 로 접근
ssh -i {{key_file_name}}.pem ec2-user@{{EC2_public_ip}}

SSH를 통한 EC2 인스턴스 역할

# ssh를 통해 EC2 인스턴스에 접속
ssh -i /Users/jinwoo/Documents/workspace/keys/saa.pem ec2-user@3.34.179.99

# AWs 버전 확인
[ec2-user@ip-172-31-46-35 ~]$ aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/5.10.179-166.674.amzn2.x86_64 botocore/1.18.6

# 권한을 부여 하라는데 aws configure를 사용하면 안좋은 이유는 아래에 있다
[ec2-user@ip-172-31-46-35 ~]$ aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".

# IAM 정책을 연결 한 후 iam list-users 조회
[ec2-user@ip-172-31-46-35 ~]$ aws iam list-users
{
    "Users": [
        {
            "UserName": "admin",
            "Path": "/",
            "CreateDate": "2023-01-02T06:23:12Z",
            "UserId": "AIDA5QZOV3LPA3NKSVJIK",
            "Arn": "arn:aws:iam::929421449950:user/admin"
        },
        {
            "UserName": "sakin",
            "PasswordLastUsed": "2023-06-18T04:03:06Z",
            "CreateDate": "2023-05-27T00:37:57Z",
            "UserId": "AIDA5QZOV3LPDGRVXIAHQ",
            "Path": "/",
            "Arn": "arn:aws:iam::929421449950:user/sakin"
        }
    ]
}

aws configure을 통한 자격 증명이 좋지 않은 이유

  • Access Key ID와 Secret Access Key를 적어두면 인스턴스에 접근하는 누군가 인스턴스에 입력된 자격 증명 정보를 회수 할 수 있다
  • 따라서 이전에 만들어 두었던 DemoRoleForEC2를 연결해서 사용

Untitled

EC2 Instances Purchasing Options

“On - Demand”

📌 단기적이고 중단 없는 워크로드가 필요할 때나 애플리케이션의 예측을 할 수 없을 때 사용
  • Linux or Windows - 1분 후에 1초마다 지불
  • 다른 OS - 시간 마다 지불
  • 비용이 많이 들지만 지불할 금액은 없다
  • 장기적인 약정 없다

“Reserved Instances”

📌 중장기적으로 예약해서 사용할 경우 이용하며 중간에 변환할 수 있는 예약도 있다
  • On - Demand에 비해 72% 할인을 제공
  • 특정한 인스턴스 속성을 예약
  • 1년 혹은 3년의 기간으로만 예약 가능

“Spot Instances”

📌 정해진 금액을 넘기면 사라지게 되므로 중요한 작업이나 데이터베이스에는 적절하지 않지만 금액을 많이 아낄 수 있다
  • On - Demand에 비해 최대 90% 까지 할인을 받을 수 있다
  • 정해진 금액을 넘어 서게 되면 인스턴스가 사라진다
  • 워크로드가 사라질 경우를 대비해야 한다
  • Batch jobs, Data analysis, Image processing, 분산형 워크로드

“Dedicated Hosts”

📌 전용 호스트로 실제 물리적 서버를 받는 경우로 라이선싱 모델과 함꼐 제공되는 소프트웨어인 경우 사용한다 (쉽게 말해 회사 규모)
  • 소켓, 코어, VM 소프트웨어 라이선스를 기준으로 청구
  • 가장 비싼 옵션이며, On - Demand와 예약을 할 수 있다
  • 높은 수준의 규정 준수가 필요한 기업, 혹은 복잡한 라이선스 모델을 가진 소프트웨어에 적합

“Dedicated Instances”

📌 개인 전용 하드웨어에서 실행되는 인스턴스
  • 물리적 서버와는 다르다
  • 같은 계정에서 다른 인스턴스와 함께 하드웨어를 공유할 수 있다
  • 인스턴스 배치에 대한 통제권은 없다

“Capacity Reservations”

📌 원하는 기간 동안 특정한 AZ에서 On - Demand 인스턴스를 예약 할 수 있다
  • 언제라도 용량을 예약하고 취소가 가능하다

EC2 Spot Instance Requests

  • On - Demand에 비해 최대 90% 할인된 가격으로 사용이 가능하다
  • spot price < max을 정의한다
  • 만약 정의한 가격보다 높아질 경우 아래와 같은 2가지 옵션(2분의 유예 시간이 존재)이 존재한다
    • 인스턴스를 중단하는 옵션
    • 인스턴스를 종료하는 옵션
  • spot block을 사용할 수도 있다
    • 특정 기간동안 인스턴스를 차단하는 기능

“Spot Instance 요청의 원리”

📌 원하는 인스턴스의 개수, 지불의사가 있는 인스턴스 가격, AMI등 요청의 유효기간 등
  • 스팟 인스턴스를 위한 일회성 요청
    • 요청이 이행되는 즉시 인스턴스가 시작된다
    • 시작되면서 스팟 요청이 사라진다
  • 사후 인스턴스를 위한 지속적인 요청
    • 요청사항이 계속 유지된다
    • 만약 정의한 가격보다 높아져서 삭제됬을 경우 요청이 남아있으므로 인스턴스가 다시 시작된다

“Spot 요청의 취소 조건”

📌 open, active, disabled상태여야 한다 (failed, cancelled, closed 상태이면 안된다)
  • 만약 요청을 취소 했을 경우, 기존에 남아있던 인스턴스는 삭제되지 않고 남아있는다
  • 따라서 Spot 요청을 먼저 삭제하고 남아있는 인스턴스를 삭제해야 왼벽하게 삭제된다

“Spot Fleets”

📌 비용 절감을 위한 방법
  • 한 세트위 스팟 인스턴스에 선택적으로 온디맨드 인스턴스를 섞어서 사용하는 것
  • 정의된 비용 제한 내에서 대상 용량을 맞추려 노력하는 것
  • 사용 가능한 Launch Pool을 통해서 실행된다
    • 다양한 인스턴스 유형, OS, 가용 영역을 가질 수 있다
  • Fleet이 가장 적합하고 좋은 Launch Pool을 선택한다

“Spot Instance를 할당해 줄 전략”

  • LowestPrice
    • 가작 적은 비용을 가진 풀에서 인스턴스를 실행
    • 짧은 워크로드 실행 시
  • Diversified
    • 기존에 정의한 모든 풀에 걸쳐 분산이 된다
    • 긴 워크로드에 적합하며 한 풀이 중단되더라도 다른 풀이 활성화 되어 있어 가용성이 뛰어나다
  • CapacityOptimized
    • 인스턴스의 개수에 따라 최적 용량으로 실행
    • 적절한 풀을 찾아 실행

0개의 댓글