-
AWS Auto Scaling생활코딩 AWS 2022. 4. 8. 04:50
===
클라우드 컴퓨팅을 사용하는 중요한 이유는 유연함입니다.
언제든지 컴퓨터를 켜서 더 많은 데이터를 처리할 수 있고, 언제든지 컴퓨터를 꺼서 비용을 절약할 수 있습니다.
이 작업을 사람이 직접하지 않고 기계가 자동으로 해줄 수 없을까? 하는 고민에서 나온 서비스가 오토 스케일링입니다. 이 수업에서는 Elastic Load Balancing에 연결된 컴퓨터가 CPU 점유율이 50% 이상인 상태가 3분 이상 지속 되었을 때 켜지고, CPU 점유율이 30% 이하인 상태가 15분 이상 지속 되었을 때 꺼지는 시나리오를 구현해봅니다.
===
ELB를 이용하면 많은 클라가 접속했을 때 여러대의 EC2인스턴스로 분산해서 작업을 처리할 수 있다
이때 접속자가 많아지면 트래픽을 처리하지 못하고
줄어들었다면 노는 컴퓨터가 생기며 비용이 낭비된다
컴퓨터에 가해지는 부하에 따라 자동으로 컴퓨터가 생성되고 사라질 수 있다면?
===
우분투 20버전의 인스턴스를 설치
apache php 환경을 설치하고
loadtest.php라는 파일을 실행을 시켜서 일부러 우리의 서버에 부하가 큰 작업을 실행시킬 것(php몰라도 돼요)
저 주소에 명령어와 코드가 준비돼있다
저 세줄 코드 모두 카피해서 실행
loadtest.php를 저내용을 복사해서 아파치의 문서디렉토리인 /var/www/html/에 저장
잘 작동하는지 확인하기 위해 htop명령어를 치면
얼마나 cpu점유율이 높아지는지(저기 cpu)
저 주소로 들어가면
서버의 아이디 주소 : 서버의 앱을 실행하는데 걸린 시간
cost 기본값이 14인데 여기서 더 높이면 더 오랫동안 실행, 더 많은 CPU 점유율
===
인스턴스를 이미지로 만든다
이름쓰고 생성
===
이미지를 만들었으니 시작탬플릿 생성(Auto Scaling을 위해 필요하다)
저거 체크
이미지 고르고
인스턴스 유형 고르고
그 외엔 특별히 선택할 게 없다
===
그 다음엔 타겟그룹(대상그룹) 생성
= 로드밸런서에 연결시킬 인스턴스 지정을 하는 것
Auto Scaling에 의해서 대상그룹의 인스턴스를 자동으로 생성/삭제 하게 될 것
인스턴스 선택
이름적고
자동으로 HTTP 80 으로 써져있다
다음다음하면 그룹이 생성됨
===
로드밸런서 만들기
ALB선택하고
이름
리스너는 HTTP만 지정(기본떠있음)
가용영역 전부 체크
다음다음
새 보안 그룹 생성, 80번 포트가 개방돼있는지 확인
다음
라우팅 구성에선 방금 우리가 만든 타겟그룹지정
다음
다음
생성
===
여기까지 Auto Scaling을 만들 준비가 끝났다
생성
이름과
시작탬플릿(=우리가 원하는 인스턴스를 선택 + 사용하고자하는 이미지를 지정하는 등등의 설정들이 돼 있다
선택하면 밑에 시작 탬플릿 정보가 뜸
Auto Scaling이 조건을 만족했을 때 시작탬플릿에 해당되는 인스턴스를 만들어서
아까 생성한 타겟 그룹에 꽂아준다
타겟그룹에 해당되는 인스턴스들은 로드밸런서에 붙어서 동작
다음
시작 탬플릿 준수
서브넷은 전부
다음
아까 생성했으니 기존
대상 그룹에서 아까 생성한 것 선택
밑에 상태 확인 부분에서 좀더 상세한 상태를 확인할 수 있도록 ELB선택
상태 확인 유예기간 : Auto Scaling에 의해 인스턴스가 생성이 되면 생성되자마자 인스턴스들이 해야할 일이 많은데 그 작업을 하다보면 그게 전체적인 컴퓨팅에 평균적인 사양에 영향을 줘서 걔로 인해 또 인스턴스가 만들어질 수가 있다. 그걸 유예하는 시간으로 300초를 주겠다는 것
CloudWatch는 체크해서 좀더 상세한 리포팅을 받자(돈이 더 들지 않기 때문)
===
그 다음에 설정할 것이 중요해서 그림을 가져옴
Auto Scaling group을 운영하게 되면 여러개의 인스턴스들을 만든다
그때 생성한 인스턴스들이 어떤 관계를 갖게되는가를 보자
Min : 몇 대 이하로는 인스턴스가 줄지 않게
Max : 몇 대 이상은 생성되지 않게
Desired capacity : Auto Scaling그룹이 생성되자마자 몇개가 필요한지 지정. 시간이 지나면 그만큼 인스턴스가 생성
Scale out as needed
조정 선택
에서 흔히 많이 사용하는건 평균 CPU 사용률 : Auto Scaling으로 인해 만들어진 인스턴스가 4개면 그 4개의 인스턴스 각자가 CPU 점유율이 있을텐데 평균을 냈을 때
50을 넘으면 자동으로 인스턴스를 생성
50보다 못하면 인스턴스들이 자동으로 삭제되도록
다음
다음
다음
Auto Scaling 그룹 생성
===
클릭
활동에서 현재 뭐하고 있는지 볼 수 있고
여긴 어떤 인스턴스들이 이 Auto Scaling(AC라고하자) 그룹에 의해서 만들어졌는지, 만들어지고 있는지를 볼 수 있다
그림은 인스턴스 하나가 AC에 의해서 만들어지고 있는중
생성한 인스턴스들, AC와 관련된 여러가지 상태들을
모니터링을 통해서 볼 수 있다
===
CloudWatch로 와보세요
slowAppASG-AlarmHigh어쩌고 두개가 추가 돼 있을 것
선택해서 대시보드로 가져와볼것
원하는 대시보드 선택하고 추가하면
저 왼쪽 대시보드를 클릭하면 이렇게 경보라고하는 항목들이 추가돼있다
클릭해보면
3분 동안 CPU점유율이 50% 이상 지속되면 빨간색 위쪽으로 선이 올라간다
->그럼 인스턴스가 생성, 실전에 투입
두번째건 35% 보다 낮은 상태가 15분 지속되면 인스턴스가 삭제돼서 비용을 절감하게 될 것이다
경보를 통해 현재 어떤 상태인지 볼 수가 있는 것
===
저는 CloudWatch에서 그래프를 만들어봤습니다
Desired Capacity :
내가 원하는 인스턴스 숫자,
현재 조건을 만족시키는 인스턴스의 숫자
둘 중 하나
33.3333인 이유는
최대 인스턴스를 3개로 했고
처음 Auto Scaling그룹을 만들면서 1개를 원한다 라고 했기 때문에 1/3이 된 것(뭔소리야)
Total Instance의 값은 현재 생성된 인스턴스의 숫자
처음엔 33.3333 과 0 이었는데
시간이 지나면 AWS 가 Desired Capacity의 숫자만큼 인스턴스를 생성해주니까 결국 둘이 같은 값이 된것
또 너무 값이 작아 안보이는 값이 있는데
CPUUtilization : CPU점유율인데 현재 0.1이라고 돼 있다
Auto Scaling그룹에 속해 있는 모든 인스턴스 그룹의 평균 CPU점유율이 0.1이라는 의미
===
대시보드에 추가해서
방금 그 3개의 위젯이 나타나는 상태
===
15:00~
이제 ELB에 트래픽을 많이 보낼것
JMeter를 이용해 트래픽을 생성할 것, 궁금하면 저 강의보기
JMeter에서 쓰레드로 몇명이 동시에 접속할 것인가 지정
몇번 접속할것인가는 계속 접속하게
http로 접속하겠다 설정, 경로 적고
접속잘됐는지 확인하려고 응답값 보기 추가, 접속속도 보여주는 화면 추가, 접속 양상 그래프 추가
===
트래픽을 보내면
CloudWatch에 수집하는 시간이 있어 바로 반영은 안되지만 저렇게 탁 튀어오르고, 경보발생한다
인스턴스가 추가되는데 저 왼쪽에 노란 꺾인게 인스턴스 추가된것
오른쪽 파란색이 접속 속도인데 적을 수록 좋다. 인스턴스 추가돼서 줄어드는중
초록색 = Throughput = 처리량, 높을 수록 좋다
인스턴스 3개 만들어짐
===
JMeter끄면
15분 동안은 인스턴스가 안줄어들지만
이렇게 뚝 떨어짐. 그러므로 비용절감 된다
'생활코딩 AWS' 카테고리의 다른 글
AWS2 RDS (2)접속, 보안그룹 (0) 2022.04.11 AWS2 RDS (1)생성, AZ, VPC (0) 2022.04.10 AWS Launch Template (0) 2022.04.08 AWS ELB - Elastic Load Balancer (0) 2022.04.06 AWS Lambda, CloudWatch log (0) 2022.02.14