[AWS] 기초 과정 실습

남이섬·2024년 6월 25일
0

AWS 계정으로 시작

1. AWS 계정 생성하기

2. IAM 사용자

AWS 계정을 생성했거나 이미 있는 경우, AWS 계정에 접근할 수 있는 IAM 사용자를 생성합니다. 계정에 로그인한 후, IAM 콘솔을 사용하여 IAM 사용자를 생성할 수 있습니다. 아래의 순서에 따라 Administrator(관리자) 권한을 가진 사용자를 생성합니다. 이미 관리자 권한을 가진 IAM 사용자가 있다면, 다음 작업을 건너뜁니다.

  1. 로그인 페이지 에서 AWS 계정 이메일 주소와 비밀번호를 사용하여 AWS 계정의 루트 사용자로 IAM 콘솔 에 로그인 합니다.

  2. IAM 콘솔 화면 왼쪽 사이드 바에서 Users(사용자)를 클릭한 다음, Add user(사용자 추가) 버튼을 클릭합니다.

  1. User name(사용자 이름)은 Administrator로 입력합니다.

  2. AWS Management Console access 체크 박스를 선택하고,I want to create an IAM user 체크합니다.

  3. Custom password를 선택한 다음 비빌번호를 입력합니다.

  4. Next(다음)을 클릭합니다.


7. Attach existing policies directly (기존 정책 직접 연결)를 선택하고, AdministratorAccess 정책에 체크박스를 선택한 후, Next (다음)를 클릭합니다.

  1. Administrator 사용자에 AdministratorAccess 관리형 정책이 추가된 것을 확인하고 Create user (사용자 만들기)를 클릭합니다.

  1. 사용자가 추가되면 Console sign-in URL을 복사합니다. 해당 URL은 아래의 형식을 가집니다. https://<your_aws_account_id>.signin.aws.amazon.com/console

  1. 이제 루트 사용자에서 로그아웃하고, 방금 복사한 URL로 접속해서 새로 생성한 Administrator 사용자로 로그인 합니다.

추가 설정하기

  1. AWS 콘솔창 에 로그인하여 한국어로 언어를 설정합니다. 맨 아래 Unified Settings 에 들어가서 설정하시면 됩니다.

  1. 우측 상단의 리전 선택 메뉴에서 아시아 태평양(서울) 리전을 선택합니다.

  1. 서비스 메뉴에서 오늘 실습에 사용할 서비스들을 즐겨찾기로 설정합니다.

네트워크 구성하기

VPC(Virtual Private Cloud) 이해하기

Amazon Virtual Private Cloud(Amazon VPC) 를 이용하면 사용자가 정의한 가상의 네트워크 공간 안에서 AWS 리소스를 시작할 수 있습니다. 해당 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다.

VPC 생성하기

VPC 생성

  1. VPC 콘솔 에 로그인 합니다.

  2. 아래의 화면에서 VPC 마법사 시작을 클릭하여 VPC 생성 마법사를 시작합니다. VPC 마법사를 사용하면 기본이 아닌 VPC 구성을 손쉽게 생성할 수 있습니다.

  1. VPC 설정에서 VPC,서브넷 등을 선택합니다. 이름의 경우 VPC-Lab 으로 작성합니다.CIDR 블록은 기본값인 10.0.0.0/16 으로 설정합니다.

  1. 가용 영역(AZ) 는 1개를 선택하고, 가용 영역은 ap-northeast-2a 로 선택합니다. 이 가용영역은 아까 설정했던 VPC 의 부분집합 입니다. 밑에 있는 퍼블릭 서브넷 수도 1개로 선택하고, CIDR 블록을 10.0.10.0/24 로 설정합니다. 프라이빗 서브넷은 만들지 않으므로, 0개를 선택합니다.이후 다른 것은 선택하지 않고, 우측 하단의 VPC 생성 버튼을 누릅니다.

  1. 생성이 완료되면 VPC-Lab-vpc 이름의 VPC 를 볼 수 있습니다. 이를 VPC-Lab 으로 이름을 변경해 줍니다.

  1. 서브넷 화면에 들어가서 방금 서브넷 이름도 public subnet A 로 변경해 줍니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

CIDR 주소 범위 이해하기

