AWS

Elastic Beanstalk 적용

hs-archive 2021. 7. 29. 18:38

https://unsplash.com/photos/Xh6BpT-1tXo

아마존의 Elastic Beanstalk에 대해서 알아보자.

 

 

 

 

 


얻어갈 지식

  • Elastic Beanstalk

 

 

 

 

 

"Elastic Beanstalk"

 

Elastic Beanstalk란?

하나의 웹서버를 배포하기 위해서는 많은 과정이 필요하다.

 

ec2를 만들고, 로드밸런싱을 적용시키고, rds를 만들고 알림도 만들고......

 

Elastic Beanstalk는 이러한 절차를 모두 자동으로 만들어주며 수정도 손쉽게 할 수 있는 환경을 제공한다.

 

한마디로 Elastic Beanstalk는 웹 애플리케이션/웹 서비스를 배포하고, 확장하고, 관리하는 데 있어 쉽고 빠르게 할 수 있도록 돕는 완전 관리형 서비스이다.

 

Elastic Beanstalk 살펴보기

Elastic Beanstalk는 하나의 "애플리케이션"안에 여러 개의 "환경"을 생성할 수 있다.

 

"환경" 이름에 맞게 "EC2"가 자동 생성되며

( ex - 환경 이름이 test-env 이면 EC2 이름도 test-env로 생성됨 )

 

자동 생성되는 것은 아래와 같다.

  • Amazon Elastic Compute Cloud( Amazon EC2 )
    • 선택한 플랫폼에서 웹 앱을 실행하도록 구성된 Amazon EC2 가상 머신이다.
  • Amazon EC2 보안 그룹
    • 포트 80에서 수신 트래픽을 허용하도록 구성된 Amazon EC2 보안 그룹이다. 이 리소스를 통해 로드 밸런서의 HTTP 트래픽이 웹 앱을 실행하는 EC2 인스턴스에 도달할 수 있다.
    • 기본적으로 다른 포트에서는 트래픽이 허용되지 않는다.
  • Amazon Simple Storage Service( Amazon S3 )
    • Elastic Beanstalk 사용 시 생성된 소스 코드, 로그 및 기타 아티팩트가 저장되는 s3이다
  • Amazon CloudWatch 경보
    • 환경의 인스턴스에 대한 로드를 모니터링하는 두 개의 CloudWatch 경보로, 로드가 너무 높거나 너무 낮은 경우 트리거 된다. 경보가 트리거 되면 이에 대한 응답으로 *Auto Scaling 그룹이 확장 또는 축소된다.
    • Auto Scaling?
      로드가 많아지면 자동으로 서버를 늘려주고 로드가 적어지면 자동으로 서버를 줄여주는 환경 
  • AWS CloudFormation 스택
    • Elastic Beanstalk는 AWS CloudFormation을 사용하여 환경의 리소스를 시작하고 구성 변경 사항을 전파한다.
  • 도메인 이름
    • subdomain.region.elasticbeaanstalk.com 형식으로 웹 앱으로 라우팅 되는 도메인 이름이다.

 

Elastic Beanstalk 구성 요소

애플리케이션, 환경을 생성한 뒤

 

생성된 환경에 들어가 보면 아래 그림과 같이 여러 탭이 있다.

 

그림 1 구성 요소

 

  • 환경으로 이동
    • 내가 만든 애플리케이션으로 이동할 수 있다.
  • 구성
    • 소프트웨어, 인스턴스, 용량, 로드 밸런서, 롤링 업데이트와 배포, 보안, 모니터링, 알림 등을 설정할 수 있다.
  • 로그
    • 마지막 100줄, 전체 로그 확인 가능
  • 상태 탭
    • 연결된 Amazon EC2 인스턴스에 대한 상태 정보 표시
  • 모니터링
    • 평균 지연 시간 및 CPU 사용률 등 환경에 대한 통계 표시
    • 이 페이지를 사용하여 모니터링 중인 측정치에 대한 경보를 만들 수 있음
  • 경보
    • 모니터링 탭에서 만든 경보 확인 가능
  • 관리형 업데이트
    • 관리형 업데이트 확인 가능
      • 관리형 업데이트란?
        AWS Elastic Beanstalk는 플랫폼 엡데이트를 정기적으로 릴리스하여 수정, 소프트웨어 업데이트 및 새 기능을 제공한다.
        관리형 플랫폼 업데이트를 통해 예약된 유지 관리 기간 동안 최신 플랫폼 버전으로 자동으로 업그레이드하도록 환경을 구성할 수 있다.
        애플리케이션은 업데이트 프로세스 중 용량 감소 없이 작동 상태로 유지된다.
  • 이벤트
    • 이 환경에서 사용하는 Elastic Beansstalk 서비스 및 리소스가 있는 다른 서비스의 정보 또는 오류 메시지 표시
  • 태그
    • 환경 태그 관리 ( key - value )

 

