EnJinnier
[SAA-C03] Part2: EC2 본문
**본 글은 udemy의 AWS Certified Solutions Architect Associate by Stephane Maarek의 강의를 참고하여 개인 공부 목적으로 작성하였으며 어떠한 수익 창출의 의도도 없음을 밝힙니다.**
Section 5: EC2 기초
EC2란?
: Elastic Compute Cloud의 약자로 AWS에서 제공하는 서비스형 인프라스트럭쳐. (아마존에서 가장 인기 있는 서비스)
쉽게 말해 AWS에서 임대하는 가상 서버.
- 가상머신 대여(EC2), 가상 드라이브(EBS)에 데이터 저장, ELB(Elastic Load Balancer)로 로드 분산, ASG(Auto-Scaling Group)으로 서비스 확장 등이 가능함.
EC2에서 선택 가능한 옵션
1. EC2 인스턴스의 운영체제(OS, Operating System): 3가지 중 선택 : Linux, Window, Mac OS
2. CPU 개수 선택 : 가상 머신에 사용할 컴퓨팅 성능과 코어의 양 선택
3. RAM(random-access memory) 선택
4. 용량(storage space) 선택 :
- network-attached (EBS&EFS) 네트워크를 통해 연결?
- hardware (EC2 Instance Store) 하드웨어에 연결?
5. EC2 인스턴스에 연결할 네트워크 종류 선택 :
- 속도가 빠른 네트워크 카드를 원하는지
- 어떤 종류의 공용 IP를 원하는지
6. 방화벽(Firewall) 규칙 선택 : security group
7. 부트스트랩 스크립트 : 처음에 설정하는 EC2 사용자 데이터
핵심은 사용자가 원하는 대로 가상 머신을 선택하여 AWS에서 빌릴 수 있다는 것!
=> EC2 사용자 데이터 스크립트를 사용하여 인스턴스를 부트스트래핑할 수 있음.
(script is only run once at the instance first start)
(*부트스트래핑: 머신이 작동될 때 명령을 시작하는 것을 말함)
인스턴스를 부팅할때 자동화하고 싶은 작업(업데이트, 소프트웨어 설치, 파일 다운로드 등)을 EC2 사용자 데이터(부트스트랩 스크립트)에 넣어서 실행할 수 있음. 다만, 사용자 데이터 스크립트에 작업을 더 추가할 수록 인스턴스가 할 일이 늘어남.
* EC2 사용자 데이터 스크립트는 루트 계정에서 실행되므로 모든 명령문은 sudo로 실행됨
애플리케이션에 가장 적합한 인스턴스를 선택하여 주문형 클라우드를 사용할 수 있음.
EC2 인스턴스 유형
EC2 인스턴스에는 7가지 유형이 있으며 범용(general purpose), 컴퓨팅 최적화(compute optimized), 메모리 최적화(memory optimized) 등이 있고 각 인스턴스에는 여러 제품군이 있다. 웹사이트에서 EC2 인스턴스 유형과 요금 및 특성을 확인할 수 있다.
AWS에는 다음과 같은 name convention이 있다. 예를 들어,
- m : 인스턴스 클래스(범용의 인스턴스)
- 5 : 인스턴스의 세대
- 2xlarge : 인스턴스 클래스 내에서 크기. small, large, 2xlarge, 4xlarge 등. 크기가 클수록 인스턴스에 더 많은 메모리와 CPU를 가지게 됨.
Instance Types 1) General Purpose : 범용의 인스턴스
: 웹 서버나 코드 저장소와 같은 다양한 작업에 적합 ex) t2.micro (강의에서 사용)
- 컴퓨팅, 메모리, 네트워킹간의 good balance
Instance Types 2) Compute Optimized : 컴퓨팅 최적화 인스턴스
: 컴퓨터 집약적인(compute-intensive) 작업에 최적화된 인스턴스. C로 시작하는 이름을 가짐.
high performance processor(고성능 프로세서)를 필요로 함.
-> 일부 데이터 일괄 처리, 미디어 트랜스코딩 작업, 고성능 웹 서버가 필요하거나 고성능 컴퓨팅이라는 HPC 작업을 할때, 머신 러닝이나 전용 게임 서버가 있을때 사용
Instance Types 3) Memory Optimized : 메모리 최적화 인스턴스
: 메모리(RAM)에서 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능을 제공함. R로 시작하는 이름을 가짐. + X1, Z1
-> 인 메모리 데이터 베이스가 되는 고성능의 관계형/비관계형 데이터베이스, 분산 웹스케일 캐시 저장소, Business Intelligence(BI)에 최적화된 인메모리 데이터베이스, 대규모 비정형 데이터의 실시간 처리를 실행하는 애플리케이션에서 사용
Instance Types 4) Storage Optimized : 스토리지 최적화 인스턴스
: 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스.
-> High frequency 온라인 트랜잭션 처리인 OLTP 시스템, 관계형&NoSQL 데이터베이스, 인메모리 데이터베이스의 캐시(ex. Redis), 데이터 웨어하우징 애플리케이션, 분산 파일 시스템에 사용.
instances.vantage.sh 에서 전체 EC2 인스턴스를 비교할 수 있다.
보안 그룹 Security Groups
- EC2 인스턴스 안팎으로 트래픽이 허용되는 방식을 제어함.
- 보안 그룹은 allow 규칙만 포함하고 있음.
- IP 주소를 기준으로 규칙을 설정할 수 있음.
- 다른 보안 그룹을 참조하여 설정할 수 있음.(IP를 고려하지 않아도 된다는 장점)
- 여러 인스턴스에 연결할 수 있음 (보안그룹과 인스턴스 사이에 1:1 관계는 없음)
- 하나의 인스턴스에 여러 보안 그룹이 있을 수 있음.
- 보안 그룹은 특정 지역과 VPC 조합에 제한되어 다른 지역으로 전환하는 경우 새 보안 그룹을 생성해야 함.
- SSH access를 위해 별도의 보안 그룹을 하나 유지하는 것이 좋음.
- 인바운드 룰 : 외부에서 EC2 인스턴스로 연결할 수 있게 해주는 규칙
- 아웃바운드 룰 : EC2 인스턴스에서 외부로 가는 트래픽을 허용하는 규칙
시험을 위해 알아야 하는 포트
- 22 = SSH (Secure Shell) : 22번 포트를 통해 리눅스에서 EC2 인스턴스에 로그인할 수 있음.
- 21 = FTP (File Transfer Protocol) : 파일을 file share에 업로드하는데 사용
- 22 = SFTP (Secure File Transfer Protocol)(22번 포트를 사용하는 SFTP) : SSH를 사용하여 안전하게 파일 전송
- 80 = HTTP : unsecured websites에 접속하기 위함.
- 443 = HTTPS : secured websites에 접속하기 위함.
- 3389 = RDP (Remote Desktop Protocol) (원격 데스크톱 프로토콜용 포트) : 윈도우 인스턴스에 로그인하는데 사용
(따라서 22번은 리눅스 인스턴스용 SSH, 3389번은 윈도우 인스턴스용 RDP임)
** 만약 타임아웃(사이트 접속 시 무한로딩)을 보게된다면
(예를 들면 SSH를 시도했지만 타임아웃이 되거나 혹은 HTTP 쿼리를 시도하는데 타임아웃이 되면)
그건 100% EC2 보안 그룹 때문이므로 나의 보안 그룹 규칙으로 가서 그것들이 정확한지 확인해야 함.
SSH 개요
SSH란 사용자가 터미널이나 커맨드 라인을 이용해서 원격 머신이나 서버를 제어할 수 있게 해주는 Amazon Cloud를 다룰 때 가장 중요한 기능이다.
클라우드에서 실행 시 유지 보수나 조치를 취하기 위해 서버 내부와 연결하는 것이 까다로운데,
이때 Linux 서버에서는 시큐어 셸인 SSH를 서버에 사용한다.
컴퓨터 운영체제에 따라
SSH : 명령줄 인터페이스 도구로 mac,linux,windows 10 이상 버전에서 사용 가능
퍼티(Putty): SSH와 동일하며 모든 버전의 윈도우에서 사용 가능
-> 두가지 모두 SSH 프로토콜을 사용해 EC2 인스턴스에 연결함
EC2 Instance Connect : 터미널, 퍼티가 아닌 웹 브라우저로 EC2 인스턴스에 연결. 모든 버전에서 사용 가능
단, Amazon Linux2에서만 작동함.
MAC에서 SSH 실행하기
인스턴스를 생성하면서 만든 키 페어 파일 ex. EC2 Tutorial.pem을 공백이 없도록 이름을 수정한 후
특정 파일에 넣고 해당 파일에서 터미널을 연다.
chmod 0400 EC2Tutorial.pem
ssh -i EC2Tutorial.pem ec2-user@{인스턴스 공용 IP}
위 명령어를 입력하면 나의 인스턴스로 SSH를 할 수 있으며
이제 모든 명령이 앞에서 실행한 Amazon Linux 2 AMI EC2 인스턴스에서 내려질 것이다.
(만약 인스턴스를 중단하고 시작하면 Public IP가 변경될 수 있음을 주의해야 한다.)
또는 인스턴스 대시보드에서 '연결'을 누르면 SSH 유틸리티를 미리 사용하지 않고도 빠르게 Amazon Linux2 AMI로 갈 수 있다.
만약 EC2 인스턴스 커넥트가 작동하지 않는다면 보안 그룹에서 SSH(Port22)의 IPv4 또는 IPv6를 허용하도록 수정해줘야한다.
EC2 인스턴스에 AWS 자격 증명을 제공할때는 api key를 직접 입력하는게 아니라 반드시 IAM 역할을 사용해야 함.
EC2 Purchasing Options
EC2 On Demand
: 사용한 대로 지불함.
- Highest cost, 바로 지불할 금액은 없음. 장기적 약정 x
- 단기적이고 중단없는 워크로드가 필요하거나 애플리케이션의 거동을 예측할 수 없을때 추천
EC2 Reserve Instances
: 인스턴스를 예약하여 사용함.
이 과정에서 온디맨드에 비해 훨씬 저렴하게 할인받을 수 있으며 특정한 인스턴스 속성을 예약하게 됨(인스턴스 타입, Region, Tenancy, OS)
- 1년~3년 예약(장기일수록 할인율 증가), 선결제Upfront일수록 할인율 증가
- 사용량이 일정한 어플리케이션에 예약 인스턴스를 사용하는 것이 좋음 (예. 데이터베이스)
- 인스턴스 타입, 인스턴스 family, OS, 범위, tenancy 등을 변경할 수 있는 전환형 예약 인스턴스도 있음.(flexible하기 때문에 할인율은 더 적음)
EC2 Savings Plans
: EC2 절약 플랜. 장기간 사용시 할인받을 수 있음.
- 사용량이 한도를 넘어서면 온디맨드 가격으로 청구됨
- 특정한 인스턴스와 패밀리, 리전으로 고정됨(사이즈, OS, 테넌시 등은 전환 가능)
EC2 Spot Instances
: 할인 폭이 가장 큼(온디맨드에 비해 최대 90%)
- 만약 스폿 인스턴스에 대해 지불하려는 최대 가격을 정의하고 만일 스폿 가격이 그 가격을 넘게 되면 인스턴스가 손실되기 때문에 언제라도 인스턴스가 손실될 수 있음.
- 만약 AWS가 스팟 인스턴스를 회수하는 것을 원하지 않는다면 스팟 블록을 사용할 수 있음.
(스팟 블록: 지정된 기간(1~6시간)동안 스팟 인스턴스를 차단하며 그 기간동안 중단 없이 해당 블록을 사용할 수 있음.)
- 스팟 요청을 해둔상태일때 스팟 인스턴스가 할당되기 때문에 스팟 인스턴스를 종료하려면 먼저 스팟 요청을 취소해야 함.
- 비용을 절감하는 궁극적인 방법: Spot Fleet(무리) : set of Spot Instances + optional On-Demand Instances
-> 사용자가 정의한 가격 제한으로 목표 용량을 충족하기 위해 가능한 런치 풀에서 시작해 다양한 인스턴스 유형, OS, AZ를 가짐.
플릿이 가장 적합한 런치 풀을 선택하며 스팟 플릿이 예산에 도달하거나 원하는 용량에 도달하면 인스턴스 시작을 중지함.
스팟 플릿에 스팟 인스턴스를 할당하는 전략을 정의해야 함.
1. 최저가격: 가장 낮은 가격인 풀에서 인스턴스를 시작(워크로드가 매우 짧고 간단한 경우 좋은 옵션)
2. diversifed: 스팟 인스턴스는 사용자가 정의한 모든 풀에 분산됨. great for 가용성, 긴 워크로드에 적합.
3. 용량 최적화: 사용 가능한 용량이 가장 큰 풀을 선택하고 그 중 가격이 가장 낮은 풀을 선택하는 전략. 대부분의 워크로드에 가장 적합.
스팟 플릿과 스팟 인스턴스의 차이점 꼭 알고 있을것. : 간단한 스팟 인스턴스를 요청하는 경우는 원하는 인스턴스 유형과 AZ를 정확히 알고 있는 경우, 스팟 플릿을 요청하는 경우는 조건을 만족하는 모든 인스턴스 유형과 모든 AZ를 선택하라는 것.
- 가장 비용효율적 Most cost-efficient 인스턴스 in AWS
- 인스턴스가 고장에 대한 회복력이 있을때 유용. 예) 배치 작업, 데이터 분석, 이미지 처리, 모든 종류의 분산형 워크로드, 시작 시간과 종료 시간이 유연한 워크로드.(장애 복원력이 뛰어난 워크로드)
- 아주 중요한 작업이나 데이터베이스에는 적절하지 않음. 시험에는 이부분을 물어봄.
EC2 Dedicated Hosts
: 전용 호스트. 나의 사례에 전용으로 사용되는 EC2 인스턴스 용량이 있는 실제 물리적 서버를 받게됨.
- 법규 준수 요건이 있는 활용 사례나 소켓, 코어, VM 소프트웨어 라이선스를 기준으로 청구되는 기존에 서버에 연결된 SW 라이선스가 있는 경우에 사용
- AWS에서 가장 비싼 옵션
- 활용 사례 : 라이선싱 모델과 함께 제공되는 소프트웨어인 경우(BYOL - Bring Your Own License), 규정이나 법규를 반드시 준수해야 하는 회사를 갖고 있는 경우
EC2 Dedicated Instances
: 전용 인스턴스. 나의 전용 하드웨어에서 실행되는 인스턴스.
- 전용 호스트와의 차이점: 전용 인스턴스란 내가 자신만의 인스턴스를 자신만의 하드웨어에 갖는다는 것인 반면에, 전용 호스트는 내가 물리적 서버 자체에 대한 접근권을 갖고 낮은 수준의 하드웨어에 대한 가시성을 제공해 준다.
EC2 Capacity Reservations
: EC2 용량 예약. 원하는 기간 동안 특정한 AZ에서 온디맨드 인스턴스를 예약하고 필요할때마다 그 용량에 접근할 수 있음.
- 기간약정x, 청구할인x, 언제든 용량을 예약하고 취소할 수 있으며 용량을 예약하는게 유일한 목적.
- 용량을 예약하므로 그걸 실행하지 않는 경우에도 요금이 부과됨.
- 특정한 AZ에 있어야 하는 단기적이고 중단 없는 워크로드에 적합.
=> 시험에서는 나의 워크로드에 적합한게 어떤 타입의 인스턴스인지 물어볼 것임.
Section5 Quiz
1) 다음 중, 할인 폭이 가장 크나, 데이터베이스 혹은 중요 업무에는 적합하지 않은 EC2 구매 옵션은 무엇인가요?
-> 스팟 인스턴스
2) EC2 인스턴스 내/외의 트래픽을 제어하기 위해서는 무엇을 사용해야 하나요?
-> 보안 그룹 (보안 그룹은 EC2 인스턴스 레벨에서 운용되며, 트래픽을 제어할 수 있음)
3) EC2 예약 인스턴스를 예약할 수 있는 기간은 얼마인가요?
-> 1년 혹은 3년 (그 사이의 기간으로는 예약 불가)
4) EC2 인스턴스에 고성능 컴퓨팅(HPC) 애플리케이션을 배포하려 합니다. 다음 중 어떤 EC2 인스턴스 유형을 선택해야 할까요?
-> 컴퓨팅 최적화 (컴퓨팅 최적화 EC2 인스턴스는 고성능 프로세서(예: 배치 처리, 미디어 트랜스코딩, 고성능 컴퓨팅, 과학적 모델링 및 머신 러닝, 전용 게이밍 서버 등)가 필요한 집중 컴퓨팅 워크로드에 적합.)
5) 1년 간 지속적으로 서버를 운영할 계획인 애플리케이션의 경우에는 다음 중 어떤 EC2 구매 옵션을 사용해야 할까요?
-> 예약 인스턴스. 장기적 워크로드에 적합함.
6) 일련의 EC2 인스턴스에 호스팅 될 애플리케이션을 실행하려 합니다. 이 애플리케이션에는 소프트웨어 설치가 필요하며, 최초 실행 중에 일부 OS 패키지를 업데이트해야 합니다. EC2 인스턴스를 실행하려는 경우, 이를 위한 최적의 방식은 무엇일까요?
-> 필수 소프트웨어의 설치 및 OS 업데이트를 수행하는 bash 스크립트를 작성한 후, 이 스크립트를 EC2 인스턴스 실행시에 EC2 사용자 데이터에서 사용하기
7) 인메모리 데이터베이스를 사용하는 중요 애플리케이션을 위해서는 다음 중 어떤 EC2 인스턴스 유형을 선택해야 할까요?
-> 메모리 최적화. 메모리 최적화 EC2 인스턴스는 메모리에 대규모 데이터 세트가 필요한 워크로드에 적합.
8)온프레미스에 호스팅된 OLTP 데이터베이스를 갖춘 전자 상거래 애플리케이션이 있습니다. 이 애플리케이션은 인기가 좋아, 데이터베이스가 초당 수천 개의 요청을 지니게 됩니다. 여러분은 데이터베이스를 EC2 인스턴스로 이전하려 합니다. 이렇게 높은 빈도를 보이는 OLTP 데이터베이스를 처리하기 위해서는 어떤 EC2 인스턴스 유형을 선택해야 할까요?
-> 스토리지 최적화. 스토리지 최적화 EC2 인스턴스는 로컬 스토리지의 대규모 데이터 세트에 대해 높은 수준의, 그리고 순차적인 읽기/쓰기 액세스 권한이 필요한 워크로드에 적합.
9) (참/거짓) 보안 그룹은 오직 하나의 EC2 인스턴스에만 연결될 수 있습니다.
-> 거짓.
10) 온프레미스 애플리케이션을 AWS로 이전하려 합니다. 여러분의 기업에는 애플리케이션을 전용 서버에서 실행해야 한다는 엄격한 규정이 있습니다. 또한 비용 절감을 위해 전용 서버 바운드 소프트웨어 라이선스를 사용해야 합니다. 이 경우, 다음 중 어떤 EC2 구매 옵션이 적합할까요?
-> 전용 호스트. 전용 호스트는 높은 수준의 규정 준수가 필요한 기업, 혹은 복잡한 라이선스 모델을 가진 소프트웨어에 적합합니다. 이는 가장 비싼 EC2 구매 옵션입니다.
11) 데이터베이스 기술을 EC2 인스턴스에 배포하려 합니다. 공급 업체 라이선스는 물리적 코어 및 기반 네크워크 소켓 가시성를 기반으로 비용을 책정합니다. 이 경우, 어떤 EC2 구매 옵션을 사용해야 가시성을 확보할 수 있을까요?
-> 전용 호스트.
12) 스팟 플릿은 스팟 인스턴스의 집합이며, 선택적으로 ___________ 이다.
-> 온디맨드 인스턴스. 스팟 플릿은 가장 낮은 가격으로 스팟 인스턴스를 자동으로 요청할 수 있게 해줍니다.
'자격증 > AWS' 카테고리의 다른 글
AWS Amplify 리디렉션 오류 해결 (0) | 2024.11.29 |
---|---|
AWS로 프론트엔드 서버 배포하기 (feat. AWS Amplify) (1) | 2024.11.10 |
[SAA-C03] AWS SAA-C03 일주일컷 합격 후기 (3) | 2024.09.27 |
[SAA-C03] Part2: EC2 (2) (1) | 2024.09.20 |
[SAA-C03] Part1: IAM (3) | 2024.09.12 |