[Cloud Computing] 4-2 Using Amazon EC2

채린·2023년 10월 11일
0

Seven steps to launching an EC2 instance

  1. Instance name and tags
  2. Amazon Machine Image
  3. Instance type
  4. Key pair
  5. Network settings
  6. Configure storage
  7. Advanced details

Step 1: Instance Name and Tags

tag: AWS 리소스에 할당할 수 있는 label

  • key, optional value으로 구성
  • 인스턴스의 이름은 기본 태그 ( Key = Name; Value = 인스턴스이름)
  • 태그를 통해 다른 resource들끼리 쉽게 매칭해서 사용 가능
    ex turn off resources with “Development” tag after 6 p.m.

Tag Features

Manage tags

  • 태그 추가, 제거, 편집
  • 태그 제한 50개
  • naming, tagging은 선택사항

Search and filter for tags

  • key 또는 value 별로 리소스 검색
  • 태그 키와 값의 조합으로 리소스 필터링 및 검색

Benefits of Using Tags

Resource organization

  • 태그별로 검색 및 필터링 가능
  • 태그를 기반으로 AWS 리소스 그룹 생성 가능

Cost management

  • AWS Cost Explorer and detailed billing reports에서 태그별로 AWS 비용 분석

Automation

  • automation activities중에 리소스 필터링
  • E.g., non-business hours에 개발 환경을 끄는 automated start or stop scripts를 실행하여 비용 절감

Access control

  • IAM으로 태그가 지정된 리소스를 사용하여 attribute-based control (ABAC) 구현
  • 태그 정보를 기반으로 작업을 허용하는 IAM 정책 생성

Step 2: Choosing an AMI

Amazon Machine Image 구성 요소:
     Templates for the root volume of the instance:
           Operating system (OS)
           Application servers
           Applications
     AMI 사용할수있는 AWS 계정의 Launch permissions control(시작 권한 제어)
     Block device mapping이 인스턴스에 첨부할 볼륨을 지정

(Image: snapshot of certain stage)

Using AMIs

인스턴스의 use case에 맞는 AMI 선택
동일한 구성(configuration)인 인스턴스는 같은 AMI 사용
use case가 다르면 각각 고유한 AMI 사용AMI는 EC2의 이미지. 인스턴스는 AMI의 사본. 한 AMI로 여러 개의 인스턴스 실행 가능

인스턴스를 생성하기 전에 인스턴스가 사용되는 용도를 완전히 이해하는 것이 중요

  • 인스턴스가 생성된 후엔 AMI 변경 불가

Where Do You Get an AMI?

Pre-built

  • Amazon은 미리 구축된 여러 AMI를 제공

AWS Marketplace

  • 수천 개의 software solutions이 나열된 digital catalog 제공

Create your own

  • root volume of a golden instance의 block-level copy에서 생성됨

Community AMIs

  • 전 세계 사람들이 community AMIs 생성
  • AWS의 검사 X → 사용자 own risk

AMI Benefits

Repeatability

  • 동일한 AMI에서 시작된 인스턴스는 서로의 정확한 복제본

Reusability

  • AMI는 EC2 인스턴스의 전체 구성과 내용을 반복적으로 사용할 수 있도록 패키징

Recoverability

  • 장애가 발생한 시스템을 동일한 AMI에서 생성된 새 인스턴스로 교체

Marketplace solutions

  • specific vendor(판매자)의 software solution을 찾고 있는 경우 AMI가 marketplace(시장)에 존재할 수 있음
  • ex software살 필요 없이 matlab의 ami에만 돈 내면 됨

Backups

  • 완벽한 EC2 인스턴스 구성을 백업할 방법 제공

Step 3: Instance Types

instance type 결정 요소: CPU, Memory, Disk, Network
application, software의 requirements에 따라 선택

Instance Families

Prefix

  • t#: the cheapest one, general purpose 가장 저렴한 것, 범용
  • c#: compute optimized 계산 최적화
  • m#, r#: memory optimized 메모리 최적화
  • p#, f#: accelerated computing 가속 컴퓨팅
  • h#, i#, d#: storage optimized 스토리지 최적화
  • where # means generation number (the bigger, the newer) #는 세대 번호. 클수록 좋음

