본문 바로가기

AWS

[AWS 교과서] 2장 AWS 컴퓨팅 서비스

1. AWS 컴퓨팅 서비스 

 

1) 컴퓨팅 정의 

 

- 컴퓨트(compute) 용어의 사전적 정의는 '계산하다' , '답을 구하다', '추정하다'이다. 어떤 것에 대해 계산하여 답을 구하고 추정하는 행위를 컴퓨팅(computing)이라고 볼 수 있다. 

 

- 이런 컴퓨팅을 전문적으로 수행하기 위해 인간이 아닌 컴퓨팅을 목적으로 하는 특화된 장비들이 있는데, 서버(server)가 대표적이다. 

 

- 이런 서버 자원은 온프레미스 형태로 구축해서 사용할 수도 있지만, 퍼블릭 클라우드 환경에서 컴퓨팅 자원을 제공받아 가상 서버를 구성하여 손쉽게 워크로드(workload)를 수행할 수 있다. 

 

 

2) AWS 컴퓨팅 서비스 

 

- AWS 컴퓨팅 서비스는 퍼블릭 클라우드에서 자원을 활용하여 다양한 워크로드를 수행할 수 있는 서비스이다.  우리는 컴퓨팅 자원을 사용할 수 있는 비용만 지불하면 수분 내로 가상의 서버 자원을 생성하고 관리할 수 있다. 

 

AWS 컴퓨팅 주요 서비스 

EC2 (Elastic Compute Cloud) 클라우드 환경에서 서버 자원을 인스턴스(instance)라는 가상머신(Virtual Machine, VM) 형태로 제공하는 가장 기본적인 AWS 컴퓨팅 서비스 
ECS(Elastic Container Service) EC2 기반 관리형 클러스터에서 실행되는 컨테이너 형태의 자원에 대한 배포, 스케줄링(scheduling), 스케일링(scaling)등을 관리하는 서비스 
Lambda 서버리스(serverless) 컴퓨팅 서비스로, 서버리스라는 말 그대로 별도의 서버 설정이 없는 환경을 제공하여 코드만 실행해 주는 서비스 
Lightsail 독립적인 환경을 제공하며, 최소한의 설정만으로도 손쉽게 사용 가능한 컴퓨팅 서비스 

 

 

2. Amazon EC2 소개 

 

Amazon EC2 (Amazon Elastic Compute Cloud)

 

- AWS의 퍼블릭 클라우드 환경에서 확장 가능한 컴퓨팅 자원을 제공하여 가상의 서버를 운영할 수 있는 서비스 

- Elastic은 '탄력적인' 이라는 뜻이며, 컴퓨팅 자원에 대해 원하는 만큼 확장하거나 축소하여 유연하게 사용할 수 있는 개념이다. 

 

- Amazon EC2는 인스턴스라는 가상 컴퓨팅 환경을 기반으로 하여, AMI(Amazon Machine Image)를 이용하여 인스턴스에 필요한 소프트웨어 정보를 정의 

- Amazon EC2 인스턴스는 사용자가 요구하는 CPU, 메모리, 디스크, 운영 체제, 소프트웨어 등을 제공하여 워크로드에 맞는 최적화된 가상의 서버를 생성하고 관리할 수 있다. 

 

 

1) Amazon EC2 인스턴스 

 

 

- 가상의 컴퓨팅 환경으로 CPU, 메모리, 스토리지, 네트워킹 용량을 결정하는 다양한 인스턴스 유형을 제공한다. 

- 클라우드 환경에서 컴퓨팅 자원을 필요한 만큼 사용하고, 쓰임을 다하면 자원을 반납하는 형태로 임의로 구성된 인스턴스

 

 

인스턴스 유형

 

- 인스턴스 유형은 크게 범용 ,컴퓨팅 최적화, 메모리 최적화, 가속화된 컴퓨팅, 스토리지 최적화로 사용자 용도에 맞추어 분류된다. 

 

 

인스턴스 유형 구조 

 

인스턴스 상태 

 

- 인스턴스 상태는 일반적으로 일곱 가지로 분류할 수 있으며, 어떤 행위에 최종적으로 도달하는 상태와 진행 과정에 따른 상태로 나눌 수 있다. 

 

- 최종적으로 도달하는 상태는 '실행 중(running)', '중지됨(stopped)', '종료됨(terminated)' 상태이다. 

