Share
Sign In

EC2 - Fundamentals

키워드

EC2
EC2 유저 데이터
EC2 인스턴스 타입
보안 그룹
인스턴스 구매 옵션
스팟 인스턴스
스팟 블럭

EC2란?

EC2(Elastic Compute Cloud)는 Intrastructure as a Service(IaaS)이다. EC2는 한 서비스가 아니고 여러 서비스들을 통합한 상위 개념의 서비스이다.
Renting virtual machines (EC2 Instances)
Storing data on virtual drives (EBS)
Distributing load across machines (ELB)
Scaling the services using an auto-scaling group (ASG)
EC2를 사용하려면 몇 가지 구성요소를 선택해야 하는데,
운영체제: 리눅스, 윈도우, 맥 OS
CPU & RAM
저장 공간
네트워크에서 필요한 만큼 할당 받음 (EBS & EFS)
정해진 크기를 할당 받음 (EC2 Instance Store)
네트워크 카드: 속도, 공인 IP 주소
방화벽 규칙: 보안 그룹
부트스트랩 스크립트: EC2 유저 데이터

EC2 유저 데이터

부트스트랩(bootstrap)은 기계가 처음 동작할 때 명령어들을 실행하는 것을 의미한다. 시작할 때 딱 한 번만 실행되며 루트 계정에서 돌아간다. 소프트웨어 업데이트, 설정 파일 다운받기 등의 작업을 자동으로 실행한다.

EC2 인스턴스 타입

AWS는 다양한 스펙의 EC2 Instance를 제공해준다. (링크)

인스턴스 타입 이름 짓기

m5.2xlarge
m: 인스턴스 클래스
5: 세대 (계속 증가할 거다)
2xlarge: 인스턴스 클래스의 사이즈

인스턴스 타입 종류

범용 - 균형 있는 컴퓨팅, 메모리, 네트워크 리소스를 제공한다.
컴퓨팅 최적화 - 머신 러닝 등 고성능 프로세서를 활용하는 워크로드에 적합
메모리 최적화 - 메모리에서 대규모 데이터 세트를 처리하는 워크로드에 적합.
스토리지 최적화 - 읽고 쓰기가 많은 워크로드에 적합.

보안 그룹

보안 그룹은 EC2 인스턴스의 들어오고 나가는 네트워크 트래픽을 허용하는 방화벽의 역할을 한다. (허용밖에 못 한다) Port, IP, 인바운드/아웃바운드를 통제하며 한 인스턴스에 여러 보안 그룹이 붙을 수 있다. 보안 그룹은 리전/VPC에 종속되어 있어 리전을 바꾸면 보안 그룹도 다시 만들어야 한다.
인바운드 : 외부 컴퓨터에서 EC2 인스턴스로 접근하는 트래픽
아웃바운드 : EC2 인스턴스가 외부 컴퓨터로 접근하는 트래픽
기본적으로 모든 인바운드는 차단되어 있고, 모든 아웃바운드는 허용되어 있다.

일반적인 공개 포트

22 = SSH - 리눅스 인스턴스에 로그인
21 = FTP - 공유 폴더에 파일 업로드
22 = SFTP - SSH를 이용해 파일 업로드
80 = HTTP - 비보안 사이트에 접근
443 = HTTPS - 보안 사이트에 접근
3389 = RDP (Remote Desktop Protocol) - 윈도우 인스턴스에 로그인

SSH

어떻게 EC2 인스턴스에 접근해서 조작할 수 있는가?에 대한 대답이다.
SSH는 Mac, Linux, 그리고 Windows 10이상에서 접근하는 방법이다. Windows 10 미만이면 putty를 사용해야 한다. 그리고 OS에 상관없이 웹사이트를 통해 접근하는 방법이 있는데, EC2 Instance Connect라 한다.
SSM Session Manager로 접근할 수도 있지만 시험엔 안나온다.

EC2 인스턴스 구매 옵션

💡
상황을 주고 어떤 옵션이 가장 적합하냐라고 묻는 문제가 출제될 수 있다. 또한 Scheduled Reserved는 실제로는 더이상 지원하지 않지만 시험에는 나올 수 있다.
온디맨드 - 사용하는 만큼
리눅스, 윈도우는 초당 지불, 다른 OS는 시간당 지불하며 시간외 추가금이 없어서 비용 예측이 쉽다. 짧게 쓰기 좋다.
예약(1~3년) - 온디맨드보다 많이 할인
Reserved - DB같이 계속 써야 하는 상황에 유리
Convertible Reserved - 인스턴스 타입이 잘 바뀐다.
Scheduled Reserved - 특정 시간대에만 필요할 때
스팟 인스턴스 - 싸고(90%) 불안정한 인스턴스, 분산 컴퓨팅 때도 좋다. 실패하면 다른 인스턴스로 다시하면 되니까
전용 호스트 - 물리적인 서버를 예약해 SW 라이센스의 범위를 규정한다(Compliance Requirements)
전용 인스턴스 - 실행될 동안 물리적인 이동이 없음을 보장한다.(?)

스팟 인스턴스

스팟 인스턴스의 가격은 실시간으로 변동된다. 이 가격이 우리가 설정해놓은 가격보다 낮으면 인스턴스는 할당되고 설정해놓은 가격만큼 청구된다. 만약 가격이 높아지면, 멈췄다가 가격이 적합해질 때 다시 실행하거나(persistent) 아예 종료한다(one-time).

Spot Fleet

Spot Fleet = set of Spot Instances + (optional) On-Demand Instances
스팟 플릿은 최대 가격과 목표 용량을 설정해 놓고 이 목표에 맞게 유동적으로 스팟 인스턴스와 온디맨드 인스턴스를 조합하는 방식이다. 이 조합은 사전에 인스턴스 타입 풀을 만들어 놓고 각 풀에서 꺼내서 쓴다.
lowestPrice(최저 가격) - 가장 싼 거 가져오기
diversified(다각화) - 여러 풀에서 적절히 가져오기
capacityOptimized(용량최적화) - 목표 용량에 최대한 맞게 가져오기

Spot Block

지속 시간이 정의된 스팟 인스턴스이다. 더이상 지원하지는 않지만 시험에는 나올 수 있다.

실습 1. 리눅스 환경에서 EC2 시작하기

AWS 콘솔에서 첫 가상 서버를 만들고 아래 유저 데이터 스크립트를 실행시킬 거다.
#!/bin/bash sudo yum update -y sudo yum install -y httpd sudo systemctl start httpd sudo systemctl enable httpd sudo chown -R $USER:$USER /var/www echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html

실습 2. SSH로 인스턴스에 접근하기

아래의 명령을 입력해 주면 된다. Private key는 이전 실습에서 다운 받은 파일이고 퍼블릭 IP는 인스턴스의 IP이다. 뭔가 잘 안되면 구글링😉
ssh -i {Private key} ec2-user@{Your Public IP} chmod 0400 {Private Key} # UNPROTECTED PRIVATE KEY FILE 에러가 뜰 때 실행

실습 3. EC2에 IAM Role 할당하기

EC2 등의 서비스에서 다른 서비스에 접근하려면 무조건 IAM