Suffix

  • no suffix: Intel Xeon series
  • -a: AMD EPYC series (cheaper than Intel Xeon)
  • -g: ARM Neoverse series (cheapest one, but it’s AArch64, not AMD64)
  • -d: comes with NVMe storage

Levels(size of the instance)

  • nano, micro, small, medium, large, xlarge, 2xlarge, …
  • metal: bare-metal server

(우리가 쓰는거 t2.micro: t→프리티어, no suffix→Intel Xeon)ex p3.16xlarge
p→accelerated computing→GPU
xlarge→메모리 큼 488GB
no suffix→Intel Xeon

Scaling Instances Vertically

인스턴스의 AMI와 달리 instance type은 인스턴스가 시작된 후에도 변경 가능

  • 변경해서 더 많은 compute power 제공해서 인스턴스 확장 가능
  • 이런 종류의 확장(expansion)을 vertical scaling(수직 스케일링)라고 함

vertical scaling:

  • CPU 스케일업 / 스케일다운
  • 아무 instance family의 아무 instance type으로 전환

Step 4: Key Pairs

인스턴스 실행시 기존 key pair 지정 / 새 key pair 생성 / key pair 사용x 선택 가능
-인스턴스가 시작된 후에는 키 쌍 추가 불가

key pair (키 쌍) 구성:

  • AWS가 저장하는 public key
  • 개인이 저장하는 private key

Connecting to Your Instance With Key Pair

key pair로 인스턴스에 안전하게 연결
Windows AMIs

  • private key를 이용해 RDP(Remote Desktop Protocol)를 통해 인스턴스에 로그인하는 데 필요한 관리자 암호 가져옴

Linux AMIs

  • private key를 사용하여 SSH(Secure Shell)를 사용하여 인스턴스에 안전하게 연결
  • PuTTY를 사용하는 경우 PuTTYgen을 사용하여 개인 .pem 키 파일을 .ppk로 변환해야 함
    절대 비밀키를 공개하지 마세요!!

(more info: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)

Step 5: Network Settings

인스턴스를 배치할 VPC, subnet, Security Group 선택
public IP address를 활성화할지 비활성화할지 결정

Regions

Region은 AWS Management Console에서 작업 중인 지역을 기반으로 추정됨

VPCs and Subnets

각 AWS region에 default VPC 존재

  • default VPC는 지역의 각 Availability Zone(가용성 영역)에 public subnet과 함께 제공됨
  • 따라서 EC2 인스턴스를 기본 VPC로 즉시 시작 가능

default VPC에서 더 많은 공용 서브넷 생성 가능

모든 지역에서 추가 VPC를 생성하고 사용자 지정 가능

Public IP Address

Public IP address

  • 인터넷에서 연결 가능한 IP 주소
  • 인스턴스(instance)와 인터넷(Internet)간의 communicate에 사용됨

Public IP

상황에 따라 공용 IP 주소가 EC2 인스턴스에 자동으로 할당되거나 할당되지 않음
Default VPC – Default subnet

  • Auto-assign public IP 설정_ “enabled”이 default
  • 비활성화 선택도 가능

Default VPC – Custom public subnet, Custom VPC – Custom subnet

  • Auto-assign public IP 설정_ “disabled”이 default
  • 활성화 선택도 가능

Security Groups

Security group 보안그룹

  • 인스턴스의 virtual firewall(가상 방화벽)
  • network access 제어
  • 인스턴스의 guest OS 외부에 존재

Security Group rules features

  • 인스턴스에 액세스할 수 있는 트래픽을 필터링
  • allow rules(허용 규칙)은 지정, deny rules(거부 규칙)은 지정X
    - 허용 규칙이 마련되지 않은 경우 모든 액세스 차단
  • 언제든지 수정 가능 → 연결된 인스턴스에 실시간으로 영향 미침

Rule Components

4 rule components

  • Type: 네트워크 트래픽에 개방할 특정 프로토콜 유형
    - 예: SSH, RDP, HTTP, HTTPS
  • protocol: 컴퓨터와 인터넷 상의 다른 서비스가 서로에게 정보를 보낼 수 있는 다른 방법
    - 예: TCP, UDP, ICMP
  • Port range: 각 프로토콜 유형에 대해 트래픽 통과가 허용된 포트를 확인
  • Source: range of IP addresses에 따라 인스턴스에 도달할 수 있는 트래픽을 결정

