EC2 기초
Elastic Compute Cloud, AWS가 제공하는 IaaS
EC2에서 임대한 가상 머신을 EC2 Instance라고 부름
EC2 선택 옵션
- 운영 체제: Windows, Mac, Linux
- CPU 개수
- RAM 개수
- 저장 공간 - 네트워크(EBS, EFS) / 하드웨어(EC2 Instance Store)
- 네트워크 종류 - 네트워크 카드 속도, 공용 IP
- 방화벽 - 보안 그룹
User Data를 사용해 인스턴스를 bootstrap(머신이 작동될 때 명령을 시작하는 것) 가능
→ 부팅 작업을 자동화
EC2 인스턴스 유형
https://aws.amazon.com/ko/ec2/instance-types/
EC2 인스턴스 생성
SSH로 인스턴스에 접근하기 위해서는 .pem 형식의 키 페어를 생성해야 함
User data 부분에 스크립트를 입력하면 EC2를 처음 생성할 때 스크립트를 실행하여 필요한 파일을 설치함
http://<Public IPv4> 주소를 입력해 EC2 인스턴스에 접근할 수 있음
- Public IPv4: 외부에서 인스턴스에 접근하기 위한 주소
- 인스턴스 중지 시 Public IP 변경 O
- Private IPv4: AWS 네트워크에서 내부적으로 인스턴스에 접근하기 위한 주소
- 인스턴스 중지 시 Private IP 변경 X
EC2 인스턴스 유형 기본 사항
m5.2xlarge
- m: 인스턴스 클래스
- 5: 인스턴스 세대
- 2xlarge: 인스턴스 크기
- 범용 인스턴스: 웹 서버, 코드 저장소와 같은 다양한 작업에 적합, m
- 컴퓨팅 최적화 인스턴스: 컴퓨터 집약적인 작업 최적화, C
- 데이터 일괄 처리
- 미디어 트랜스코딩 작업
- 고성능 웹 서버 (혹은 HPC)
- 머신 러닝
- 전용 게임 서버
- 메모리 최적화 인스턴스: 대규모 데이터셋 처리 최적화, R
- 고성능 데이터베이스
- BI 데이터베이스
- 대규모 데이터의 실시간 처리
- 스토리지 최적화 인스턴스: 로컬 스토리지에서 대규모의 데이터셋에 액세스 시 적합, I, D 또는 H1
- OLTP 시스템
- 관계형 및 비관계형 데이터베이스
- 분산 파일 시스템
전체 EC2 인스턴스 비교 사이트
Amazon EC2 Instance Comparison
instances.vantage.sh
보안 그룹 및 클래식 포트 개요
보안 그룹: EC2 인스턴스 inbound/outbound 트래픽 제어
- 보안 그룹은 허용 규칙만 포함되어 있음
- 기본적으로 모든 인바운드 트래픽은 차단되고 모든 아웃바운드 트래픽은 승인됨
- 다른 보안 그룹을 참조하여 설정 가능
- 여러 인스턴스에 연결 가능
- 리전 별 생성
다른 보안 그룹(SG2)을 참조하여 보안 그룹(SG1)을 설정하면 보안 그룹(SG2)가 연결된 다른 EC2 인스턴스도 IP에 관계없이 인스턴스와 연결할 수 있다.
알아야 하는 포트
- 21: FTP
- 22: SSH
- 80: HTTP
- 443: HTTPS
- 3389: RDS, 원격 데스크톱 프로토콜
보안 그룹 실습
페이지 접속 시 타임 아웃이 발생하면 보안 그룹을 확인해 보는 것이 좋다.
100% EC2 보안 그룹이 원인이기 때문이다.
SSH 개요
유지보수나 조치를 취하기 위해 서버 내부로 연결해야 할때 SSH를 사용해 연결한다.
EC2 Instance Connect는 Amazon Linux 2에서만 작동한다.
SSH로 터미널이나 명령줄을 이용해서 원격 머신이나 서버를 제어할 수 있음
Linux 또는 Mac을 사용하여 SSH 실행 방법
ssh -i <yourpemkey.pem> ec2-user@<public-IP> 명령어를 통해 접속 가능
pem키에서 오류가 난다면 chmod 0400 <yourpemkey.pem>로 pem키의 권한을 변경함
Windows 10을 사용하여 SSH하는 방법
ssh -i ./<yourpemkey.pem> ec2-user@<public-IP> 명령어를 통해 접속 가능
pem키에서 오류가 난다면 pem키 파일 > 우클릭 후 속성 > Security > Advanced > 사용 중인 사용자에게 모든 권한 부여
EC2 인스턴스 커넥트
인스턴스 > 연결 > EC2 Instance Connect
브라우저 기반으로 EC2 인스턴스에 대한 SSH 세션을 실행할 수 있음
SSH 연결을 브라우저에서 연결하는 것이기 때문에 22 포트를 열어놔야 함
EC2 인스턴스 Roles 데모
aws configure 명령을 실행해 자격 증명 및 액세스 ID, 비밀 액세스 키를 지정하는 것은 개인 정보를 등록하는 것이므로 매우 위험함
따라서 EC2에 지정된 IAM Role에 EC2 실행을 위한 권한을 부여하는 것이 적절함
EC2 인스턴스 구매 옵션
- 온디맨드: 사용한 만큼 초 단위로 비용 지불, 비용 예측 O
- 예약 인스턴스: 1년 혹은 3년 간 실행할 인스턴스 미리 구매
- 사용량이 일정한 애플리케이션
- 전환형 예약 인스턴스: 예약형 인스턴스 중 시간이 지나면 인스턴스 타입 변경
- 절약 플랜: 1년 혹은 3년 간 특정한 사용량 약정
- 사용량 초과 시 온디맨드 가격으로 청구
- 특정한 인스턴스와 패밀리, 리전으로 고정
- 스팟 인스턴스: 아주 짧은 워크로드, 인스턴스가 언제든지 손실될 수 있음
- 스팟 인스턴스를 위해 지불하려는 최대 가격을 정의하고 스팟 가격이 이를 넘으면 인스턴스 손실
- 전용 호스트: 물리적 서버 전체를 예약해서 인스턴스 배치 제어
- 법규 준수 요건이 있는 사례, 라이선스 기준으로 청구되는 서버와 연결된 경우
- 전용 인스턴스: 다른 고객과 하드웨어 공유 X
- 용량 예약: 원하는 기간 동안 특정한 AZ에 용량 예약, 할인 X
IP Address Charges in AWS
계정에 생성된 모든 Public IPv4에 대해 사용 여부와 관계없이 과금 청구
AWS 신규 계정에는 12개월 Free Tier가 제공됨 → 매달 Public IPv4를 750시간 사용 가능 (EC2만 적용)
Amazon VPC IP Address Manager에서 IPAMs를 만들어 사용 중인 Public IP에 대한 내용 확인 가능
스팟 인스턴스 및 스팟 집합
- 스팟 인스턴스에 대해 지불할 수 있는 최대 스팟 가격을 정의
- 스팟 인스턴스 실행
- 인스턴스의 스팟 가격이 우리가 지불하고자 하는 최대 가격보다 낮다면 해당 인스턴스를 유지
- 스팟 가격이 정의된 최대 가격을 초과하면
- 인스턴스 중지, 스팟 가격이 최대 가격 아래로 내려가면, 인스턴스를 다시 시작하고 중단했던 곳부터 재개
- 인스턴스 종료, 작업을 다시 시작할 때 새로운 EC2 인스턴스로 시작
스팟 블록: 지정된 기간 동안 스팟 인스턴스를 차단, 그동안 중단 없이 해당 블록을 사용 O
스팟 인스턴스는 최대 90%까지 비용을 절감할 수 있음
- 스팟 인스턴스 1회성 요청: 스팟 요청이 완료되는 즉시 인스턴스가 시작, 시작 후 요청 사라짐
- 스팟 인스턴스 영구 요청: 스팟 요청이 유효한 기간 동안은 인스턴스 수도 유효
- 인스턴스가 어떤 이유로든 중지되거나, 스팟 가격을 기준으로 중단되는 경우 스팟 요청이 다시 실행되고, 유효성이 확인되면, 스팟 인스턴스가 다시 시작됨
스팟 인스턴스 종료를 위해서는 먼저 스팟 요청을 취소하고 관련된 스팟 인스턴스를 종료해야 함
스팟 플릿: 스팟 인스턴스 세트를 정의하는 방법
정의한 가격 제한으로 목표 용량을 충족하기 위해 가능한 런치 풀에서 시작함
- 비용 최적화: 가장 낮은 가격인 풀에서 인스턴스 시작
- 용량 최적화: 원하는 인스턴스 수에 맞는 최적의 용량을 가진 풀에서 시작
- 가격 용량 최적화: 사용 가능한 용량이 가장 큰 풀을 선택하고 그 중 가격이 가장 낮은 풀을 선택
EC2 인스턴스 launch type 실습
스팟 인스턴스 요청
Spot Requiests > Request Spot Instances > Use a launch template
최대 요금 설정 및 요청 시작/종료 시간 지정
로드 밸런서나 타겟 그룹 연결 가능, 타겟 용량 및 인스턴스 타입 선택 가능
적절한 할당 전력 선택 후 인스턴스 생성
프라이빗 vs 퍼블릭 vs 탄력적 IP
- Public IP: 외부와 통신할 수 있는 IP
- 인터넷 전역에 액세스 O
- 전체 웹에서 유일
- Internet Gateway로 인터넷 연결
- 인스턴스 중지 후 실행 시 바뀔 수 있음(고정을 위해 Elastic IP 사용)
- Private IP: 사설 네트워크 내의 컴퓨터가 통신할 수 있는 IP
- 사설 네트워크 내에서만 액세스 O
- IP가 사설 네트워크 안에서만 유일하면 OK
- NAT Gateway로 인터넷 연결
- Elastic IP: 인스턴스에 고정된 Public IP 지정
- 계정당 5개 사용 가능
- Elastic IP를 사용하는 것보다 임의의 공용 IP를 써서 DNS 이름을 할당하는 것이 바람직함
외부에서 인터넷으로 SSH 접근을 하기 위해서는 Public IPv4 필요
인스턴스 중지 후 재시작 시 새로운 Public IPv4 주소 할당(Private IPv4 주소는 바뀌지 않음)
이를 방지하기 위해 Elastic IP 이용해 Public IP 주소를 할당하여 고정함
EC2 배치 그룹
배치 그룹: EC2 인스턴스가 AWS 인프라에 배치되는 방식을 제어
AWS의 하드웨어와 직접적인 상호 작용을 하지는 않지만 EC2 인스턴스가 각각 어떻게 배치되기를 원하는지 AWS에 알려주는 것
배치 그룹 전략
- 클러스터: 단일 가용 영역 내에서 지연 시간이 짧은 하드웨어 설정으로 인스턴스를 그룹화
- 장점: 계산 작업에서 뛰어난 성능, 향상된 네트워킹을 활성화
- 단점: 해당 AZ에 장애 발생 시 모든 인스턴스가 장애 발생
- 사용 사례: 빠르게 완료해야 하는 빅데이터 작업, 각 인스턴스 간에 지연 시간이 매우 짧고 처리량이 많은 네트워크가 필요한 애플리케이션
- 분산: 인스턴스가 다른 하드웨어에 분산(AZ별로 7개의 EC2 인스턴스만 가질 수 있음)
- 장점: 여러 가용 영역에 걸쳐 있을 수 있음, 실패 위험을 최소화
- 단점: 배치 그룹의 가용 영역당 7개의 인스턴스로 제한(규모 제한)
- 사용 사례: 가용성을 극대화하고 위험을 줄여야 하는 애플리케이션, 크리티컬 애플리케이션
- 분할: 여러 파티션에 인스턴스가 분할, 파티션은 가용 영역 내의 다양한 하드웨어 랙 세트에 의존
- 인스턴스가 여전히 분산되어 있지만 다른 실패로부터 격리 X
- 그룹당 수백 개의 EC2 인스턴스를 통해 확장 O
- 사용 사례: 파티션 인식 가능한 애플리케이션, Kafka를 사용하여 파티션을 인식하는 빅 데이터 애플리케이션
ENI(탄력적 네트워크 인터페이스)
ENI: VPC의 가상 네트워크 카드, EC2 인스턴스가 네트워크에 액세스 가능하게 함
특정 AZ에 바인딩됨
ENI를 옮겨 다른 방법보다 빠르고 간편하게 네트워크 장애 조치를 수행할 수 있음
인스턴스와 함께 생성된 ENI는 인스턴스 종료 시 삭제되고 직접 만든 ENI는 삭제 X
ENI 속성
- 주요 Private IPv4 (+ 하나 이상의 보조 IPv4)
- 하나의 Private IPv4당 Elastic IP 할당 가능
- 하나의 Public IP
- MAC 주소
EC2 Instance 선택 > Networking
eni-OOOOOOOOO로 시작하는 IP, Public IPv4, Private IPv4, IPv4 DNS가 있음
추가 자료
https://aws.amazon.com/ko/blogs/aws/new-elastic-network-interfaces-in-the-virtual-private-cloud/
New – Elastic Network Interfaces in the Virtual Private Cloud | Amazon Web Services
If you look closely at the services and facilities provided by AWS, you’ll see that we’ve chosen to factor architectural components that were once considered elemental (e.g. a server) into multiple discrete parts that you can instantiate and control in
aws.amazon.com
EC2 Hibernate 모드
EC2 종료 - EBS 디스크 데이터 삭제
EC2 중지 - EBS 디스크 데이터 유지
EC2 재시작: OS 부팅, user script 실행 > 애플리케이션 실행, 캐시 구성
EC2 절전 모드: RAM 메모리 보존(EBS 볼륨에 기록) → 인스턴스 부팅 빨라짐
사용 사례: 오래 실행되는 프로세스를 갖고 있고 중지하지 않을 때, RAM 상태를 저장하고 싶을 때, 빠르게 재부팅을 하고 싶을 때, 서비스 초기화가 오래 걸릴 때 등
베어 메탈 인스턴스 적용 X
EC2 instance 설정 > 중지 - 대기 모드 행동 활성화
인스턴스 절전 후 다시 재실행한 뒤 접속하여 uptime 명령어로 실행 시간을 확인하면 절전 모드가 실행된 시간이 포함되어 출력됨