- 진행과정에 따른 상태는 '대기중(pending)' , '중지중(stopping)', 재부팅(rebooting)', '종료 중(shutting-down)' 상태이다. 

 

 

 

Amazon EC2 인스턴스 수명 주기 

출처 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html

 

 

- '중지됨' 상태는 '인스턴스를 유지한 채 일시적으로 중지한' 상태이기 때문에 얼마든지 다시 구동할 수 있다. 반대로 '종료됨' 상태는 '인스턴스를 영구 삭제'하기 때문에 다시 사용하기 어렵다. 

 

 

2) AMI

 

AMI(Amazon Machine Image)

 

- 인스턴스를 시작할 때 필요한 정보를 제공하는 것으로 운영 체제와 소프트웨어를 적절히 구성한 상태로 제공되는 템플릿(template)이다.  인스턴스를 생성할 경우 AMI를 지정해야 하며, 하나의 AMI로 동일한 구성의 여러 인스턴스를 손쉽게 생성할 수 있다. 

 

- 이런 AMI는 사용자 정의의 AMI를 생성하여 활용할 수도 있고, AWS Marketplace에서 제공하는 서드 파티용 AMI를 선택하거나 AWS 자체적으로 정의된 기본 AMI를 선택해서 활용할 수도 있다. 

 

 

사용자 정의 AMI 생성 및 배포 

 

 

3) Amazon EC2 스토리지 

 

 

- AMI를 통해 Amazon EC2 인스턴스 환경을 설정했다면, 다음으로 어떤 저장소를 사용할지 결정해야 한다. Amazon EC2는 유연하고 효율적이며 사용하기 쉬운 데이터 스토리지 기능을 제공한다. 

 

- 스토리지(storage)는 데이터를 저장하는 공간이라는 의미로, 서버 자원에서 발생되는 데이터를 보관하려면 필수적으로 존재해야 하는 요소이다. 

 

 

인스턴스 스토어 

 

- 인스턴스에 바로 붙어 있는 저장소로, Amazon EC2 인스턴스를 생성하면 기본적으로 존재하는 스토리지이다. 

- 빠른 I/O(Input/Output)을 보장한다는 장점이 있지만, Amazon EC2 인스턴스를 중지하거나 종료하면 인스턴스 스토어에 저장된 데이터가 모두 손실된다는 단점이 있다. 

 

 

Amazon EBS

 

- 인스턴스에 연결 및 제거를 하는 형태로 구성되는 블록 스토리지 

- 인스턴스 스토어와 다르게 직접 연결된 구조가 아닌 인스턴스가 네트워킹을 통해 Amazon EBS에 접근하여 연결되는 구조로, 영구 보존이 가능한 스토리지이다. 

 

- Amazon EC2 인스턴스가 중지되거나 종료되어도 Amazon EBS에 보존하는 데이터는 그대로 유지할 수 있다. 

- 이런 Amazon EBS는 관리 콘솔을 통해 스냅샷을 생성하여 백업하거나 Amazon EBS 연결을 해제한 후 다른 인스턴스에 연결할 수 있다는 특징이 있다. 

 

 

인스턴스 스토어와 Amazon EBS

 

 

 

4) Amazon EC2 네트워킹 

 

- 근본적으로 Amazon EC2 인스턴스는 어떤 서비스를 수행하는 특수한 목적으로 만들어진 가상 서버 자원이다. 서비스를 제공하려면 자연스럽게 통신이 가능한 환경으로 구성되어야 한다. 

 

Amazon VPC(Virtual Private Cloud)

 

- AWS 퍼블릭 클라우드 안에서 논리적으로 격리된 가상의 클라우드 네트워크 

- 생성된 Amazon EC2 인스턴스는 별도로 구성된 하나의 Amazon VPC 안에 생성되어 네트워킹 된다. 

 

 

네트워크 인터페이스 (network interface)

 

- Amazon EC2 인스턴스는 네트워킹을 수행할 수 있는 네트워크 인터페이스가 필요하다 

- AWS에서는 ENI(Elastic Network Interface)라는 논리적 네트워크 인터페이스가 VPC 내 생성되며, ENI를 EC2 인스턴스에 연결해서 네트워킹을 수행한다. 

 

 

IP 주소 

 