Inbound Rules and Outbound Rules

Security Group에 Inbound Rules and Outbound Rules 존재

Inbound rules: 인스턴스로 들어오는 트래픽을 제어
     - no inbound rules (default)
Outbound rules: 인스턴스에서 나가는 트래픽을 제어
     - 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙 (default)

Security Group’s Stateful Attributes

Security Group의 stateful effects(상태별 효과):

  • 모든 인바운드 규칙에 대해 아웃바운드 response응답이 허용됨 (자동으로)
  • 모든 아웃바운드 규칙에 대해 인바운드 response응답이 허용됨 (자동으로)

    • If this security group has an inbound rule that allows HTTP protocol from a source IP
    0.0.0.0/0, then a response from the instance is automatically allowed
    • The response is allowed even if no outbound rules are specified in the security group
    • However, since no outbound rules are specified in the security group, the instance
    cannot initiate an outbound call

• 이 Security Group에 소스 IP 0.0.0.0/0에서 HTTP 프로토콜을 허용하는 인바운드 규칙이 있으면 인스턴스의 응답이 자동으로 허용됩니다
• Security Group에 아웃바운드 규칙이 지정되지 않은 경우에도 응답이 허용됩니다
• 그러나 Security Group에 아웃바운드 규칙이 지정되지 않았으므로 인스턴스가 아웃바운드 호출을 시작할 수 없습니다

Managing Security Groups

Security Group는 서브넷 수준이 아닌 인스턴스 수준에서 작동

  • 동일한 서브넷에 있는 인스턴스를 다른 Security Group에 할당할 수 있음

인스턴스에 둘 이상의 Security Group 연결 가능

  • 트래픽 통과가 허용되기 전에 인스턴스에 연결된 모든 Security Group의 모든 규칙을 평가

Step 6: Configure Storage

Amazon Elastic Block Store(EBS): EC2 인스턴스 스토리지의 main solution

  • Amazon EBS: Amazon EC2를 위해 설계된 내구성 있고 분리 가능한 고성능 블록 스토리지 서비스
  • USB 드라이브처럼 작동
  • low latency 제공
  • 거의 모든 컴퓨팅 요구사항 처리 가능

run a database, host applications, handle storage operations 에 사용
ec2>Elastic Block Store>볼륨에서 생성 후 ec2인스턴스에 attach가능

sudo fdisk -l디스크 파티션 정보를 보여주는 명령어
시스템에 연결된 디스크 및 디스크 파티션들의 세부 정보 확인 가능

EBS Volume Types

  1. General purpose (SSD-based)
    – 다양한 workloads에 대해 가격과 성능(performance)이 균형을 이루는 SSD volume

  2. Provisioned IOPS (SSD-based)
    – IOPS(Provisioned Input/Output Operations Per Second)는 mission-critical low-latency(미션 크리티컬 저지연) or high-throughput workloads(높은 처리량 워크로드)를 위한 최고 성능의 SSD 볼륨

  3. Throughput Optimized 처리량 최적화(HDD-based)
    – 자주 액세스하는 throughput-intensive(처리량이 많은) workloads를 위해 설계된 저렴한 HDD 볼륨
    – boot volume 될 수 없음

  4. Cold (HDD-based)
    – 가장 저렴한 HDD 볼륨
    – less frequently accessed workloads를 위해 설계
    – boot volume 될 수 없음

(speed: SDD>HDD , cost: SDD<HDD)

Amazon EBS Storage Configuration Options

Volume types

  • root volumes에는 HDD 기반 유형 허용X
  • 인스턴스에 루트가 아닌 볼륨을 추가하고 필요에 따라 모든 유형을 다른 볼륨 유형과 mix and match 가능

Volume size

  • GB 단위로 선택

Delete on termination 종료시삭제

  • 인스턴스가 종료될 때 볼륨을 자동으로 삭제할지 여부 표시

Encryption 암호화

  • 루트 볼륨과 추가 볼륨을 암호화할 수 있는 옵션 존재
  • AWS KMS(Key Management Service)키를 사용하여 볼륨 암호화

Adding a File System

storage 구성할 때 인스턴스에 EFS(Amazon Elastic File System)를 추가할 수 있는 옵션 존재

