본문 바로가기

카테고리 없음

AWS - Beanstalk, EC2, 로드 밸런서, 대상 그룹

AWS에서 Beanstalk을 이용한 배포 자동화를 위한 환경구성 및 설정 방법을 정리한 내용입니다.

 

우선 Beanstalk 환경 설정시 EC2, 로드 밸런서, 대상 그룹등이 자동으로 생성되지만

자동으로 생성되는 경우 이름을 변경 할 수 없고 추후 관리에 대한 이슈가 발생하여 직접 생성하여 연결하는 방법을 설명합니다.

 

또한, 대상을 생성할때 우선순위가 있으니 순서대로 생성해야 하며, 보안 그룹은 미리 생성된 보안 그룹을 사용합니다.

보안 그룹 생성은 아래 링크를 확인해 보세요.

 

링크 - 보안그룹 설정

 

1.  대상 그룹 (Target groups)

우선 대상 그룹은 하나 이상의 등록된 대상에 요청을 라우팅하는 데 사용됩니다.

요약하면, 로드 밸런서 -> 대상그룹 -> EC2 와 같은 흐름으로 구성된다.

 

Load balanver -> Listener -> Target -> EC2

 

 

설정 방법은 아래와 같다.

 

대상 그룹을 지정해 주고, 서비스에서 외부로 부터 입력되는 포트를 넣는다.

보통 80 / 443 포트를 지정해준다.

 

 

 

Health check 를 위한 api 주소를 입력하면된다.

 

 

 

추가로 서버에서 사용하는(EC2 에서 작동되는 서버) 포트정보를 넣고, 인스턴스를 연결해주면 된다.

인스턴스 설정은 Beanstalk 설정에서 Load balance 설정을 통해 자동으로 연결된다.

(Beanstalk 설정에서 EC2 인스턴스를 관리하기 때문에 추후 자동 연결됨)

 

 

 

2. 로드 밸런서

로드 밸런서는 Application, Network, Gateway 3가지 방법으로 설정 가능한데

이번에는 Application Load Balancer 방식으로 설정한다.

 

로드 밸런서 이름을 설정하고

 

사용중인 VPC 선택 후 사용가능한 존을 지정한다.(가능하다면 모두 선택)

 

보안 그룹은 vpc 기본그룹과 Elastic Beanstalk 보안 그룹을 지정한다.

 

이곳에서 대상 그룹을 찾아 연결하고 https 등의 포트 설정도 넣어준다.

 

 

3. Beanstalk 설정

로드 밸런서 설정이 끝나면 Beanstalk 설정으로 넘어가자.

 

Beanstalk은 크게 환경, 어플리케이션 두개의 설정으로 나뉘어 진다.

어플리케이션은 그룹의 개념이고, 환경은 실제 EC2 가 연결되는 환경이라고 보면 된다.

 

 

 

Beanstalk 설정 첫 화면이다. 기본적으로 웹 서버 환경을 사용하고, SQS 같은 기능을 이용하고자 하는 경우 작업자 환경을 선택한다.

 

어플리케이션 이름과 환경이름을 넣어주고 도메인 이름은 빈값으로 두자. 자동으로 환경이름으로 셋팅 된다.

 

플랫폼은 아래와 같이 Java 또는 Node.js 등을 지정한고 버전 정보등도 넣는다.

 

추가로 샘플 어플리케이션은 동작하는 번들 파일등을 넣어준다. 지금 넣지 않고 추후 Codepipeline 등을 통해 넣자.

 

마지막으로 환경 생성 이전에 추가 구성을 통해 이전에 생성한 로드 밸런서를 연결해보자.

 

추가 구성 설정은 매우 복잡하다. 순서도 엉망이고, 설정 순서를 무시하면 설정되지 않는 부분도 상당히 많다.

설정의 모든 내용을 이해하면 당연한 부분이지만 초보자에게는 왜 이렇게 한 화면에서 정신없는 흐름으로 설정해야 하는지 모르겠다.

 

가능하다면 아래의 순서대로 설정을 하기 바란다.

 

참고로 보안그룹은 로드 밸런싱 설정 이전에 이루어 져야 한다.

 

3.1 용량

로드 밸런싱을 하는 경우 가장 우선적으로 설정해야 하는 부분이다.

 

이곳에서는 로드밸런서 설정과 EC2 인스턴스를 유형(스팩)을 지정한다. (t4g 가 성능이 좋다니 써보자) 

참고로 성능이 매우 낮은 유형을 선택하는 경우 서버 동작이 안될 수도 있다.

 

3.2 네트워크(VPC)

네트워크 설정은 위 3.2설정에서 로드밸런싱을 설정해야만 로드 밸런서 서브넷을 가져올 수 있다.

순서를 잘 보고 설정하자. 3.2가 설정되어 있다면 특별한 부분은 없다.

 

또한, 네트워크 설정이 이루어 져야 다음 로드 밸런서 설정이 가능하다.

 

3.3 로드 밸런서

로드 밸런서 설정은 이전에 설정해둔 값을 불러와야 한다. 설정 -> 로드 밸런서 유형 -> 공유됨을 클릭하면 이전에 설정된 값을 불러올 수 있다. 위 3.3 네트워크 설정이 이루어 지지 않으면 저장된 값을 찾을 수 없다.(기본 VPC로 설정된 경우 가능함)

추가로 Health check 정보와 서버에서 사용하는 포트 정보를 넣는다.

 

이후 나머지 설정을 진행하면 큰 문제 없이 설정 가능하다.

 

3.4 소프트웨어

이곳에서는 서버를 구동할 프록시 서버와 환경변수 등을 설정한다.

 

3.5 인스턴스

특별한 부분은 없으면 EC2에서 사용 할 보안그룹만 잘 설정하다.

 

4.6 롤링 업데이트와 배포

Beanstalk을 사용하여 배포하는 경우 자동으로 여러 EC2로 배포를 진행하는데

이때 사용하는 배포 방식을 지정한다. 서버의 대수가 많지 않은 경우 한번에 1대씩 배포를 해도 무방하다.

 

단, 한번에 모든 서버에 배포되는 경우 서버가 중단 될 수 있다.

 

 

 

기타 나머지 설정은 필요한 경우 해보자. 너무 길다. ㅠ