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 인스턴스 수명 주기
- '중지됨' 상태는 '인스턴스를 유지한 채 일시적으로 중지한' 상태이기 때문에 얼마든지 다시 구동할 수 있다. 반대로 '종료됨' 상태는 '인스턴스를 영구 삭제'하기 때문에 다시 사용하기 어렵다.
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 > 모든 경보에서 생성한 경보에 체크하고 작업 > 삭제를 선택해서 삭제
'AWS' 카테고리의 다른 글
[AWS 교과서] 6장 AWS 데이터베이스 서비스 (0) | 2024.08.08 |
---|---|
[AWS 교과서] 5장 AWS 스토리지 서비스 (0) | 2024.08.02 |
[AWS 교과서] 4장 AWS 부하 분산 서비스 (0) | 2024.08.01 |
[AWS 교과서] 3장 AWS 네트워킹 서비스 (0) | 2024.07.31 |
[AWS 교과서] 1장 AWS란? (0) | 2024.07.28 |