CIDR(Classless Inter-Domain Routing)은 네트워크의 주소와 크기를 표현하는 방식 중 하나입니다. 위의 실습에서 생성한 VPC는 16을 서브넷 값으로 하는 IP 주소 범위입니다. 각 자원에 줄 수 있는 IP 갯수는 2의 16승인 65,536개입니다.

VPC CIDR 블록을 지정할 때, 허용된 블록 크기는 /16 넷 마스크 (사용 가능한 IP 주소 65,536개)~ /28 넷 마스크(사용 가능한 IP 주소 16개)입니다. 각 서브넷 CIDR 블록에서 첫 4개의 IP 주소와 마지막 IP 주소는 사용자가 사용할 수 없으므로 인스턴스에 할당할 수 없습니다.

추가 서브넷 생성하기

추가 서브넷 생성

고가용성을 확보하기 위해, 다중 가용 영역에 서비스를 배포하는 것이 중요합니다. 따라서 본 실습에서는 앞에서 생성한 서브넷이 위치한 가용 영역 A 외에 다른 가용 영역인 C에 서브넷을 생성합니다.

  1. 왼쪽 사이드 바에서 서브넷 메뉴를 클릭한 후, 서브넷 생성 버튼을 클릭합니다.

  1. VPC ID에는 방금 생성한 VPC를 선택합니다.

  1. 아래의 서브넷 설정에서는 화면과 같이 값을 입력한 후, 서브넷 생성 버튼을 클릭합니다.

  1. public subnet A와 public subnet C가 모두 생성된 것을 확인할 수 있습니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

라우팅 테이블 편집하기

VPC 라우팅 테이블 개념

  • 라우팅 테이블에는 서브넷 또는 게이트 웨이의 네트워크 트래픽이 전송되는 위치를 결정하는데 사용되는 라우팅이라는 규칙 집합이 포함되어 있습니다.

  • 기본 라우팅 테이블은 VPC와 함께 자동으로 생성되는 라우팅 테이블입니다. 다른 라우팅 테이블과 명시적으로 연결되지 않은 모든 서브넷의 라우팅을 제어하는 역할을 합니다.
    사용자 지정 라우팅 테이블은 기본 라우팅 테이블 외에 사용자가 생성한 라우팅 테이블입니다.

라우팅 테이블 연결 편집

  1. 서브넷 메뉴에서 작업 버튼을 클릭한 후, 라우팅 테이블 연결 편집을 선택합니다.

  1. 라우팅 테이블 ID에서 기본 라우팅 테이블이 아닌 다른 라우팅 테이블을 선택한 후, 저장합니다. 이때, 선택한 라우팅 테이블에 인터넷으로 향하는 경로가 있는지 확인합니다.

  1. public subnet C를 선택한 후, 세부 정보 탭에서 변경된 라우팅 테이블 하이퍼 링크를 클릭하면 라우팅 정보를 확인할 수 있습니다.

라우팅 테이블을 클릭 후, 라우트 탭에서 확인할 수 있는 결과는 아래와 같습니다. 이를 통해, public subnet C도 인터넷으로 향하는 경로가 생성되었음을 확인할 수 있습니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

보안 그룹 생성하기

보안 그룹 생성

보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다.

  1. 왼쪽 사이드 바에서 보안 그룹 메뉴를 클릭한 뒤, 보안 그룹 생성 버튼을 클릭합니다.

  1. 화면과 같이 보안 그룹 및 설명을 입력한 후, 본 실습에서 생성한 VPC를 선택합니다.

  1. 인바운드 규칙에서 아래와 같이 규칙을 부여한 후, 오른쪽 하단의 보안 그룹 생성 버튼을 클릭합니다.

  1. 아래와 같이 인바운드 규칙이 생성된 것을 확인합니다.

웹 서버 생성하기

EC2(Elastic Compute Cloud) 이해하기

Amazon EC2 는 AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 통해, 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 또한, Amazon EC2는 갑작스러운 트래픽 증가와 같은 변동 사항에도 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어듭니다.

웹 서버 인스턴스 생성하기

웹 서버 인스턴스 생성

