ALB에 ASG 추가

날아올라돼지야·2024년 10월 18일
0

클라우드 마스터

목록 보기
6/17

Hello World 웹서버에 Auto Scaling Group(ASG)을 추가하여 로드밸런싱과 자동 확장 기능을 연동하는 실습 시나리오

이번 실습에서는 기존에 설정한 Application Load Balancer(ALB)Auto Scaling Group(ASG)을 추가하여, 웹 서버의 트래픽 부하에 따라 자동으로 EC2 인스턴스를 확장하거나 축소하는 구성을 실습해보겠습니다.

실습 목표

  1. Auto Scaling Group(ASG)을 설정하여 EC2 인스턴스를 자동으로 확장/축소합니다.
  2. ALB와 ASG를 연동하여 로드밸런싱된 상태에서 트래픽 부하에 따라 서버가 자동으로 늘어나고 줄어드는 것을 확인합니다.

시나리오 단계

1. 기존 ALB와 EC2 환경 확인

  • 현재 ALB가 설정된 상태에서 WebServer1WebServer2가 각각 "Hello World" 메시지를 반환하는 상태라고 가정합니다.
  • 로드밸런서와 연결된 EC2 인스턴스가 잘 동작하고 있는지 확인합니다.

2. Auto Scaling Group(ASG) 설정하기

  1. Launch Template (시작 템플릿) 생성

    먼저 Auto Scaling에 사용할 EC2 인스턴스 시작 템플릿을 만듭니다.

    1. EC2 대시보드에서 왼쪽 메뉴의 Launch Templates로 이동합니다.

    2. Create Launch Template을 클릭합니다.

    3. Launch Template Name: WebServerTemplate

    4. AMI: 기존의 Amazon Linux 2 AMI를 선택합니다.

    5. Instance Type: t2.micro를 선택합니다.

    6. Key Pair: 이미 설정한 키 페어를 선택하거나 새 키 페어를 지정합니다.

    7. Security Group: HTTP(80)SSH(22)가 허용된 보안 그룹을 선택합니다.

    8. User Data: 아래 스크립트를 User Data 섹션에 넣어 EC2 인스턴스가 자동으로 Apache 서버를 설치하고, "Hello World" 페이지를 생성하도록 설정합니다.

      #!/bin/bash
      sudo yum update -y
      sudo yum install -y httpd
      sudo systemctl start httpd
      sudo systemctl enable httpd
      echo "Hello World from Auto Scaling Group" > /var/www/html/index.html
    9. Create Launch Template을 클릭하여 템플릿을 만듭니다.


  1. Auto Scaling Group (ASG) 생성

    이제 Auto Scaling Group을 생성하여 EC2 인스턴스가 자동으로 확장 및 축소되도록 설정합니다.

    1. EC2 대시보드에서 왼쪽 메뉴의 Auto Scaling Groups로 이동합니다.
    2. Create Auto Scaling Group을 클릭합니다.
    3. Auto Scaling Group Name: WebServerASG
    4. Launch Template: 방금 만든 WebServerTemplate을 선택합니다.
    5. VPC: 현재 EC2 인스턴스들이 속한 VPC를 선택합니다.
    6. 서브넷: 퍼블릭 서브넷을 선택하여 Auto Scaling Group에서 인스턴스를 배포할 수 있도록 합니다.

  1. 로드밸런서(ALB)와 Auto Scaling Group 연동

    1. Attach to an existing load balancer를 선택하여 ALB와 연동합니다.
    2. Application Load Balancer에서 앞서 생성한 MyALB를 선택합니다.
    3. Target Group: MyTargetGroup을 선택합니다.
    4. 다음을 클릭하여 계속 진행합니다.

  1. ASG 용량 설정

    1. Desired Capacity (기본 용량): 2 (기본적으로 두 개의 EC2 인스턴스를 유지)
    2. Minimum Capacity (최소 용량): 1
    3. Maximum Capacity (최대 용량): 4 (트래픽 부하에 따라 최대 4개의 EC2 인스턴스를 유지)

  1. Auto Scaling 정책 설정

    확장 및 축소 정책을 설정하여, 트래픽 부하에 따라 EC2 인스턴스를 자동으로 확장하거나 축소합니다.

    1. Scaling Policy: Target Tracking Scaling Policy를 선택합니다.
    2. Metric Type: Average CPU utilization을 선택합니다.
    3. Target Value: 50%로 설정 (CPU 사용량이 50%를 초과하면 인스턴스를 확장).
    4. Finish를 클릭하여 Auto Scaling Group을 생성합니다.

3. Auto Scaling 기능 테스트

  1. ALB DNS 이름 확인:

    • ALB의 DNS 이름을 확인하고 브라우저에서 접속합니다. 새로고침을 하면서 로드밸런서가 EC2 인스턴스에 트래픽을 분산하는 것을 확인합니다.
    • URL 예시: http://MyALB-1234567890.us-east-1.elb.amazonaws.com
  2. Auto Scaling 테스트:

    • EC2 인스턴스의 CPU 부하를 인위적으로 증가시키기 위해 stress 명령어를 사용하여 부하를 발생시킵니다.
      sudo yum install stress -y
      stress --cpu 2 --timeout 300
    • CloudWatch를 사용해 CPU 사용량을 모니터링하고, ASG가 자동으로 인스턴스를 추가하는지 확인합니다.
  3. 확장 확인:

    • CPU 부하가 증가하면, Auto Scaling Group이 새로운 EC2 인스턴스를 자동으로 생성하고, ALB를 통해 로드밸런싱을 합니다.
    • EC2 대시보드에서 새로 생성된 인스턴스를 확인할 수 있습니다.
    • 트래픽이 줄어들면 EC2 인스턴스 수가 자동으로 줄어드는지도 확인해 보세요.

정리

이 실습에서는 다음을 배웠습니다:
1. Auto Scaling Group(ASG)을 사용해 자동으로 EC2 인스턴스를 확장하고 축소하는 기능을 설정.
2. Application Load Balancer(ALB)ASG를 연동하여, 트래픽 부하에 따라 자동으로 EC2 인스턴스를 조정하고 트래픽을 균등하게 분배.
3. 실시간으로 CPU 부하를 모니터링하고 확장 정책이 적용되는지 확인.

이 구성은 트래픽 변동에 따라 유연하게 서버 자원을 관리하고 자동 확장 기능을 통해 비용을 최적화할 수 있는 중요한 DevOps 기술을 실습할 수 있는 기회입니다.

profile
무슨 생각하며 사니

0개의 댓글