Amazon EFS: 여러 EC2 인스턴스 간에 파일을 공유하는 데 사용할 수 있는 파일 시스템 (EBS는 볼륨시스템)

  • management or provisioning 필요 없이 파일을 추가 및 제거할 때 자동으로 grow(증가) 및 shrink(축소)
  • 인스턴스를 시작할 때 또는 그 이후에 파일 시스템에 인스턴스 연결 가능
  • Amazon EFS에 저장된 파일을 손실하지 않고 파일 시스템에서 인스턴스 제거 가능

Amazon EFS는 루트 볼륨으로 사용할 수 없음

  • Amazon EFS에 연결된 각 인스턴스에는 고유한 루트 볼륨이 있어야 함

Amazon EC2 Instance Store

instance store: 인스턴스에 대한 temporary block-level storage(임시 블록 레벨 스토리지) 제공

host computer에 물리적으로 연결된 디스크에 위치

  • 버퍼, 캐시, 스크래치 데이터 및 기타 임시 컨텐츠와 같이 자주 변경되는 정보의 임시 저장에 적합

루트 볼륨 될 수 없음

EC2 서버에 direct로 연결됨

EBS보다 훨씬 저렴

한계

  • 인스턴스가 중지, 최대 절전 모드 또는 종료되면 모든 데이터가 손실됨 : temporary
  • AMI와 인스턴스 유형의 특정 조합에 대해서만 옵션으로 제공
  • 인스턴스가 시작된 후에는 인스턴스 저장소 볼륨을 추가할 수 없음
  • AWS에서는 볼륨을 분리하는 옵션 제공X
  • 인스턴스 저장소 볼륨을 구성할 수 없음 (SSD or HDD, size, encryption)

Step 7: Advanced Details

▪ IAM Role
▪ User data
▪ Additional advanced setting options

IAM Role

IAM role: 특정 권한 정책(policy)이 있는 계정에서 생성할 수 있는 IAM identity

  • 필요한 사람이라면 누구나 추측할 수 있게 의도됨

Using IAM Roles with AWS Services

EC2 인스턴스는 종종 다른 AWS 서비스에 보안 API 호출을 수행해야 하는 애플리케이션을 실행

  • 역할을 사용하여 인스턴스에서 다른 AWS 서비스에 액세스할 수 있는 권한을 부여하여 security risks(보안 위험)을 극복
  • 다른 AWS 서비스에 보안 API 호출 권한을 부여하기 위해 EC2 인스턴스에 AWS credentials(자격 증명)을 저장하는 것은 안전하지 않음

Managing Roles

인스턴스에 역할을 연결하려면, instance profile에서 인스턴스와 연결할 역할을 선택

  • instance profile은 IAM role의 container

이러한 방식으로 역할을 관리하면 flexibility유연성이 크게 향상됨

  • 인스턴스를 실행할 때 역할 포함
  • 인스턴스가 시작된 후 역할 추가
  • 인스턴스에서 역할 제거
  • 권한에 즉시 영향을 미치도록 역할 정책 업데이트

User Data

EC2 인스턴스를 생성할 때 user data를 인스턴스로 전달하는 옵션 존재

user data scripts를 사용하여 사용자의 runtime environment을 customize

  • script: 인스턴스를 처음 시작할 때 기본적으로 실행
  • 인스턴스가 시작될 때마다 스크립트가 실행되도록 구성 가능

script 수행 ex:

  • Patch and update the instance AMI
  • Fetch and install software license keys
  • Install additional software

Additional Advanced Setting Options

Request Spot Instances

Shutdown behavior 종료동작

  • shutdown behavior 설정은 OS-level shutdown을 수행할 때 인스턴스의 동작 방식에 영향을 미침
  • 인스턴스를 종료하거나 중지할 수 있음

Termination protection

  • enable → 종료 보호가 해제될 때까지 콘솔, API 또는 CLI를 사용하여 인스턴스를 종료할 수 없음

Detailed monitoring 상세모니터링

  • Amazon CloudWatch와 연결하여 인스턴스 모니터링 가능
    Tenancy

Configuration Considerations

인스턴스를 실행할 때 염두할 것:

Ultimately, 인스턴스에 대한 구성 선택은 인스턴스의 use case를 기반으로 하고 비용을 절감해야 함

0개의 댓글