[aws] How to configure elastic beanstalks load balancer & auto scaling on codestar?
서비스 런칭에 앞서 AWS 서버 인프라 개선을 하려고 한다.
지금은 그냥 ELB에 EC2 하나를 물려서 개발을 진행하고 있다.
추후 사용자가 증가했을때를 대비하려 한다.
예전엔 ECS와 Docker를 사용해서 서비스를 운영한 경험이 있는데
이번엔 새로운 방법으로 해보려고한다.
AWS에는 Codestar라는 도구가 있다.
개발 빌드 배포를 한번에 관리해준다.
serverless로 하기엔 프로젝트 사이즈가 크고 수정 할게 많아
Express, Elastic beanstalks 템플릿을 사용한다.
사전작업(Pre-work)
Codestar를 시작하면 초기 템플릿을 선택하는 과정이 있는데
아래 템플릿을 선택해서 진행한다.
Select that template.
완료를 하면
아래 사진과 같이 대시보드를 통해 한번에 확인 할 수 있다. (엄청 편리)
Codestar Dashboard
우측 하단쯤 엔드포인트를 클릭하면
웹으로 접속된다.
기본 프로젝트(Basic project)
준비 과정은 끝났다.
I'm ready.
로드밸런서 세팅 & 오토 스케일링 테스트
(Load balancer configuring & auto-scaling testing)
기본 템플릿 프로젝트를 시작하면
로드밸런스와 오토스케일링 정책이 설정되어져 있지 않다.
template.yml 파일을 수정하면 되는데, 뭐를 수정해야할지 막막했다.
만족할만한 설명서도 찾지 못해서..(내문제인가)
삽질끝에 해결했다.
먼저
Elastic Beanstalk > My Project > Configuration > Capacity > 'Modify' button click!
그런 후 Environment type을 'Load balanced'로 변경한다.
And then, change the value of Environment type from 'Single instance' to 'Load balanced'.
(처음 생성하면 ’Single Instance’로 설정되어져 있을것이다.)
그리고 Auto scaling 정책을 지정해준다.
And set up the scaling triggers as shown below.
Confirm 버튼을 누르면 아래와 같은 화면이 표시된다.
당황하지 말고 template.yml 파일을 수정해주자.
Update th value of EB-environment in template.yml.
커밋 후 code commit에 업로드 하면
아래와같이 Elastic Beanstalk 대시보드 화면이 나타단다.
Lets commit and push to aws code commit repository.
Codestar는 프로젝트 파일이 수정되면 template.yml 파일을 기반으로 Cloud Formation에서 변경사항을 세팅을 한 뒤,
빌드와 배포를 자동으로해준다.
위의 작업도 마찬가지 과정으로 진행이된다.
진행이 끝났다면, 로드 밸런서가 생성되어 있는걸 확인 할 수 있다.
(기존 EC2 인스턴스는 지워지고 새로운 인스턴스가 생성되어 연결된다.)
Created a new elastic load balancer.
오토 스케일링 대시보드
Auto scaling dashboard.
자 그럼 이제 Auto scaling이 잘 동작하는지 stress test를 해보자!
So, now, I'm going to test to auto scaling with stress module.
EC2 인스턴스에 접속해서 strees를 설치하고
$ yum install -y stress
아래와같이 명령어를 입력해준다.
$ stress --cpu 1 --timeout 300
$top 명령을 쳐서 상태를 확인하면
CPU 사용률이 100%인것을 확인 할 수 있다.
5분간 CPU 사용률이 60%가 넘어가면 인스턴스 하나가 더 생길 것이니,
기다려보자.
제대로 동작하는 것을 확인 할 수 있었다.
I checked a new ec2 instance after 5 minutes.
그럼 이제 반대로
stress를 정지시키고 5분간 기다려보자.
Stop the stress module and wait 5 minutes.
CPU 사용률이 0%로 내려갔다.
$ top
다시 인스턴스가 1개가 된 것을 확인 했다.
done.