ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS Auto Scaling
    생활코딩 AWS 2022. 4. 8. 04:50

    ===

    https://youtu.be/_1Yqk-fLkec

    클라우드 컴퓨팅을 사용하는 중요한 이유는 유연함입니다.

    언제든지 컴퓨터를 켜서 더 많은 데이터를 처리할 수 있고, 언제든지 컴퓨터를 꺼서 비용을 절약할 수 있습니다.

    이 작업을 사람이 직접하지 않고 기계가 자동으로 해줄 수 없을까? 하는 고민에서 나온 서비스가 오토 스케일링입니다. 이 수업에서는 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
Designed by Tistory.