인스턴스는 아래의 단계를 통해, 생성됩니다.

  • AMI 선택
  • 인스턴스 유형 선택
  • 인스턴스 구성
  • 스토리지 추가
  • 태그 추가
  • 보안 그룹 구성
  • 검토
  1. EC2 콘솔 에 로그인 합니다.

  1. 아래의 화면에서 인스턴스 시작을 클릭하여 인스턴스를 생성합니다

  1. 이름에 webserver 1을 입력합니다.

  2. 어플리케이션 및 OS 이미지 에서는 Quick Start 에서 다음과 같이 선택합니다.

  1. 인스턴스 유형으로는 t2.micro를 선택합니다.

  1. 키 페어(로그인) 에서는 새 키 페어 생성 을 선택합니다.

  1. 키 페어 생성창에서는 다음과 같이 입력 및 선택합니다. 그 다음 키 페어 생성을 누릅니다. 키를 다운받습니다.

  1. 네트워크 설정에서 편집 버튼을 누릅니다.

  1. VPC 와 서브넷, 퍼블릭 IP 자동 할당 세션에 다음의 값을 입력합니다.

  1. 방화벽(보안 그룹) 으로는 기존 보안 그룹 선택 을 선택한 후, 아까 보안 그룹 생성하기 에서 생성했던 보안그룹인 webserver-sg를 찾아서 선택합니다

  1. 스토리지 구성에서는 기본 값인 8 GiB gp2 로 설정합니다.

  1. 바로 아래에 있는 고급 세부 정보 를 펼쳐서 가장 아래로 스크롤 하면 사용자 데이터 가 보이며, 넓은 칸이 보입니다. 그 칸에 아래의 내용을 복사 및 붙여넣기 합니다.
#!/bin/sh
        
# Install a LAMP stack
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum -y install httpd php-mbstring
sudo yum -y install git
        
# Start the web server
sudo chkconfig httpd on
sudo systemctl start httpd
        