- 네트워크 인터페이스에는 IP(Internet protocol) 주소가 있으며, IP 주소를 대상으로 구분하고 네트워킹을 수행한다. 

- IP 주소는 내부 구간의 통신을 위한 사설 IP인 프라이빗 IP와 외부 구간의 통신을 위한 공인 IP인 퍼블릭 IP로 나뉜다. 

 

 

Amazon EC2 네트워킹 요소 

 

5) Amazon EC2 보안 

 

보안 그룹(security group)

 

- Amazon EC2 인스턴스의 송수신 트래픽을 제어하는 가상의 방화벽 역할을 한다. 

- Amazon EC2 인스턴스 기준으로 수신 트래픽에 대한 인바운드(inbound) 규칙과 송신 트래픽에 대한 아웃바운드(outbound) 규칙으로 되어 있으며, 대상 트래픽에 대한 허용과 거부를 결정한다. 

 

 

키 페어(key pair)

 

- Amazon EC2 인스턴스에 연결할 때 자격을 증명하는 보안 키

- 키 페어는 퍼블릭 키와 프라이빗 키로 구성된다. 퍼블릭 키Amazon EC2 인스턴스에 저장되고, 프라이빗 키사용자 컴퓨터에 별도로 저장된다. 

- Amazon EC2 인스턴스를 생성한 후 가상 서버에 접근하여 필요하면 사용자가 보관하고 있는 프라이빗 키를 활용하여 자격을 증명하고 접근할 수 있다. 

 

6) Amazon EC2 모니터링

 

- Amazon EC2 인스턴스의 자원은 유한하며, 자원 이상의 부하가 있을 때는 분명 장애가 발생할 수 있다. 

- 다양한 지표(metric)에 대해 수동 모니터링과 자동 모니터링으로 분류할 수 있으며, 각 분류에 따라 다양한 모니터링 도구가 있다. 

 

수동 모니터링 도구 

 

- 관리자가 직접 콘솔을 이용하여 모니터링을 수행하는 것

- Amazon EC2 대시보드에서 간단한 통계 정보를 확인하거나 Amazon CloudWatch라는 모니터링 전용 서비스를 이용하여 상세한 통계 정보를 모니터링할 수 있다. 

 

 

자동 모니터링 도구 

 

- 대상 자원의 지표에 대해 임곗값을 정하고, 임곗값을 초과하면 정보(alarm)를 내리는 형태의 동적인 모니터링 방법을 의미한다. 

 

- Amazon CloudWatch 경보 시스템을 이용하여 동적으로 단일 지표를 관찰하고 지정된 임곗값을 기준으로 경보 작업을 수행할 수 있다. 이런 경보 작업은 Amazon SNS(Simple Notification Service)라는 알림 시스템으로 관리자 이메일을 호출하거나 다른 방법으로 호출하거나 Amaszon EC2 인스턴스 자원을 동적으로 확장할 수 있다. 

 

 

3. Amazon EC2 인스턴스 배포 및 접근하기 

 

SSH 클라이언트 설치 

 

- 'MobaXterm' 설치 

 

 

 

 

 

EC2 키 페어 내려받기 

 

- EC2 인스턴스에 접근할 때 자격을 증명하는 데 보안 키 정보가 필요하다. 

- 보안 키를 발급받으려면 AWS에서 키 페어를 생성해야 하며, 프라이빗 키 파일을 데스크톱에 저장해 두어야 한다. 

 

- AWS 웹 페이지에 접근해서 서비스를 클릭하고 컴퓨팅 > EC2 를 선택해서 EC2 설정 페이지로 접근 

- 왼쪽 EC2 설정 메뉴에서 네트워크 및 보안 > 키 페어를 선택하고 키 페어 생성을 누른다. 

- 키 페어 설정 페이지에서 이름을 입력하고, 프라이빗 키 파일 형식에서 .pem을 선택한 후 키 페어 생성을 누른다. 

 

 

 

실습  단계 

  • AMI를 이용한 EC2 인스턴스를 배포
  • SSH로 EC2 인스턴스에 접속하여 웹 서비스를 설정
  • EC2 인스턴스에 생성된 웹 서비스에 접속
  • EC2 인스턴스의 모니터링을 설정 
  • 실습을 위해 생성된 자원 모두 삭제 

 