새 버전의 애플리케이션 배포

환경에서 다른 업데이트 작업이 진행 중이지 않은 한 언제든지 새 버전을 배포할 수 있다.

 

현재 애플리케이션 버전을 Sample Application이라고 할 때

 

애플리케이션 버전을 업데이트하려면

 

  1. 환경 플랫폼과 일치하는 샘플 애플리케이션을 zip으로 만들고
  2. Elastic Beanstalk 환경 선택
  3. 환경 개요 페이지에서 [ 업로드 및 배포 ] 선택
  4. 파일 업로드 후 배포 클릭

 

이렇게 새 버전을 업로드하고 나면 [ 애플리케이션 버전 ] 탭에서 현재 애플리케이션과 과거에 내가 올렸던 애플리케이션을 확인할 수 있다.

 

Elastic Beanstalk의 여러 환경

Elastic Beanstalk 환경은 두 가지 나뉜다.

 

  • 웹 서버 환경
  • 작업자 환경

 

아래 그림은 웹 서버 환경과 구성 요소가 함께 작동하는 방법을 보여준다.

 

그림 2 웹 서버 환경

 

외부에서 요청이 오면 로드밸런서가 적절히 내부의 web app server에 전달을 해준다.

 

 

 

아래 그림은 작업자 환경과 구성 요소가 함께 작동하는 방법을 보여준다.

 

그림 3 작업자 환경

 

작업자 환경의 경우 Amazon SQS 대기열이 아직 없으면 Elastic Beanstalk가 이를 만들어 프로비저닝한다.

 

작업자 환경을 시작하면 Elastic Beanstalk가 Auto Scaling 그룹의 각 EC2 인스턴스에 선택한 프로그래밍 언어에 필요한 지원 파일과 데몬을 설치한다.

 

데몬은 Amazon SQS 대기열로부터 메시지를 읽고, 처리를 위해 읽은 각 메시지의 데이터를 작업자 환경에서 실행 중인 웹 애플리케이션으로 보낸다.

 

작업자 환경에 인스턴스가 여러 개 있는 경우, 각 인스턴스에 고유의 데몬이 있으나 모두 동일한 Amazon SQS 대기열에서 메시지를 읽는다.

 

 

 

 

 

"Elastic Beanstalk 기초 설정하기"

 

Elastic Beanstalk HTTPS 적용하기

Elastic Beanstalk에 HTTPS를 적용하려면 아래 작업을 하면 된다.

 

  1. 환경으로 들어온 뒤 <그림 1>의 구성 탭 클릭  
    [로드 밸런서] 편집 클릭  
    리스너 탭에서 리스너 추가 클릭  
    포트에 443 적고 프로토콜 HTTPS 선택, SSL 인증서 선택, SSL 정책 선택한 뒤 추가  
    적용 클릭

  2. EC2 대시보드 들어간 뒤 로드밸런서 클릭 
    HTTP과 HTTPS 설정
    설명 탭의 DNS 복사

  3. 본인이 사용하는 DNS 관리 서비스에서 복사한 DNS와 자신이 원하는 도메인과 매핑

 

만들어진 EC2에 SSH 접속하기

Elastic Beanstalk가 자동으로 만든 EC2에 접속하기 위해선 아래와 같은 순서로 작업하면 된다.

 

  1. EC2 대시보드 클릭
    보안 그룹 클릭
    해당되는 보안 그룹 클릭
    인바운드 규칙에서 22번 포트를 열어준다.

  2. Elastic Beanstalk의 환경으로 돌아와서
    <그림 1>의 구성 클릭
    [ 보안 ] 편집 클릭 
    키 페어 설정 후 적용 클릭

  3. EC2의 주소로 SSH 연결
    https://victorydntmd.tistory.com/62 참조

 

