ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • aws - Auto Scaling, Load Balancer - 오토 스케일링, 로드 밸런서
    Cloud/aws 2022. 6. 17. 16:11

    aws

    Auto Scailing

    AWS Auto Scaling은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지합니다. AWS Auto Scaling을 사용하면 몇 분 만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있습니다. 이 서비스는 간단하면서도 강력한 사용자 인터페이스를 제공하므로 이를 사용하여 Amazon EC2 인스턴스와 스팟 플릿, Amazon ECS 작업, Amazon DynamoDB 테이블 및 인덱스, Amazon Aurora 복제본 등 리소스에 대한 규모 조정 계획을 수립할 수 있습니다. AWS Auto Scaling을 사용하면 성능과 비용을 최적화하거나 둘 사이의 적절한 균형을 유지하기 위한 권장 사항을 활용해 간단하게 규모를 조정할 수 있습니다. 이미 Amazon EC2 Auto Scaling을 사용하여 Amazon EC2 인스턴스의 규모를 동적으로 조정하고 있는 경우, 이제 AWS Auto Scaling과 결합하여 다른 AWS 서비스의 추가 리소스를 조정할 수 있습니다. AWS Auto Scaling을 사용하면 항상 적시에 올바른 리소스가 애플리케이션에 할당됩니다.

     

    장점

    규모 조정을 신속하게 설정

    AWS Auto Scaling을 사용하면 직관적인 단일 인터페이스에서 여러 리소스에 대한 목표 사용률 수준을 설정할 수 있습니다. 다른 콘솔로 이동할 필요 없이 모든 확장 가능한 리소스의 평균 사용률을 신속하게 확인할 수 있습니다. 예를 들어, 애플리케이션에서 Amazon EC2와 Amazon DynamoDB를 사용하는 경우, AWS Auto Scaling을 사용해 애플리케이션의 모든 EC2 Auto Scaling 그룹과 데이터베이스 테이블에 대한 리소스 프로비저닝을 관리할 수 있습니다.

    똑똑한 규모 조정 의사 결정

    AWS Auto Scaling을 사용하면 서로 다른 리소스 그룹이 수요 변화에 대응하는 방법을 자동화하는 규모 조정 계획을 수립할 수 있습니다. 가용성과 비용을 최적화하거나 둘 사이의 균형을 적절하게 유지할 수 있습니다. AWS Auto Scaling에서는 사용자의 기본 설정에 따라 자동으로 모든 규모 조정 정책을 생성하고 목표를 설정합니다. AWS Auto Scaling에서는 애플리케이션을 모니터링하고, 수요 변화에 따라 실시간으로 리소스 그룹에 용량을 자동으로 추가하거나 제거합니다.

    자동으로 성능 유지

    AWS Auto Scaling을 사용하면 워크로드가 주기적으로, 예측 불가능하게 또는 지속적으로 변해도 최적의 애플리케이션 성능과 가용성을 유지할 수 있습니다. AWS Auto Scaling에서는 사용자가 원하는 성능 수준으로 운영되도록 애플리케이션을 지속적으로 모니터링합니다. 수요가 급증하면 AWS Auto Scaling이 제한된 리소스 용량을 자동으로 늘려 높은 서비스 품질을 유지합니다.

    필요한 만큼만 지불

    AWS Auto Scaling은 AWS 서비스를 사용할 때 사용률과 비용 효율성을 최적화하는 데 도움이 됩니다. 따라서 실제로 필요한 리소스에 대해서만 비용을 지불하면 됩니다. 수요가 감소하면 AWS Auto Scaling이 초과 리소스 용량을 자동으로 제거하여 과도한 소비를 방지합니다. AWS Auto Scaling은 무료로 사용할 수 있으며 이를 통해 AWS 환경 비용을 최적화할 수 있습니다.

     

    실습

    1. 스냅숏 생성

    메뉴 > 스냅샷 > 스냅샷 생성

    인스턴스 > 루트볼륨 포함 > 스냅샷 생성 > Tag 'Name'으로 지정

     

    2. EC2 이미지 생성

    우클릭 > 해당 스냅숏에서 이미지 생성 클릭 > 이미지 생성

    이미지 AMI 탭 > 생성 확인 (Name태그 수정)

     

    3. 시작 구성 생성

    Auto Scaling 탭 > 시작 구성 생성 > t2.micro 검색하여 선택, 보안 그룹, 키 페어 등 설정

    Auto Scaling 탭 > Auto Scaling 그룹 > 시작 구성으로 전환 > 이전 생성된 구성 선택 

    - 크기 조정 정책

    대상 추적 크기 조정 정책: CPU 사용률 50%를 기준으로 서버의 수를 조정한다.

    없음: 별도의 기준 없이 원하는 용량을 맞춘다. ex) 사용자가 늘어나면 서버수를 늘려서 CPU의 부하를 맞춘다.

     

    - Target Tracking Policy (목표 추적 조정 정책)

    : CPU 사용률, 네트워크 트래픽 등을 기준점으로 만들어 놓고, 기준점을 초과하면 사용률이 기준점에 도달할 때까지 EC2의 개수를 늘림, 반대로 기준점 이하로 내려가면, 기준점에 도달할 때까지 EC2의 개수를 줄인다. => 동적으로 작동

     

    - 생성 완료

    : 인스턴스 종료 후에도 Auto Scaling '원하는 용량' 설정을 위해 개수가 유지된다.

     

    출처 : https://cloudinfosec.tistory.com/

     

    처음 만나는 클라우드 보안

     

    cloudinfosec.tistory.com

     


    Load Balancing

    AWS EC2의 부하를 줄이기 위해 서버 앞단에서 트래픽을 분산시키는 네트워크 장치. 클라이언트 접속이 다수 발생하더라도 트래픽을 온전히 처리할 수 있다. 클라우드 환경에서는 L4 스위치를 가상화한 장치를 사용한다. 

     

    로드밸런싱 방식

    - Round Robin (순차분배방식)

    : 순차적으로 트래픽을 배분하는 방식 ex) A => B => C => D => A => B =>...

     

    - Weighted Round Robin (순차 분배 방식 + 가중치 부여)

    : 서버의 용량 등을 고려해서 순차 분배하는 방식

     

    - Least Response Time (최소 응답 시간 우선 분배)

    : Health Check를 할 때 가장 빠르게 응답하는 서버에 우선 분배

     

    - Least Connection (최소 연결 개수 우선 분배)

    : Client와의 연결 개수가 적은 쪽이 여유가 있기 때문에 우선 분배

     

    - Hash Function (해쉬값 계산 방식)

    : 출IP, 목 IP, 출Port, 목 Port의 해쉬값 계산, Client와 같은 Server를 계속 연결하는 방식 ex) 고정 세션 (Sticky Session)

     

    - NLB (Network Load Balancer)

    - 리스너에 포트번호화 프로토콜 지정: Port번호를 기반으로 로드밸런싱

    - EIP(Elastic IP, 탄력적 IP => 퍼블릭 고정 IP)를 NLB에 설정 가능 ㅡㅡ> 도메인 주소를 EIP와 연결 (DNS연결)

    참고)

    Sticky Session(고정 세션): 세션의 연결이 지속적으로 유지 => 서버가 고객정보를 계속 보유

    ALB는 Round Robin, NLB는 Hash Function이 지원된다.

     

     

    제품 비교

    애플리케이션 요구 사항에 따라 적절한 로드 밸런서를 선택할 수 있습니다. 유연한 애플리케이션 관리가 필요한 경우 Application Load Balancer를 사용하는 것이 좋습니다. 애플리케이션에 탁월한 성능 및 고정 IP가 필요한 경우 Network Load Balancer를 사용하는 것이 좋습니다. 기존 애플리케이션이 EC2-Classic 네트워크 내에 구축되어 있는 경우 Classic Load Balancer를 사용해야 합니다.

    기능Application Load BalancerNetwork Load BalancerGateway Load BalancerClassic Load Balancer
    로드 밸런서 유형 계층 7 계층 4 계층 3 게이트웨이 + 계층 4 로드 밸런싱 계층 4/7
    대상 유형 IP, 인스턴스, Lambda IP, 인스턴스, Application Load Balancer IP, 인스턴스  
    흐름/프록시 동작 종료 아니요
    프로토콜 리스너 HTTP, HTTPS, gRPC TCP, UDP, TLS IP TCP, SSL/TLS, HTTP, HTTPS
    다음을 통해 연결 가능 VIP VIP 라우팅 테이블 항목  
    계층 7
    리디렉션      
    고정 응답      
    Desync Mitigation Mode      
    HTTP 헤더 기반 라우팅      
    HTTP2/gRPC      
    일반적인 구성 및 특징
    느린 시작      
    Outpost 지원      
    로컬 영역      
    IP 주소 - 고정, 탄력적      
    Connection Draining(등록 취소 지원)
    구성 가능한 유휴 연결 시간 초과    
    PrivateLink 지원   ✔ (TCP, TLS) ✔ (GWLBE)  
    영역 격리    
    세션 재개    
    수명이 긴 TCP 연결    
    같은 인스턴스의 여러 포트로 로드 밸런싱  
    로드 밸런서 삭제 방지  
    소스 IP 주소 유지  
    WebSocket  
    지원되는 네트워크/플랫폼 VPC VPC VPC EC2-Classic, VPC
    교차 영역 로드 밸런싱
    IAM 권한(리소스 기반, 태그 기반) ✔ (리소스 기반만)

    흐름 고정(흐름의 모든 패킷이 하나의 대상으로 전송되고 동일한 대상에서 반환 트래픽이 전송됨)

    대칭

    대칭

    대칭

    대칭

    대상 장애 시 동작
    대상에 대해 장애 시 닫기(Fail Close), 모든 대상이 비정상이면 장애 시 열기(Fail Open) 대상에 대해 장애 시 닫기(Fail Close), 모든 대상이 비정상이면 장애 시 열기(Fail Open) 기존 흐름은 계속해서 기존 대상 어플라이언스로 전송되고, 새 흐름은 정상 상태인 대상 기기로 다시 라우팅  
    상태 확인 HTTP, HTTPS, gRPC TCP, HTTP, HTTPS TCP, HTTP, HTTPS TCP, SSL/TLS, HTTP, HTTPS
    보안
    SSL 오프로드  
    SNI(서버 이름 표시)    
    백엔드 서버 암호화  
    사용자 인증      
    사용자 지정 보안 정책      
    ALPN    
    Kubernetes 컨트롤러
    포드 직접 연결 ✔ (Fargate 포드)    
    여러 네임스페이스로 로드 밸런싱      
    완전 프라이빗 EKS 클러스터 지원    
    로깅 및 모니터링
    CloudWatch 지표
    로깅

    보안

    Amazon Virtual Private Cloud(VPC)를 사용할 경우 Elastic Load Balancing과 관련된 보안 그룹을 생성 및 관리하여 Application Load Balancer 및 Classic Load Balancer를 위한 추가 네트워킹 및 보안 옵션을 제공할 수 있습니다. 원하는 Load Balancer를 인터넷과 연결되도록 구성하거나 퍼블릭 IP 주소 없이 로드 밸런서를 생성하여 인터넷에 연결되지 않은 내부 로드 밸런서로 사용할 수 있습니다.

    고가용성

    Elastic Load Balancer는 가용성이 매우 뛰어납니다. 수신되는 트래픽을 단일 가용 영역 또는 여러 가용 영역의 Amazon EC2 인스턴스 전체에 걸쳐 배포할 수 있습니다. Elastic Load Balancer는 수신되는 애플리케이션 트래픽에 대응하여 요청 처리 용량을 자동으로 조정합니다. 대상이 사용 가능하고 정상 상태인지 확인하기 위해 Elastic Load Balancer는 구성 가능한 케이던스로 대상에 대해 상태 확인을 실행합니다.

    높은 처리량

    Elastic Load Balancer는 트래픽 증가를 처리할 수 있도록 설계되었으며 초당 수백만 개의 요청을 로드 밸런싱할 수 있습니다. 또한, 갑작스럽고 변동이 심한 트래픽 패턴도 처리할 수 있습니다.

    상태 확인

    Elastic Load Balancer는 EC2 인스턴스, 컨테이너, IP 주소, 마이크로서비스, Lambda 함수, 어플라이언스 등 정상 상태인 대상으로만 트래픽을 라우팅합니다. Elastic Load Balancing을 사용하면 두 가지 방식으로 애플리케이션 상태에 대한 통찰력을 개선할 수 있습니다. 첫째, 상태 확인 개선을 통해 상세한 오류 코드를 구성할 수 있습니다. 상태 확인을 통해 로드 밸런서 뒤에서 각 서비스의 상태를 모니터링할 수 있습니다. 둘째, 새로운 지표로 EC2 인스턴스에서 실행되는 각 서비스의 트래픽을 파악할 수 있습니다.

    고정 세션

    고정 세션은 요청을 동일한 클라이언트에서 동일한 대상으로 라우팅하는 메커니즘입니다. Elastic Load Balancer는 고정 세션을 지원합니다. 고정성은 대상 그룹 수준에서 정의됩니다.

    운영 모니터링 및 로깅

    Amazon CloudWatch가 Application Load Balancer와 Classic Load Balancer에 대해 요청 횟수, 오류 횟수, 오류 유형, 요청 대기 시간 등의 지표를 보고합니다. 또한 Amazon CloudWatch는 네트워크 로드 밸런서와 Gateway Load Balancer에 대해 활성 흐름 수, 새 흐름 수, 처리된 바이트 등의 지표를 추적합니다. Elastic Load Balancer는 ELB에 대한 API 호출을 추적하는 AWS CloudTrail과도 통합됩니다.

    삭제 방지

    Elastic Load Balancer에서 삭제 방지를 활성화하여 우발적 삭제를 방지할 수 있습니다.

     

    실습

     

    1. 시작 탬플릿 생성

    우클릭 > 인스턴스에서 탬플릿 생성 > 시작 탬플릿 생성

     

    2. 탬플릿으로 인스턴스 시작

    작업 > 탬플릿으로 인스턴스 시작 > 인스턴스 개수

    리소스 태그 값 > 이름 중복 안 되도록 설정 yngmin

     

    3. 대상그룹(Target Group) 생성

    Target group > Create Target group

    Instance선택 > 타깃그룹 선택, http1 선택

    Health Check 서버가 아직 살아있는지 확인 후 NEXT

     

    4. 로드밸런서 생성

    왼쪽 탭 로드밸런서 > 로드밸런서 생성 클릭

    ALB Create 선택 >  이름 지정, Internet-facing, IPv4선택, 타깃그룹 선택

    Security groups > http 80번 포트 Open

    Create Load balancer 확인

    생성된 로드 밸런서 확인

    로드 밸런싱 > 대상 그룹 > Health Check

    5초당 로드밸런서의 타겟그룹에 대한 상태체크가 이루어지고 있다.

     

    5. 타겟 선택

    Healthy 상태체크

    6. 로드밸런싱 확인

    DNS주소로 여러번 접속하면 로드벨런싱 설정으로 인해 웹페이지(2개)로 번갈아 접속됨을 확인할 수 있다.

     

    추가)  로드밸런스와 오토스케일링을 함께 사용하려면?

    (이전 시작탬플릿으로 시작하지 않고) 오토스케일링그룹으로 시작된 인스턴스에 대해서 로드밸런서 타겟으로 설정, 로드밸런서 연결해준다.

     

    출처 : https://cloudinfosec.tistory.com/

     

    처음 만나는 클라우드 보안

     

    cloudinfosec.tistory.com

    p.s : 수업을 많이 따라가지 못했는데 우등생인 교육생의 블로그 도움을 많이 받았습니다.. 감사합니다.

    댓글

Designed by Tistory.