04 Elastic Beanstalk

data_hamster·2023년 5월 15일
0

학습주제
Elastic Beanstalk

학습내용


Elastic Beanstalk은 앱 어플리케이션을 빠르고 신속하게 배포할 수 있게함.

복잡성을 굉장히 줄일 수 있음.
프로비저닝, 로드밸런싱, 조정, 상태 모니터링을 자동으로 모두 해줌.

프로비저닝은 컴퓨팅 리소스를 할당하고 구성하여 사용 가능한 상태로 만드는 과정을 의미합니다. AWS Elastic Beanstalk에서 프로비저닝은 애플리케이션을 실행하기 위해 필요한 인프라스트럭처 리소스를 프로비저닝하는 과정을 말합니다.
일반적으로 Elastic Beanstalk은 프로비저닝 단계에서 다음과 같은 작업을 수행합니다:
가상 머신 또는 컨테이너 인스턴스를 프로비저닝합니다. 이는 애플리케이션을 실행할 수 있는 호스팅 환경을 제공합니다.
네트워크 리소스를 프로비저닝하여 애플리케이션에 필요한 네트워크 연결을 설정합니다. 예를 들어, Elastic Load Balancer를 생성하고, 로드 밸런싱 규칙을 구성합니다.
데이터베이스나 스토리지 리소스를 프로비저닝하여 애플리케이션이 필요로하는 데이터 저장 및 관리를 지원합니다. 예를 들어, Amazon RDS를 사용하여 관계형 데이터베이스를 프로비저닝할 수 있습니다.
보안 그룹, 액세스 제어 및 기타 보안 설정을 프로비저닝하여 애플리케이션의 보안을 유지합니다.
기타 필요한 리소스를 프로비저닝하여 애플리케이션의 실행에 필요한 환경을 구성합니다.
프로비저닝은 애플리케이션 배포 및 확장을 자동화하고 관리하기 위해 Elastic Beanstalk에서 중요한 역할을 합니다. 이 과정을 통해 개발자는 인프라 관리에 신경 쓰지 않고도 애플리케이션을 쉽고 빠르게 실행할 수 있습니다.

다양한 언어를 지원함.
EC2로 구성해서 서비스 해도 되고, 빈스톡을 이용


한번 만들어 보기로 한다.


강의와는 조금 다른 구성이다.

자바 대신 파이썬으로 구성해봤다.
추가 옵션이 없고 다음으로 넘어갈 수 있다.

우선 서비스 역할에 기존 서비스 역할이 없어.
새 서비스를 생성하였다.
키 페어는 기존 mykey 사용

EC2 인스턴스 프로파일
EC2 인스턴스가 필요한 작업을 수행하도록 허용하는 관리형 정책이 있는 IAM 인스턴스 프로파일을 선택합니다.
여기도 비워져 있다. 일단 비워두고 다음

네트워킹, 데이터베이스 및 태그 설정 - 선택 사항
으로 넘어왔다.
VPC를 하나 선택하려고 한다.
VPC 가상 네트워크 망. 하나의 망으로 묶을 수 있음.
여러가지 서비스가 있고, 서비스 네트워크에 대해 역할 제어가 있으면 그 안에 서비스를 넣음.
Private 망에 넣으면 외부 접근을 차단할 수 있음.
Public은 그 반대.
자세한 내용은 VPC 강의 때 다룰 예정.
기타 선택사항 옵션은 나중에 설정할 수 있음.

일단 생성해봄.
ec2가 한개 더 생성된다.
웹 어플리케이션 환경이 생성됨.
빈스톡을 이용하면 CI/CD를 구성하기 편함.

백엔드 API 서버를 만든다고하면 빈스톡을 이용해 간편하게 만들 수 있음

생성 에러

빈스톡 생성을 했으나 환경설정이 되지 않음. ec2 인스턴스 대시보드에서도 뜨지 않음.
IAM 권한설정이 되지 않은 것 같다고 하여. IAM에서 aws-elasticbeanstalk-ec2-role라는 이름으로 웹 서버작업 권한을 생성함.


서비스 역할이 새로 추가되었다.

아직
ec2 인스턴스 프로파일은 비어있다.

인스턴스 프로파일은 EC2 인스턴스에 부여되는 IAM 역할을 나타내는 역할입니다. 역할에는 EC2 인스턴스가 수행할 작업에 필요한 권한이 포함되어야 합니다.

역할 aws-elasticbeanstalk-ec2-role에 권한 추가로
AmazonEC2FullAccess
하였다.