로그 교체

애플리케이션 로그 파일이 너무 많은 디스크 공간을 차지하거나 심지어 디스크 공간이 고갈되는 것을 방지하려면 로그 순환과 함께 이전 로그 파일을 교체하여야 한다.

 

로그를 교체하면 이전 로그가 EC2 인스턴스에서 자동으로 삭제된다. 이전 로그를 갖고 싶으면 인스턴스에서 로그가 삭제되기 전에 교체된 로그를 S3에 저장하여야 한다.

 

로그 교체 및 S3 저장을 하려면

 

  1. Elastic Beanstalk 환경에 들어간다
  2. 구성 > [ 소프트웨어 ] 편집
  3. S3 로그 스토리지 섹션에서 로그 교체 ( Rotate log )를 선택하여 교체된 로그를 Amazon S3로 업로드하는 것을 활성화한다.

더하여 인스턴스 로그를 CloudWatch Logs와 연동해서 보려면

 

  1. 인스턴스 로그를 CloudWatch Log로 스트리밍 섹션에서
  2. 로그 스트리밍 활성을 클릭하면 된다.

마지막으로 적용을 누른다.

 

EC2에 접속한 뒤 /etc/logrotate.elasticbeanstalk.hourly 에서 logrotate에 대한 Elastic Beanstalk 구성 파일을 볼 수 있다.

 

사용 가능한 설정에 대한 자세한 내용 및 구성 예제를 보려면 man logrotate를 실행하면 된다.

 

 

 

 

 

"정리"

 

 

Elastic Beanstalk는 웹 애플리케이션/웹 서비스를 배포하고, 확장하고, 관리하는 데 있어 쉽고 빠르게 작업을 할 수 있도록 도와주는 서비스이다.

 

 

 

 

 


참고 문서

 

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/Welcome.html

 

AWS Elastic Beanstalk란 무엇입니까? - AWS Elastic Beanstalk

AWS Elastic Beanstalk란 무엇입니까? Amazon Web Services(AWS)는 100개 이상의 서비스로 구성되어 있으며 각 서비스는 기능 영역을 나타냅니다. 다양한 서비스는 AWS 인프라 관리 방법의 유연성을 제공하는

docs.aws.amazon.com

https://aws.amazon.com/ko/premiumsupport/knowledge-center/elastic-beanstalk-customized-log-files/

 

Elastic Beanstalk에서 로그 파일 사용자 지정

Elastic Beanstalk가 수집하고 스트리밍하는 기본 로그 파일이 애플리케이션 또는 사용 사례의 요구 사항을 충족하지 못하는 경우 다음 옵션을 고려하여 로그 파일의 모음 및 스트리밍을 사용자 지

aws.amazon.com

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/environments-cfg-logging.html

 

Elastic Beanstalk 환경 로그 보기 - AWS Elastic Beanstalk

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/using-features.logging.html#health-logs-logrotate

 

Elastic Beanstalk 환경에서 Amazon EC2 인스턴스의 로그 보기 - AWS Elastic Beanstalk

Elastic Beanstalk 환경에서 Amazon EC2 인스턴스의 로그 보기 Elastic Beanstalk 환경의 Amazon EC2 인스턴스는 애플리케이션이나 구성 파일과 관련된 문제를 해결하기 위해 볼 수 있는 로그를 생성합니다. 웹

docs.aws.amazon.com

https://www.youtube.com/watch?v=AfRnvsRxZ_0&t=2801s 

https://victorydntmd.tistory.com/62

 

[AWS] EC2 (2) - 윈도우에서 EC2 인스턴스 접속하기

2020.02.06 수정 인스턴스는 가상머신이기 때문에 터미널 툴을 사용하여 접속해야 합니다. 터미널 툴은 많지만 여기서는 PuTTY를 사용하려고 합니다. ( PuTTY 설치는 여기에서 설치를 해주시고, EC2 인

victorydntmd.tistory.com

 

'AWS' 카테고리의 다른 글

클라우드 컴퓨팅과 Amazon EC2  (0) 2021.07.27