1) AMI를 이용한 EC2 인스턴스 배포

 

- 서비스>컴퓨팅>EC2를 선택

- EC2 대시보드가 나타나면 인스턴스 시작을 눌러 EC2 인스턴스를 생성하는 설정 페이지로 넘어감 

 

- 이름 및 태그에서 EC2 인스턴스 생성을 위해 이름 및 태그를 정의한다. 

- 애플리케이션 및 OS 이미지에서 인스턴스의 운영 체제 및 소프트웨어 영역을 정의하는 AMI를 선택해야 한다. 

 

 

- 인스턴스 유형에서는 다양한 인스턴스 유형을 이용하여 CPU와 메모리를 지정하고 있는데, 이 중에서 t2.micro 유형을 선택한다. 

- 키 페어에서 EC2 인스턴스에서 사용할 키 페어를 선택해야 한다. 

 

- 네트워크 설정은 EC2 인스턴스에 대한 네트워크 설정을 수행하는 영역으로, 먼저 인스턴스가 속할 VPC를 지정해야 한다. 사용자가 직접 생성해도 되지만 기본적으로 생성되어 있는 VPC를 지정한다. 

- 웹 서비스를 제공하려면 퍼블릭 IP 자동할당은 활성화로 지정해야 한다. 

 

- 보안 그룹 설정으로 EC2 인스턴스가 제공할 서비스 접근 제어를 설정할 수 있다. 

- 'SSH 트래픽 허용' 과 '인터넷에서 HTTP 트래픽 허용'에 체크한다. 

- 각 서비스별로 접근 가능한 IP 대역을 지정할 수 있다. 

 

 

 

- 스토리지 구성에서 EC2 인스턴스에 구성될 스토리지르 설정할 수 있다. 

 

- 현재 리전에 존재하는 EC2 인스턴스 정보를 확인할 수 있다. 

 

 

 

2) SSH로 EC2 인스턴스에 접속하여 웹 서비스 설정하기 

 

- EC2 인스턴스 접속을 위해서는 퍼블릭 IP 주소를 확인해야 한다. 생성된 EC2 인스턴스에 체크하면 아래쪽 인스턴스 세부 정보에서 '퍼블릭 IP 주소'를 확인할 수 있다. 

 

 

- SSH 프로그램 (MobaXterm)을 실행하여 다음 순서대로 설정 

  • 메인 메뉴에서 Session을 클릭하여 Session settings 창 열기 
  • Session settings 창에서 SSH 탭을 클릭하여 SSH 설정 정보 표시 
  • Remote host에 앞서 복사한 EC2 인스턴스 퍼블릭 IP 주소 붙여넣기
  • 'Specify username'에 체크한 후 'ec2-user' 입력
  • 아래 'Advanced SSH settings'에 체크하여 상세 설정 정보 표시
  • SSH-browser type은 None으로 선택
  • 'Use private key'에 체크한 후 내려받은 키 페어 파일 지정
  • 모든 설정이 끝나면 OK 누르기 

 

 

 

 

- 다음과 같이 명령어를 하나씩 입력하여 웹 서비스(HTTP 데몬)를 설치하고 미리 만들어 놓은 최초 웹 페이지를 내려받는다. 

# MyFirstEC2 인스턴스에 SSH 접속
# 슈퍼 유저로 변경
sudo su - 

# http 데몬 설치
yum install httpd -y

# http 데몬 실행
systemctl start httpd

# 웹 서비스 최초 페이지 내려받기 
curl -L https://bit.ly/afbtest01 > /var/www/html/index.html

 

 

3) EC2 인스턴스에 생성된 웹 서비스 접속하기 

 

- 앞서 확인한 퍼블릭 IP 주소를 다시 확인하고 인터넷 웹 브라우저에서 입력하여 접속 

- 배포한 EC2 인스턴스는 웹 서비스를 제공하는 웹 서버로 동작하며, 인터넷 웹 브라우저에서 웹 페이지를 확인할 수 있다. 

 

 

4) EC2 인스턴스의 모니터링 설정하기 

 

- Amazon EC2 인스턴스에서 모니터링 탭을 클릭하면 기본적으로 다양한 지표와 함께 통계 정보가 나타난다. 

 

 

수동 모니터링 

 

- [모니터링 탭] 클릭 

 