오 떴다!!
역할에서도 해당(우리는 현재 ec2)에 관한 기능을 허가해야지 할 수 있었다.
다시 생성 시도함. 한 10분정도 걸리는 것 같다.
IAM이 뭔지 잘 몰라 생긴 사례인것 같다.


정상적으로 들어온 모습이다.

콘솔에서 접속해본다.

뭐지 안된다.

처음 만든 인스턴스 서버에서 나가지 않아 발생한 문제. exit 로 나간 후 재접속 하니 된다.


기본적으로 이 디렉토리에 올라가게 된다.
/var/app/current


log에 들어가니 뭐가 많음.
이 위치에 로그가 생김.
web.stdout.log 여기에 웹 어플리케이션에 대한 로그

엘라스틱 빈스톡 자체에 대한 로그
eb-engine.log

내부적으로 엘라스닉 빈스톡은
엔진 X 웹서버가 있고 안쪽에 왓스가 있는 구성.

엘라스틱 빈스톡(Elastic Beanstalk)은 내부적으로 엔진, 웹 서버, 그리고 왓스(WAS, Web Application Server)로 구성됩니다.
엔진(Engine):
엔진은 애플리케이션의 실행 환경을 제공하는 소프트웨어입니다.
엘라스틱 빈스톡은 다양한 엔진을 지원하며, 엔진은 주로 프로그래밍 언어나 프레임워크에 종속됩니다.
예를 들어, 엘라스틱 빈스톡은 Java, Python, Node.js, PHP, .NET 등의 엔진을 제공합니다.
웹 서버(Web Server):
웹 서버는 클라이언트로부터의 요청을 받아 정적 파일을 제공하거나 동적 컨텐츠를 생성하여 응답하는 서버입니다.
엘라스틱 빈스톡은 내부적으로 웹 서버를 실행하여 사용자의 요청에 응답합니다.
웹 서버는 엔진과 함께 애플리케이션을 실행하고 관리하는 역할을 수행합니다.
왓스(WAS, Web Application Server):
왓스는 웹 애플리케이션의 실행을 담당하는 서버입니다.
왓스는 동적인 웹 페이지를 생성하고 데이터베이스와의 상호작용을 처리하는 등의 역할을 수행합니다.
엘라스틱 빈스톡은 내부적으로 웹 애플리케이션 서버인 왓스를 실행하여 웹 애플리케이션을 처리합니다.
따라서 엘라스틱 빈스톡은 엔진, 웹 서버, 그리고 왓스로 구성되어 있으며, 이들이 함께 동작하여 애플리케이션의 실행과 관리를 담당합니다. 엘라스틱 빈스톡은 애플리케이션 배포 및 확장, 로드 밸런싱, 모니터링 등을 쉽게 관리할 수 있는 플랫폼입니다.

웹서버 - 왓스
스프링포트를 8080 포트로 띄움.
ec2 는 8080 바로 실행이 됨.
앞단에 엔진 X 80포트로 대기하고 있고 안쪽 어플리케이션에 포트로 연동이 되어있음 엔진 X 80포트는 내부에서 기본적으로 5000포트로 연동이 되어있음.
어플을 올리게 되면 5000번 포트로 통신을 한다라고 이해하면 좋음

빈스톡에 들어가 파일을 업로드하면 어플리케이션이 실행됨.


현재 내가 만든건 Warning이 뜨고 있다.
환경에 구성으로 들어가 하단 환경속성을 보면

뭔가 내꺼는 설정이 덜 된 느낌이다.

로드 밸런싱을 수행 하면 - 기본적으로 1대지만 4대까지 인스턴스를 증가시켜준다.
서버를 운영하다보면 서버 과부하를 고민해야하는데, 이를 해결해준다.

로그도 확인할 수 있다.

Route53에서 도메인 연결.
CI/CD한때도 인스턴스 자원만 클릭해주면 쉽게 할 수있음.
관리적인 측면에서 편하게 운영할 수 있음.

에러

빈스톡 생성시 이벤트를 보니 2개의 경고가 떴다.
Environment health has transitioned from Pending to Warning. Initialization completed 21 seconds ago and took 86 seconds. Unable to assume role "arn:aws:iam::542670215238:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.

Service role "arn:aws:iam::542670215238:role/aws-elasticbeanstalk-ec2-role" is missing permissions required to check for managed updates. Verify the role's policies.


하다보니 권한을 상당 주었는데 이게 맞나 싶다.

벡엔드 수업과정을 일부 발췌한 것 같다. 뭔가 모르는 내용들이 많은데 헷갈린다.
우선 IAM 설정부터 뭔가 잘 안되는 느낌인데, 좀 더 알아봐야겠다.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글