# Install the web pages for our lab
if [ ! -f /var/www/html/aws-boarding-pass-webapp.tar.gz ]; then
    cd /var/www/html
    wget -O 'techcamp-webapp-2024.zip' 'https://ws-assets-prod-iad-r-icn-ced060f0d38bc0b0.s3.ap-northeast-2.amazonaws.com/600420b7-5c4c-498f-9b80-bc7798963ba3/techcamp-webapp-2024.zip'
    unzip techcamp-webapp-2024.zip
    sudo mv techcamp-webapp-2024/* .
    sudo rm -rf techcamp-webapp-2024
    sudo rm -rf techcamp-webapp-2024.zip
fi
        
# Install the AWS SDK for PHP
if [ ! -f /var/www/html/aws.zip ]; then
    cd /var/www/html
    sudo mkdir vendor
    cd vendor
    sudo wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip
    sudo unzip aws.zip
fi
        
# Update existing packages
sudo yum -y update

  1. 이제 오른쪽에 있는 요약에서 인스턴스 시작 버튼을 누릅니다.

  1. 인스턴스가 성공적으로 만들어지게 되면, 인스턴스 창에서 다음과 같이 인스턴스 상태와 상태 검사를 확인하실 수 있습니다.

  1. 인스턴스 화면에서 생성한 인스턴스를 클릭한 후, 세부 정보에서 IPv4 퍼블릭 IP 값을 복사한 후, 웹 브라우저에 붙여 넣습니다.

  1. 아래와 같은 웹 화면을 확인할 수 있습니다

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

AMI 생성하기

AMI 개념

Amazon Machine Image(AMI)는 인스턴스를 시작하는데 필요한 정보를 제공합니다. 인스턴스를 시작할 때, AMI를 지정해야하는데, 동일한 구성의 인스턴스가 여러 개 필요할 때는 한 AMI를 사용하여 여러 인스턴스를 시작할 수 있습니다. 본 실습에서는 4-1 웹 서버 인스턴스 생성하기에서 생성한 인스턴스의 이미지를 뜨는 작업을 수행합니다.

AMI 생성

  1. 앞서 생성한 인스턴스를 클릭한 후, 작업 메뉴에서 이미지 및 템플릿 클릭, 이미지 생성을 클릭합니다.

  1. 이미지 생성 페이지에서 아래와 같이 값(webserver-ami)을 입력한 후, 우측 하단의 이미지 생성 버튼을 클릭합니다.

  1. 왼쪽 사이드 바에서 AMI 메뉴를 클릭한 후, 방금 생성한 이미지를 확인합니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

AMI 기반 인스턴스 생성하기

AMI 기반 인스턴스 생성

  1. AMI 메뉴에서 상태 변경이 완료되면 AMI로 인스턴스 시작 버튼을 클릭합니다.

  1. 이름 및 태그 에 이름을 webserver 2 로 지정합니다

  1. 쭉 내려오셔서 키 페어(로그인) 에서 키 페어 이름을 keypair-seoul 로 지정합니다.

  1. 네트워크 설정 으로 넘어와서 편집을 누릅니다.

  1. 아래와 같이 값을 입력합니다.

  1. 여기까지 하셨다면, 오른쪽 밑에 있는 인스턴스 시작 을 눌러 인스턴스를 시작합니다.

  1. 왼쪽 사이드 바에서 인스턴스 메뉴를 클릭한 후, 방금 생성된 webserver 2의 퍼블릭 IPv4 주소를 복사한 후, 웹 브라우저에 붙여 넣습니다.

  1. 아래와 같은 웹 화면을 확인할 수 있습니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

로드밸런서 구성하기

ELB(Elastic Load Balancing) 이해하기

Elastic Load Balancing 은 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시킵니다. Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다. Elastic Load Balancing이 제공하는 네 가지 로드 밸런서는 모두 애플리케이션의 내결함성에 필요한 고가용성, 자동 조정, 강력한 보안을 갖추고 있습니다.

  • Application Load Balancer
  • Network Load Balancer
  • Gateway Load Balancer
  • Classic Load Balancer

로드밸런서 생성하기

로드밸런서 생성

  1. 왼쪽 사이드 바에서 로드 밸런서 메뉴를 클릭한 후, 로드 밸런서 생성 버튼을 클릭합니다.

  1. Load Balancer 유형 선택에서 Application Load Balancer를 선택합니다.

  1. Load Balancer 구성에서 아래와 같이 값을 입력한 후, 스크롤을 내립니다.

  1. VPC에서는 VPC-Lab을 선택한 후, 매핑 항목에서는 public subnet A와 public subnet C를 선택합니다. 해당 작업은 로드밸런서에서 트래픽을 라우팅할 VPC와 가용 영역을 지정하는 작업입니다.

  1. 보안 그룹에서 새 보안 그룹 생성 버튼을 클릭합니다.

  1. 보안 그룹 생성에서 보안 그룹 이름에는 webalb-sg 을 입력하고 설명에는 security group for load balancer 를 입력합니다. VPC 에서 돋보기를 눌러서 VPC-Lab 으로 변경합니다. 인바운드 규칙으로는 유형으로는 HTTP, 소스로는 내 IP 를 선택합니다. 보안 그룹 생성 버튼을 눌러 보안 그룹을 생성합니다.

  1. 다시 로드 밸런서 화면으로 돌아와서 방금 만든 보안 그룹으로 보안 그룹을 지정합니다.

  1. 리스너 및 라우팅에서 대상 그룹 생성 버튼을 클릭합니다.

  1. 대상 유형 선택에는 인스턴스 를 선택하고 대상 그룹 이름은 webserver-tg 로 지정합니다. 프로토콜은 HTTP 로 선택합니다.

  1. VPC 에는 VPC-Lab 을 지정합니다. 그 다음 오른쪽 아래의 다음 버튼을 누릅니다.

  1. 대상 등록에 보이는 두 개의 인스턴스 webserver 1 과 webserver 2 를 아래에 보류 중인 것으로 포함 버튼을 통해 대상으로 등록합니다.

  1. 대상 그룹이 생성되면 로드 밸런서 화면으로 다시 돌아와서 리스너 및 라우팅 에서 대상 그룹으로 지정합니다.이후 오른쪽 아래의 로드밸런서 생성 으로 로드밸런서를 생성합니다.

  1. 로드밸런서를 통하여 웹 애플리케이션에 접근하기 이전, 챕터 4에서 생성하였던 웹 서버가 로드 밸런서의 트래픽만 받게 하기 위하여 보안 그룹 인바운드 규칙 편집 작업을 수행합니다. 보안 그룹 메뉴에서 webserver-sg 보안 그룹을 선택 후, 인바운드 규칙 편집을 클릭합니다.

기존 HTTP 인바운드 규칙을 삭제후, 새로운 규칙을 생성합니다. 로드밸런서의 트래픽만 받을 수 있도록 소스 부분에서 사용자 지정 클릭 후, webalb-sg를 지정합니다. 이후 오른쪽 하단에 있는 규칙 저장 버튼을 누릅니다.

  1. 다시 로드 밸런서 메뉴로 들어와 방금 생성한 로드밸런서의 상태를 확인한 후, active가 되면 아래의 설명에서 DNS 이름을 복사하여 웹 브라우저에 붙여 넣습니다. (참고: DNS 이름을 웹 브라우저로 복사 붙여넣기 후 연결이 안될 시 http://"DNS 이름"로 연결 되었는지 확인하시기 바랍니다. 본 실습에서는 HTTP 인바운드 규칙을 허용해놨습니다.)

  1. 아래와 같은 웹 화면을 확인할 수 있습니다.

  1. 웹 화면 새로 고침을 클릭하면 Application Load Balancer에서 기본으로 제공하는 라운드 로빈 알고리즘에 따라 화면에 보이는 InstanceID, Availabilty Zone 값이 변경되는 것을 확인할 수 있습니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

로드밸런서 대상 상태 확인

  1. 왼쪽 사이드 바에서 대상 그룹 메뉴를 클릭한 후, 로드밸런서 생성 단계에서 만든 대상 그룹을 선택합니다.

  1. 세부 페이지에서 대상 탭을 클릭하면 로드밸런서에 등록된 인스턴스들의 상태를 확인할 수 있습니다.

추가 실습

모니터링

Amazon SNS 개념

Amazon SNS(Simple Notification Service) 는 애플리케이션 간 혹은 애플리케이션과 사용자 간 통신 모두를 위한 완전관리형 메세징 서비스입니다. Amazon SNS 주제를 사용하면 게시자 시스템에서 병렬 처리를 위해 Amazon SQS 대기열, AWS Lambda 함수, HTTPS 엔드포인트를 비롯한 많은 구독자 시스템으로 메시지를 팬아웃할 수 있습니다.

Amazon CloudWatch 개념

Amazon CloudWatch 는 모니터링 및 관찰 기능 서비스입니다. CloudWatch는 애플리케이션을 모니터링하고, 시스템 전반의 성능 변경 사항에 대응하며, 리소스 사용률을 최적화하고, 운영 상태에 대한 통합된 보기를 확보하는데 필요한 데이터와 실행 가능한 통찰력을 제공합니다. CloudWatch는 로그, 지표 및 이벤트 형태로 모니터링 및 운영 데이터를 수집하여 AWS와 온프레미스 서버에서 실행되는 AWS 리소스, 애플리케이션 및 서비스에 대한 통합된 보기를 제공합니다. CloudWatch를 사용하여 환경에서 이상 동작을 감지하며, 경보를 설정하고, 로그와 지표를 나란히 시각화하며, 자동화된 작업을 수행하고, 문제를 해결하며, 통찰력을 확보하여 애플리케이션을 원활하게 실행할 수 있습니다.

본 실습은 아래의 단계로 수행됩니다.

Amazon SNS 설정

  • 주제 생성 주제: 통신 채널 역할을 하는 논리적 액세스 포인트
  • 구독자 생성 구독자: 해당 주체에 알람 발생 시, 해당 내용을 받는 주체

인스턴스 경보 생성

  • 경보가 생성되는 기준 설정
  • 알람 받을 대상 지정

모니터링 시스템 구축

  1. 먼저, 알람 받을 대상을 지정하기 위해 SNS 콘솔 에 로그인 합니다. 아래의 화면과 같이 admin-topic 값을 주제 이름에 입력한 후, 다음 단계 버튼을 클릭합니다.

  1. 주제 생성 페이지에서 유형은 표준으로 이름은 admin-topic 값이 맞는지 확인한 후, 오른쪽 하단의 주제 생성 버튼을 클릭합니다.

  1. 해당 주제로 알람이 발생 시, 받을 주체를 생성하기 위해 구독 생성 버튼을 클릭합니다.

  1. 프로토콜은 이메일을 선택하고 엔드포인트는 알람을 수신할 이메일을 입력합니다. 실제로 이메일을 받을 수 있는 이메일 주소를 입력한 후, 구독 생성 버튼을 클릭합니다.

  1. 방금 입력한 이메일 주소로 발송된 구독 확인 메일에서 확인 버튼(confirm subscription) 을 누르면 알림을 받을 수 있습니다.

  1. EC2 콘솔 인스턴스 메뉴로 들어가 webserver 1 인스턴스를 클릭한 후, 작업 선택, 모니터링 및 문제 해결 선택, CloudWatch 경보 관리를 클릭합니다.

  1. CloudWatch 경보 관리 페이지에서 경보 알림에 앞서 생성한 SNS 주제(admin-topic) 를 선택한 후, 스크롤을 내립니다.

  1. 경보 임계값에서 type of data to sample에서 CPU 사용률을 선택하고 임계값은 30으로 지정한 후, 생성 버튼을 클릭합니다.

  1. 로드 밸런서 DNS 이름을 복사하여 웹 브라우저에 붙여 넣습니다. 아래의 화면에서 LOAD TEST 버튼을 클릭하면 해당 인스턴스에 부하를 발생시킵니다.

  1. 부하가 발생하면서 지정한 임계값을 넘으면 앞서 설정한 이메일로 아래와 같은 이메일이 수신됩니다.

오토스케일링

Amazon EC2 Auto Scaling 개념

Amazon EC2 Auto Scaling 를 통해 애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 보유하도록 보장할 수 있습니다. Auto Scaling 그룹이라는 EC2 인스턴스 모음을 생성합니다. 각 Auto Scaling 그룹의 최소/최대 인스턴스 수를 지정할 수 있으며, 그룹의 크기가 최소/최대 사이 값을 유지합니다. 조정 정책을 지정했다면 Amazon EC2 Auto Scaling에서는 애플리케이션의 늘어나거나 줄어드는 수요에 따라 인스턴스를 시작하거나 종료할 수 있습니다.

Amazon EC2 Auto Scaling를 사용하면 애플리케이션에서는 다음 이점을 누릴 수 있습니다.

  • 내결함성 향상 : 인스턴스가 비정상 상태일 때 이를 감지하여 종료한 다음 이를 대체할 인스턴스를 시작할 수 있습니다. 여러 개의 가용 영역을 사용하도록 구성할 수도 있습니다.
  • 가용성 향상 : 애플리케이션이 항상 현재 트래픽 요구를 처리할 수 있는 올바른 용량을 갖추도록 도와줍니다.
  • 비용 관리 개선 : 필요에 따라 용량을 동적으로 확장 및 축소할 수 있습니다. 사용한 EC2 인스턴스에 대해서만 비용을 지불하므로, 인스턴스가 필요할 때 이를 시작하고 필요 없어지면 종료함으로써 비용을 절감합니다.

본 실습은 아래의 단계로 수행됩니다.

  • 시작 템플릿 생성
  • 오토스케일링 그룹 생성
  • 부하 발생 테스트 후, 오토 스케일링 동작 여부 확인

시작 템플릿 생성

  1. 오토스케일링 그룹을 생성하기 위해서는 시작 템플릿 또는 시작 구성이 준비되어야 합니다. 본 실습에서는 시작 템플릿을 사용합니다. EC2 콘솔 시작 템플릿 메뉴로 들어가 시작 템플릿 생성 버튼을 클릭합니다.

  1. 시작 템플릿의 이름 및 버전 설명을 기재한 후, Auto Scaling 지침 항목 체크 박스에 체크합니다.

  1. AMI란에는 세션 진행 동안 만든 AMI(webserver-ami)를 검색하여 선택합니다. 그리고 인스턴스 유형에는 t2.micro를 선택합니다. 본 실습은 서비스용 웹 서버를 올리는 것으로 SSH 접근을 하지 않을 예정입니다. 따라서 키 페어는 사용하지 않습니다.

  1. 네트워크 설정 부분에서는 세션 진행 동안 만든 보안 그룹(webserver-sg)을 선택합니다.

  1. 리소스 태그에는 아래와 같이 입력하고 리소스 유형은 인스턴스, 볼륨을 선택한 후, 시작 템플릿 생성 버튼을 클릭합니다.

  1. 다음 단계 지침을 숙지한 후, 시작 템플릿 보기 버튼을 클릭합니다.

오토스케일링 그룹 생성

  1. 왼쪽 사이드 바에서 대상 그룹을 선택한 후, 5-1 로드밸런서 생성하기 단계에서 만들었던 대상 그룹(webserver-tg)을 클릭합니다.

  1. 대상 탭에서 등록된 대상을 제거합니다.

  1. 왼쪽 사이드 바에서 Auto Scaling 그룹을 선택한 후, Auto Scaling 그룹 생성 버튼을 클릭합니다.

  1. 단계 1: 시작 템플릿 또는 구성 선택에서 Auto Scaling 그룹 이름에 web-asg를 입력하고, 아래의 시작 템플릿에서 방금 생성한 시작 템플릿(webserver-template)을 선택합니다.

  1. 단계2: 네트워크에서 본 실습 때 생성한 VPC(VPC-Lab)과 서브넷을 선택한 후, 다음 버튼을 클릭합니다.

  1. 단계3: 고급 옵션 구성에서 로드밸런서 생성하기 단계에서 생성한 로드 밸런서를 통해, EC2를 시작할 수 있습니다. 로드 밸런서를 연결하면 인스턴스가 시작될 때, 자동으로 오토스케일링 그룹에 등록됩니다. 로드 밸런서가 트래픽을 수신하면 오토스케일링 그룹의 인스턴스 간에 요청을 분산합니다.

또한, 추가 설정의 모니터링 활성화를 통해 오토스케일링 그룹에서 추적할 수 있는 여러 지표를 받을 수 있습니다. 다음 버튼을 클릭합니다.

  1. 단계 4: 그룹 크기 및 조정 정책 구성에서 최대/최소 용량 한도를 지정합니다. 조정 정책을 사용하여 트래픽에 따라 오토스케일링 그룹의 크기를 동적으로 조정하도록 설정합니다. 아래와 같이 지표 유형은 평균 CPU 사용률을 선택하고, 대상 값은 30으로 설정하고 다음 버튼을 클릭합니다. 대상 값을 기준으로 EC2 인스턴스를 확장 및 축소합니다.

  1. [옵션] 단계 5: 알림 추가에서 6-1 모니터링에서 생성한 SNS 주제를 설정하여 오토스케일링 이벤트가 발생할 때마다 알림을 받을 수 있습니다. 필요에 따라 설정을 하시거나 바로 다음 단계로 넘어갑니다.

  1. 단계 6: 태그 추가에서 아래와 같이 키(Name), 값(asg-web)을 입력합니다.

  1. 단계 7: 검토에서 앞서 설정한 정보를 확인한 후, Auto Scaling 그룹 생성 버튼을 클릭합니다.

부하 발생 테스트 후, 오토 스케일링 동작 여부 확인

  1. 왼쪽 사이드 바에서 로드밸런서를 선택한 후, 로드밸런서 생성하기 단계에서 만들었던 로드밸런서의 DNS 이름을 복사한 후, 웹 브라우저에 붙여넣습니다.

  1. 아래의 화면에서 LOAD TEST 버튼을 클릭하여 부하를 발생시킵니다.

  1. 왼쪽 사이드 바에서 Auto Scaling 그룹을 선택한 후, 앞서 생성한 오토스케일링 그룹을 클릭합니다.

  1. 활동 탭에서 작업 기록을 보면 트래픽에 따라 인스턴스를 확장시키는 작업을 수행하고 있음을 파악할 수 있습니다.

  1. 모니터링 탭에서도 관련 지표를 확인할 수 있습니다.

  1. 왼쪽 사이드 바에서 인스턴스 메뉴를 선택하면 실제 늘어난 인스턴스의 정보를 확인할 수 있습니다.

  1. 현재까지의 아키텍처 구성은 아래와 같습니다.

정적 웹 사이트 호스팅

Amazon S3 개념

Amazon S3(Simple Storage Service) 는 업계 최고의 확장성, 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스입니다. 즉, 규모와 업종에 상관없이 고객이 이 서비스를 이용하여 데이터 레이크, 웹사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석과 같은 다양한 사용 사례에서 원하는 만큼의 데이터를 저장하고 보호할 수 있습니다. Amazon S3는 사용하기 쉬운 관리 기능을 제공하므로 특정 비즈니스, 조직 및 규정 준수 요구 사항에 따라 데이터를 조직화하고 세부적인 액세스 제어를 구성할 수 있습니다. Amazon S3는 99.999999999%의 내구성을 제공하도록 설계되었으며, 전 세계 기업의 수백만 애플리케이션을 위해 데이터를 저장합니다.

본 실습에서는 Amazon S3에 데이터를 저장하고 정적 웹 사이트를 호스팅하는 방법에 대해 학습합니다.

S3에 데이터 저장

  1. S3 콘솔 에 로그인한 후, 버켓 메뉴에서 버켓 만들기 버튼을 클릭합니다.

  1. 버킷 이름 필드에 고유한 버킷 이름을 입력하세요. 본 실습에서는 web-hosting-실습사용자이름으로 입력하여 진행합니다. 입력한 버킷 이름은 Amazon S3 내에 중복될 수 없고 유일해야 합니다. 조직 이름 또는 사용자 이름 등을 반영하여 유일한 버킷을 생성하세요. 리전이 아시아 태평양(서울) ap-northeast-2이 맞는지 확인합니다. 다른 속성은 기본 값으로 사용하고 버킷 만들기 버튼을 클릭합니다.

  1. 이미지 파일 을 다운로드(오픈 후 우클릭)하여 aws.png 로 저장 합니다.

  2. 메모장 혹은 IDE 툴에서 아래의 소스 코드를 이용하여 index.html 이름으로 저장합니다.

<html>
    <head>
        <meta charset="utf-8">
        <title> S3 Web Hosting Page </title>
    </head>
    <body>
        <center>
        <br>
        <h2> Click image to be redirected to the EC2 instance that you created </h2>
        <img src="/static/60-additional/S3에" 업로드될 이미지 접근 URL" onclick="window.location='DNS 이름'"/>
        </center>
    </body>
</html>
  1. 버킷 메뉴에서 방금 생성한 버킷을 선택합니다.

  1. 버킷에 데이터를 담기 위해 업로드 버튼을 클릭합니다.

  1. 파일 추가 버튼을 클릭하여 다운로드 받은 이미지 파일을 선택한 후, 업로드 버튼을 클릭합니다.

오브젝트 속성에서 객체 URL을 복사합니다.

  1. 앞서 작성한 index.html 파일의 값을 아래와 같이 수정합니다. 이미지 링크 부분에는 방금 복사한 객체 URL 값을 넣고 클릭시 리다이렉트되는 위치는 로드밸런서 생성하기 단계에서 만든 로드밸런서의 DNS 이름 값을 넣은 후 저장합니다.

  1. aws.png 파일을 업로드한 방식과 마찬가지로 실습에서 생성한 S3 버킷에 방금 작성한 index.html 파일을 업로드합니다.

아래의 화면과 같이 S3 버킷에 두 개의 객체가 업로드된 것을 확인할 수 있습니다.

  1. S3 버킷은 기본적으로 퍼블릭 액세스가 차단되어 있습니다. 권한 탭을 클릭하여 퍼블릭 액세스 차단 설정을 해제하는 작업을 수행합니다.

체크 박스를 해제한 후, 변경 사항을 저장합니다

  1. 그 다음, 앞서 업로드한 객체를 퍼블릭으로 설정하는 작업을 수행합니다. 해당 작업을 통해, 각 객체를 퍼블릭하게 접근할 수 있습니다.

S3 버킷에 정적 웹 사이트 호스팅 기능 사용

  1. S3 버킷 속성 탭을 클릭하고 스크롤을 내립니다.

정적 웹 사이트 호스팅 편집 버튼을 클릭합니다.

  1. 활성화 라디오 버튼을 클릭함으로써 해당 버킷을 사용하여 웹 사이트를 호스팅하는 기능이 추가됩니다. 인덱스 문서 및 오류 문서에 index.html을 입력한 후, 변경 사항을 저장합니다.

  1. 다시 속성 탭에서 버킷 웹 사이트 엔드포인트 값을 복사한 후, 웹 브라우저에 붙여넣습니다. 해당 엔드포인트를 통해, S3 정적 웹 사이트에 접속할 수 있습니다.

웹 브라우저에서 아래와 같은 화면을 확인할 수 있습니다.

AWS 이미지를 클릭하면 앞서 생성한 웹 서버의 화면으로 리다이렉트되는 것을 확인할 수 있습니다.

profile
즐겁게 살자

0개의 댓글