- 이런 Amazon EC2 인스턴스의 기본적인 모니터링에서 좀 더 상세한 지표나 규칙을 부여하고 싶다면 대시보드에 추가를 눌러 Amazon CloudWatch 대시보드에서 모니터링을 수행할 수 있다. 

- 그 다음 새로 생성 > 새 대시보드 이름 입력 > 생성 > 대시보드에 추가를 차례대로 실행하여 CloudWatch 대시보드를 생성한다. 

 

 

 

자동 모니터링 

 

- Amazon CloudWatch 정보를 설정하여 자동 모니터링을 수행

 

- 가장 먼저 수행할 작업은 Amazon EC2 인스턴스의 세부 모니터링 관리 기능을 활성화시키는 것이다. 

- 모니터링 탭 오른쪽에 있는 세부 모니터링 관리를 눌러 세부 모니터링 관리 페이지로 이동하고, '활성화'에 체크한 후 저장을 누른다. 

 

 

 

- 세부 모니터링 기능을 활성화했다면 Amazon CloudWatch 서비스로 진입한다. 

- CloudWatch 서비스는 서비스 > 관리 및 거버넌스 > CloudWatch로 접근

- 경보 생성을 위해 경보 생성 링크를 클릭. 경보 페이지로 접근하면 가운데에 위치한 경보 생성을 눌러 설정한다. 

 

 

 

- Amazon CloudWatch 경보를 생성하는 첫 번째 단계로 지표 및 조건을 설정하는 페이지로 진입

- 설정을 위해 지표 선택을 누른다. 

 

 

- 지표 선택 페이지가 표시되면 찾아보기 탭에서 'CPUUtilization'을 검색한 후 EC2>인스턴스별 지표를 선택한다. 

- 필터링 대상 중 자신이 생성한 EC2 인스턴스에 체크한 후 그래프로 표시된 지표 탭을 클릭한다. 

 

- 그래프로 표시된 지표 페이지에 진입하면 기간을 5분에서 1분으로 변경하고 옵션 탭을 클릭하여 다음단계로 넘어간다. 

- 옵션 페이지에서 위젯 유형을 누적 면적으로 선택하고 지표 선택을 누른다. 

 

- 조건 설정 영역으로 넘어가서 조건을 다음과 같이 설정 

  • 임곗값 유형은 정적 선택
  • 경보 조건은 보다 큼 선택
  • ...보다 입력에는 '50'을 입력
  • 추가 구성 클릭
  • 누락된 데이터 처리에서 누락된 데이터를 양호(임계값 위반 안함)으로 처리 선택
  • 다음 누르기 

 

 

- 작업 구성 페이지로 넘어가면 경보 설정에 따른 알림을 설정

 

- 주제 생성을 누르면 입력한 이메일 주소로 Subscription Confirm 이메일이 전송된다. 

 

 

 

- 알람 설정 아래쪽에 EC2 작업을 설정한다. 

 

- 생성할 경보 이름과 설명을 입력하는 단계로 넘어간다. 

 

 

 

- 지금까지 설정한 Amazon CloudWatch 경보 설정은 CPU 사용률이 임곗값(50%) 이상일 경우 이메일로 알림을 수행하는 것이다. 

 

- CPU 부하를 강제로 발생하는 툴을 설치하여 실습 진행 

 

# MyFirstEC2 인스턴스 SSH 터미널 접속
# CPU 부하 설정 툴 설치 
amazon-linux-extras install -y epel
yum install -y stress-ng

# CPU 부하 발생(70%)
stress-ng --cpu 1 --cpu-load 70% --timeout 10m --metrics --times --verify

 

- 알림 설정에 따라 60초 동안 1회 CPU 임곗값인 50%를 넘어서 Amazon SNS를 통해 이메일을 전송한 것이며, EC2 작업 설정에 따라 Amazon EC2 인스턴스는 재부팅된다. 

 

 

 

 

5) 실습을 위해 생성된 모든 자원 삭제 

 

- EC2 > 인스턴스에서 생성한 EC2 인스턴스를 선택한 후 인스턴스 상태 > 인스턴스 종료를 선택 

- 인스턴스 상태는 수분 내로 '종료중 -> 종료됨' 상태로 전환된다. 

 

 

- CloudWatch > 모든 경보에서 생성한 경보에 체크하고 작업 > 삭제를 선택해서 삭제