[Cloud] AWS EC2의 이해
Amazon EC2 이해
학습 목표 - Amazon EC2에 대해 이해합니다.
- Amazon EC2 인스턴스를 생성시 필요한 구성 정보를 확인합니다.
- 인스턴스 유형, 인스턴스 비용 지불 방식, AMI, 키페어, 스토리지 구성 방식
1. Amazon EC2 인스턴스 타입
- Amazon EC2(Elastic Compute Cloud)는 클라우드에서 사용하는 가상 서버(가상머신)
- 가상 서버이기 때문에 애플리케이션 서비스에 적합한 하드웨어 리소스(CPU, Memory, 네트워크, 로컬 스토리지 등)를 설정할 수 있음
- 탄력적(Elastic)으로 Compute 리소스의 크기를 늘리거나 줄일 수 있음
- 선택하는 인스턴스 유형에 따라 다음 항목이 결정됨
- 메모리 (RAM)
- 처리 능력 (CPU)
- 디스크 공간 및 디스크 유형 (스토리지)
- 네트워크 성능
- 선택하는 인스턴스 유형에 따라 다음 항목이 결정됨
AWS가 지원하는 EC2 인스턴스 유형
- 범용 인스턴스 : 균형 있는 컴퓨팅, 메모리 및 네트워킹 리소스를 제공
- 컴퓨팅 최적화 인스턴스 : 고성능 프로세서를 활용하는 컴퓨팅 집약적인 애플리케이션에 적합한 리소스 제공
- 메모리 최적화 : 메모리에서 대규모 데이터 세트를 처리하는 워크로드에 적합
- 스토리지 최적화 인스턴스 : 로컬 스토리지에서 매우 큰 데이터 세트 액세스 할 수 있도록 대용량 스토리지를 제공
- 가속화된 컴퓨팅 인스턴스 : GPU 또는 FPGA를 사용하여 고성능 컴퓨팅 작업이나 그래픽 작업을 지원
- 고성능 컴퓨팅 최적화 인스턴스 : 대규모의 복잡한 시뮬레이션 및 딥 러닝 워크로드 지원
표기 방법
- Instance Family: 인스턴스 유형을 대표하는 그룹(“C”는 컴퓨팅 최적화, “M”은 메모리 최적화)
- Instance Generation: 특정 인스턴스의 세대. C7”는 일곱 번째 세대의 컴퓨팅 최적화 인스턴스를 의미
- Processor family : CPU 종류
- Instance Size: 할당된 하드웨어 리소스의 크기
- 참고 : 버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의
- 기존 Amazon EC2 인스턴스 유형은 고정된 CPU 리소스를 제공하는 반면, 성능 순간 확장 가능 인스턴스는 기본 수준의 CPU 사용률을 제공하면서 기본 수준 이상으로 CPU 사용률을 버스트하는 기능을 제공
- 이렇게 하면 기준 CPU와 추가 버스트 CPU 사용량에 대해서만 비용을 지불하면 되므로 컴퓨팅 비용이 절감. 기준 사용률과 버스트 기능은 CPU 크레딧에 의해 좌우
- 각 버스트 가능 성능 인스턴스는 CPU 기준 미만으로 유지되면 지속적으로 크레딧을 얻고, 기준선 이상으로 버스트될 때 크레딧을 지속적으로 소비합니다. 적립되거나 소비되는 크레딧 금액은 인스턴스의 CPU 사용률에 따라 달라집니다.
- CPU 사용률이 기준 미만인 경우 적립되는 크레딧은 소비되는 크레딧보다 많습니다.
- CPU 사용률이 기준과 같을 경우 적립되는 크레딧은 소비되는 크레딧과 같습니다.
- CPU 사용률이 기준을 초과할 경우 소비되는 크레딧이 적립되는 크레딧보다 많습니다.
- 적립되는 크레딧이 소비되는 크레딧보다 많을 경우의 차액을 획득한 크레딧이라고 하며, 이를 나중에 기준 CPU 사용률 이상으로 버스트하는 데 사용할 수 있습니다. 마찬가지로, 소비되는 크레딧이 적립되는 크레딧보다 많을 경우 인스턴스 동작은 크레딧 구성 모드(표준 모드 또는 무제한 모드)에 따라 달라집니다.
- CPU 사용률 : 인스턴스에서 현재 사용 중인 할당된 EC2 컴퓨팅 유닛의 비율(%)
- CPU 크레딧 : vCPU 시간의 단위
- CPU 크레딧 1개 = vCPU 1개 * 100% 사용률 * 1분
- CPU 크레딧 1개 = vCPU 1개 * 50% 사용률 * 2분
- CPU 크레딧 1개 = vCPU 2개 * 25% 사용률 * 2분
- 기준 사용률 : CPU 크레딧 수가 사용 중인 CPU 크레딧 수와 일치할 때 순 크레딧 밸런스 0에서 CPU를 사용할 수 있는 수준
- 획득 크레딧 : 인스턴스가 실행 중일 때 지속적으로 적립되는 크레딧. 시간당 적립되는 크레딧 수 = 기준 사용률(%) * vCPU 수 * 60분
- 획득한 크레딧
- 스턴스가 기준 사용률에 필요한 것보다 적은 크레딧을 사용하는 경우 사용되지 않은 CPU 크레딧입니다. 즉, 획득한 크레딧 = (적립되는 크레딧 - 기준 미만으로 사용되는 크레딧)입니다. 예: t3.nano가 한 시간 동안 5% 기준보다 적은 2% CPU 사용률로 실행될 경우 획득한 크레딧은 다음과 같이 계산됩니다. 획득한 CPU 크레딧 = (시간당 적립되는 크레딧 - 시간당 소비되는 크레딧) = 6 - 2 vCPU * 2% CPU 사용률 * 60분 = 6 - 2.4 = 시간당 획득한 크레딧 3.6입니다.
- 시작 크레딧 : 표준 모드로 구성된 T2 인스턴스에만 적용. 시작 크레딧은 새 T2 인스턴스에 할당되는 제한된 수의 CPU 크레딧으로, 표준 모드로 시작할 때 기준 이상으로 버스트할 수 있습니다.
전체 코어의 백분율로 나타낸 기준 사용률
| 인스턴스 유형 | 시간당 지급되는 CPU 크레딧 | 누적 가능한 최대 지급된 크레딧* | vCPU* | **vCPU당 기준 사용률 | | — | — | — | — | — | | T2 | | | | | |
t2.nano
| 3 | 72 | 1 | 5% | |t2.micro
| 6 | 144 | 1 | 10% | |t2.small
| 12 | 288 | 1 | 20% | |t2.medium
| 24 | 576 | 2 | 20%** | |t2.large
| 36 | 864 | 2 | 30%** | |t2.xlarge
| 54 | 1296 | 4 | 22.5%** | |t2.2xlarge
| 81.6 | 1958.4 | 8 | 17%** | | T3 | | | | | |t3.nano
| 6 | 144 | 2 | 5%** |- t2.micro가 한 시간 동안 10% 기준보다 적은 6% CPU 사용률로 실행될 경우 획득한 CPU 크레딧 = (시간당 적립되는 크레딧 - 시간당 소비되는 크레딧(3 - 1 vCPU * 6% CPU 사용률 * 60분 = 6 - 3.6 = 시간당 획득한 크레딧 2.4입니다.
- t3.nano가 한 시간 동안 5% 기준보다 적은 2% CPU 사용률로 실행될 경우 획득한 CPU 크레딧은 (시간당 적립되는 크레딧 - 시간당 소비되는 크레딧) = 6 - 2 vCPU * 2% CPU 사용률 * 60분 = 6 - 2.4 = 시간당 획득한 크레딧 3.6입니다.
- CPU 크레딧 누적 한도 : 인스턴스가 누적할 수 있는 획득 크레딧의 최대 한도이고 한도 도달후의 획득 되는 크레딧은 모두 삭제됨
- 비용 지불 방식
- 온디맨드(On-Demand)
- 가장 유연하고 간단한 결제 옵션으로 인스턴스를 사용한 시간(초단위계산)단위로 비용 지불
- 중단할 수 없는 단기적이고 불규칙한 워크로드에 이상적인데, 주로 소프트웨어 검증 및 테스트 단계에서 많이 사용.
- 리저브드(Reserved)
- EC2 인스턴스를 1~3년 정도 약정을 통해 낮은 시간당 요금으로 선불 지불. 온디맨드에 비해 최대 75%까지 할인
- 사용량이 안정적이거나 예측 가능한 애플리케이션에 가장 적합한데, 비용의 이유로 많이 사용
- 스팟(Spot)
- 인스턴스 가격을 입찰하여 구매할 수 있는 방법으로 온디멘드에 비해 최대 90%까지 할인
- 스팟성으로 더 높은 입찰가가 들어오면 서버가 꺼지게 됨. 때문에 중단을 허용할 수 있는 개발 및 테스트, 배치 처리 작업 등에 적합함
- 온디맨드(On-Demand)
- EC2 과금 비용 계산 EC2 의 경우 다음 세 가지 요소로 과금됩니다.
- Running Hour : EC2 인스턴스 사용 시간에 대한 과금( Instance Type, AMI 종류, 과금 모델에 따라 과금적용)
- Data Transfer : AZ단위, Region 단위, 기타 구간에 따라 각기 다른 단가로 과금.
- Storage(EBS) : EBS 볼륨 크기와 타입에 따라 과금.
2. AMI(Amazon Machine Image)
- 인스턴스를 시작하는 데 필요한 소프트웨어 구성(운영 체제, 애플리케이션 서버 및 애플리케이션)이 포함된 템플릿
- AWS에서는 Windows, Linux, MacOS 와 같은 운영체제부터 미리 구성된 애플리케이션 서비스까지 다양한 종류의 AMI를 지원
- AMI 목록에서 선택하거나 직접 생성할 수 있음
- Quickstart AMI : AWS에서 제공하는 사전 구성된 템플릿 AMI
- 내 AMI : 사용자가 직접 생성하거나 소유한 AMI
- AWS Marketplace AMI : 솔루션 제공업체가 제작한 상용 AMI 온라인스토어
- 커뮤니티 AMI : 외부 개인이나 조직에 의해 생성된 공개 AMI. 일부는 보안 위험이 있을 수 있어 신중하게 선택해야 함.
사용자는 워크로드에 맞는 인스턴스 유형과 AMI를 선택하여 원하는 EC2 인스턴스를 만들 수 있음.
3. 보안 그룹
- EC2 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽
보안그룹을 미리 만들어 놓고 할당하거나, 인스턴스 생성 시 생성 가능
4. 키 페어(Key Pair)
- Amazon EC2 인스턴스는 패스워드 로그인 제한하고 대신 인증서를 기반으로 로그인
인증서 :공개키 암호 알고리즘을 통해 만든 한쌍의 키
AWS 는 공개 키만 보유하고 EC2 인스턴스 시작 시 인스턴스에 자동으로 등록. 개인 키는 사용자가 개인 PC에 다운로드 받아 관리
- username : ec2-user
- password : private-key
5. 탄력적 IP
- 탄력적 IP 주소는 인터넷에서 연결 가능한 퍼블릭 IPv4 주소
- Amazon EC2를 생성하고 외부 연결을 허용해야한다면 EC2 인스턴스에 탄력적 IP를 할당해야 함.
- Amazon EC2 인스턴스에 자동 할당되는 퍼블릭 IP는 인스턴스 시작시 만들어지고, 중지 시 삭제됨
퍼블릭 서브넷에 있는 Amazon EC2 인스턴스에 외부 접속을 허용해야 할 경우 탄력적 IP 추가되어야 함.
6. 스토리지
- 서버가 동작되려면 운영체제가 로컬 디스크에 운영체제가 설치되어 있어야 함
EBS (Amazon Elastic Block Store)는 Amazon EC2 인스턴스에 대한 로컬 스토리지를 제공
- Amazon EC2 인스턴스 생성 시 디스크 타입, 크기를 선택
- gp3 볼륨은 gp2 볼륨보다 GB당 비용이 더 낮아 경제적이고 성능도 우수
7. 사용자 데이터(User data) 스크립트 (선택사항)
- 인스턴스 시작 시 사용자 데이터 스크립트 지정(선택 사항)
root 권한으로 실행
- 사용자 데이터 스크립트를 사용하여 인스턴스의 런타임 환경을 사용자 지정(customize)
- 인스턴스가 처음 시작될 때 스크립트가 실행됨
- 전략적으로 사용 가능
- 사용자 데이터 스크립트를 사용하여, 구축 및 유지 관리하는 사용자 지정 AMI의 수를 줄일 수 있음
8. EC2 인스턴스 생명주기
- 시작(Launching) - EC2 인스턴스를 시작할 때, 사용자는 AMI, 인스턴스 유형, 보안 그룹, 키 페어 등을 지정할 수 있습니다. 이러한 정보를 기반으로 Amazon EC2는 가상 머신을 시작하고 사용자에게 인스턴스 ID를 제공합니다.
- 실행(Running) -인스턴스 실행상태입니다. 실행 상태에서는 사용자가 인스턴스에 대한 액세스를 할 수 있습니다.
- 중지(Stopping) - EC2 인스턴스를 중지하면, 해당 인스턴스는 일시적으로 중지됩니다. 이 경우, 인스턴스 내의 모든 데이터는 유지됩니다. 사용자는 인스턴스를 다시 시작할 때 이전 상태로 복원할 수 있습니다.
- 종료(Terminating) - EC2 인스턴스를 종료하면, 해당 인스턴스는 완전히 삭제됩니다. 이 경우, 인스턴스 내의 모든 데이터는 영구적으로 삭제됩니다. 사용자는 이전에 생성한 AMI와 같은 정보를 기반으로 새로운 인스턴스를 생성할 수 있습니다.
LAB: Amazon EC2 생성
Task 1: 사전 구성 : VPC
- Task 2 : Security Group 만들기
- name : web-sg
- vpc : lab-vpc
인 바운드 규칙
유형 프로토콜 포트 소스 SSH TCP 22 내 IP 아웃 바운드 규칙
유형 프로토콜 포트 대상 모든 트래픽 전체 전체 Anywhere-IPv4
- Task 3: Amazon EC2 Instance 생성
- 이름 : web
- 이미지 : Amazon Machine Image(AMI) : Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
- login user : ec2-user
- 유형 : t2.micro
- 키: lab-key
- 네트워크 설정
- VPC : lab-vpc
- 서브넷 : lab-subnet-public2-ap-northeast-2c
- 퍼블릭 IP 자동 할당 : 활성화
- 보안그룹 : 기존 보안 그룹(web-sg)
- 스토리지: 8GB
- 고급 세부 정보
- 종료 방지 활성화
- 사용자 데이터
1 2 3 4 5
#!/bin/bash yum install httpd -y systemctl enable httpd systemctl start httpd echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index.html
- Task 4: 인스턴스 생성 후 접속 확인, 생성된 인스턴스 모니터링
- Task 5: 보안 그룹 업데이트 및 웹 서버 액세스
- Task 6 : 인스턴스 크기 조정 : 인스턴스 유형 및 EBS 볼륨 크기 변경
- Task 7 : 종료 방지 확인 및 해제
- 종료 방지 해제
- EC2 인스턴스 삭제
- 보안그룹 삭제
Comments powered by Disqus.