[NCP] AutoScaling 구현

Brickmate·2024년 4월 29일

[NCP]demo

목록 보기
1/2
post-thumbnail

안녕하세요. 브릭메이트 Dong입니다. 오늘은 간단하게 Autoscaling에 대해 설명드리고 네이버 클라우드 플랫폼(NCP)에서 테스트해보는 시간을 갖도록 하겠습니다.

🚩 먼저 Autoscaling이란 무엇일까요?

  • Autoscaling은 애플리케이션 또는 서비스의 트래픽 변화에 따라 자동으로 리소스를 조정하는 기술입니다. 예를 들어, 웹 애플리케이션의 사용자 수가 증가하면 서버 수를 자동으로 늘리고, 사용자 수가 감소하면 서버 수를 줄이는 것이 Autoscaling의 핵심 아이디어입니다. 이를 통해 서비스의 가용성과 성능을 최적화하고, 인프라 리소스를 효율적으로 활용할 수 있습니다. 특히 클라우드 컴퓨팅 환경에서 유용하며, 사용자의 수요에 신속하게 대응하여 비용을 절감할 수 있는 장점이 있습니다.

💆 Autoscaling에는 두가지 확장 방식이있습니다. 바로 수직적 확장(Scale-up), 수평적 확장(Scale-out)입니다.

  1. Scale out (수평 확장):
  • Scale out은 시스템의 성능을 향상시키기 위해 여러 개의 인스턴스 또는 서버를 추가하는 것을 의미합니다.
  • 예를 들어, 웹 애플리케이션의 부하가 증가하면 새로운 서버 인스턴스를 추가하여 트래픽을 분산시키는 것이 Scale out입니다.
  • Scale out은 주로 분산 시스템에서 사용되며, 확장성이 높은 애플리케이션을 구현하는 데 유용합니다.
  1. Scale up (수직 확장):
  • Scale up은 단일 서버 또는 인스턴스의 리소스(예: CPU, 메모리, 디스크 공간 등)를 증가시키는 것을 의미합니다.
  • 예를 들어, 기존 서버의 메모리를 늘리거나 CPU를 업그레이드하여 더 많은 작업을 처리할 수 있는 더 강력한 서버로 스케일 업할 수 있습니다.
  • Scale up은 주로 단일 서버 환경에서 사용되며, 한정된 리소스를 가진 애플리케이션의 성능을 향상시키는 데 유용합니다.

요약하면, Scale out은 서버 인스턴스를 추가하여 확장성을 향상시키는 반면, Scale up은 기존 서버의 성능을 강화하여 성능을 향상시키는 것입니다.

간단하게 이론을 봤으니 네이버클라우드 플랫폼에서 실제로 구축해보고 테스트해보면서 다시 한번 이해 해보는 시간을 갖도록 하겠습니다. 🤓

🚣 아키텍처 구축 순서

  • Server 생성
  • Application Load Balancer 생성(Target Group 포함)
  • Auto Scaling Launch Configuration 설정
  • Auto Scaling Group 설정
  • Cloud Insight Monitoring Event Rule 설정

1. 테스트를 진행할 Server를 하나 생성해줍시다.

VPC와 Subnet을 생성했다는 가정하에 진행하도록 하겠습니다!

2. Application Load Balancer, Taget Group 생성

타겟 그룹에는 HTTP프로토콜 80포트를 타겟으로 해주면 됩니다!

3. Server image 생성

Auto Scaling Launch Configuration에서 사용할 Server Image를 생성해줍니다!

4. Launch Configuration 생성

  • 미리생성해둔 서버이미지를 선택합니다.

    Launch Configuration은 Autoscaling작동시 서버타입을 지정해주는 역할을 합니다!

  • init Script를 통해 미리 Apache를 설치하여 로드밸런서 라운드로빈 테스트를 진행할 것입니다.

  • init script 생성

  • init script 코드

#! /bin/bash
yum install -y httpd 
systemctl start httpd 
cd /var/www/html
echo hostname : $HOSTNAME > index.html
systemctl restart httpd
  • Launch Configuration 생성완료

5. Auto Scaling Group 생성

  • 좀 전에 만든 Launch Configuration 선택해줍니다.

  • 꼭 헬스 체크 유형을 로드밸런서를 선택해줍니다.

    최소 용량: 항상 유지해야 하는 최소 서버 수. 보통은 기본 용량을 충족하기 위해 설정돼요!
    최대 용량: 시스템에서 허용되는 최대 서버 수. 확장 가능한 한도를 나타내요!
    기대 용량: 유지하고 싶은 평균 서버 수. 트래픽 예측과 리소스 요구에 따라 조정돼요!

  • 정책설정

    Autoscaling이 작동하면 한번에 몇개의 서버를 늘릴지 줄일지 정하는 설정입니다.

  • Auto Scaling Group 생성완료

    모니터링 기능도 있지만 이번 실슴에선 생략하도록 하겠습니다!

6. Cloud Insight Monitoring Event Rule 설정

  • Server(VPC)로 Rule을 생성합니다.
  • 만들어두었던 인스턴스를 대상으로 그룹을 만들어줍니다.
  • CPU를 대상으로 한 템플릿을 만들어줍니다.
  • Autoscaling 정책을 설정해줍니다.
  • 방금까지 만든 Rule은 서버 CPU가 50%이상 부하시 Autoscaling으로 인해 서버가 생기는 룰만 만든것입니다.
  • 위와 같은방법으로 CPU부하가 안정되었을시 서버가 줄어드는 정책 또한 만들어 주시면 됩니다.

7. Server Stress 부하 테스트

  • SSH를 사용하여 서버에 접속해줍시다.
  • 먼저 부하테스트를 진행하기전 Apache설치를 해줍시다.
  • Autoscaling 서버는 init script를 설정해놨기 떄문에 자동으로 설치가 될것입니다.
  • init script 코드를 직접 입력하여 설정해주시면 됩니다.
  • 공인ip로 접속하여 설정이 잘되었는지 확인을 해봅시다.

  • 설정이 완료되었으니 Stress로 CPU과부하를 주어 Autoscaling을 테스트 해봅시다.
  • yum -y install epel-release
  • yum -y install stress
  • 위 명령어로 Stress툴을 깔아줍시다.

  • stress --cpu -2 --timeout 400s(stress툴을 통해 CPU에 부하를 주는 명령어 입니다.

8. Autoscaling 서버 확인

  • Stress로 인해 서버 CPU에 부하가 걸린 모습을 확인할 수 있습니다.
  • Autoscaling이 작동하여 서버가 새로 하나 생성되는것을 볼 수 있습니다.
  • 이제 서버가 생성되었으니 로드밸런서로 확인해보겠습니다.

    Target상태를 보니 정상적으로 로드밸런서에 연결되었습니다!

  • 라운드 로빈이 정상적으로 작동하는것을 확인할 수 있습니다.

지금까지 Autoscaling테스트를 진행해 보았습니다. 감사합니다!💆

profile
Anything Possible!

0개의 댓글