AWS Solution Architect - Associate - ELB & ASG

CH_Hwang·2023년 8월 8일
0

AWS SAA

목록 보기
6/7

확장성 & 고가용성

  • 확장성
    - 더 큰 부하를 핸들링 할 수 있다는 뜻
    - 수직적 확장
    - 수평적 확장 (elasticity)
    - 고가용성과 연결되어있지만 다름

수직적 확장

  • 인스턴스의 크기 확장
  • 데이터베이스같은 비분산 시스템에서 흔하게 일어남
    - RDS, Elasticache
  • 하드웨어의 리밋이 있음

수평적 확장

  • 인스턴스, 시스템 수를 증가시킨다는 듯
  • 분산시스템

고가용성

  • 시스템을 2개 이상의 데이터센터(AZ)에서 사용한다는 뜻
  • 센터 하나가 다운되도 유지되도록 하는 것

부하분산

  • ec2 인스턴스같은 다수의 서버에 트래픽을 전달하는 것
  • 어플리케이션의 단일 액세스 지점을 노출시킴
  • 다운스트림 인스턴스의 실패를 처리하기 쉬움
    - 상태 확인 매커니즘을 가지고 있고 어떤 인스턴스로 트래픽을 보낼수 없는지 알 수 있음
  • SSL 종료 제공
  • 쿠키를 통해 보안 강화
  • 고가용성

ELB

  • EC2. EC2 auto scaling group, ecs 등 많은 서비스와 연결되어있음
  • health checks
    - http
    - 4567
    - /health
  • Classic Load Balancer
    - 구형 (시험에는 더이상 나오지 않음)
    - http, https, tcp, ssl
  • Application Load Balancer
    - 신형
    - HTTP, HTTPS, WebSocket
  • Network Load Balancer
    - TCP, TLS, UDP
    • 고성능이 필요할때
  • Gateway Load Balancer
    - Operates at layer 3(Network layer) - IP PRotocol
    • 보안, 침입 감지 방화벽 등을 위해 사용

Application Load Balancer

  • 7계층 (HTTP) LB
  • 다수의 인스턴스에 부하분산을 해줌
  • 같은 인스턴스에 다양한 application에 로드밸런싱
  • HTTP/2, websocket 지원
  • redirect 지원 (http -> https)
  • 다른 타겟 그룹에 라우팅
    - URL path 베이스 routing
    - example.com/users & example.com/posts
    - hostname 베이스 라우팅
    - query string, headers 베이스 라우팅
  • 마이크로서비스, 컨테이너 베이스 어플리케이션에 알맞음
    - Docker, Amazon ECS
  • ECS인스턴스에서 동적 포트로 redirection 할 수 있음.
  • TargetGroup
    - EC2 instances
    • ECS tasks
    • Lambda functions
    • IP Addresses
      • private IP여야함

Network Load Balancer

  • 4계층 LB
    - TCP, UDP 트래픽
  • 초당 수백만개의 요청을 처리할 수 있음 -> 매우 높은 성능
  • ALB에 비해 매우 짧은 대기시간
  • AZ 하나당 하나의 고정IP를 가짐
    - Elastic IP 를 할당 하여 특정 IP의 화이트리스트를 만들 수 있음.
  • ALB와 비슷하게 동작함
  • Target Group
    - EC2 Instances
    • IP Address
      • 반드시 Private IP여야함
    • Application Load Balancer
      - NLB를 통해 고정 IP를 얻고 ALB를 통해 HTTP 타입의 트래픽과 관련된 모든 규칙을 얻을 수 있음.
  • Health Check은 TCP, HTTP, HTTPS 3가지 프로토콜을 지원함

Gateway Load Balancer

  • 배포, 스케일링, 써드파티 가상 머신 등의 관리를 위함
  • 방화벽, 침입 감지 및 방지 시스템, 딥 패킷검사, 네트워크 레벨의 페이로드 수정 등을 함
  • 네트워크 트래픽 분석 등을 할 수 있음
  • 3계층(Network layer) LB - IP Packets
  • 투명한 네트워크 게이트웨이
    - 모든 트래픽이 단일 입구, 단일 출구를 통한다.
  • 로드밸런서
    - 가상 어플라이언스 세트와 타깃 그룹에 트래픽을 분산함
  • 6081포트에서 GENEVE 프로토콜을 이용함
  • Target Group
    - EC2 Instances
    • IP ADdress
      • 반드시 Private Ip여야함

Sticky Session (Session Affinity

  • 같은 사용자가 로드밸런서에 요청하면 항상 똑같은 인스턴스에 리다이렉트 됨.
  • CLB(Classic), ALB, NLB에서 작동함
  • 쿠키를 사용함 (NLB는 쿠키 사용하지 않음.)
    - 만료기간을 설정할 수 있음
  • 예를들어, 유저가 세션데이터를 잃지않게 할 수 있음.
  • 하지만 인스턴스들간의 부하 균형이 맞지 않을 수 있음.
  • 쿠키
    - Application-based Cookie
    - Custom Cookie
    - 응용프로그램 자체에서 생긴 쿠키
    - 앱이 요구하는 사용자 지정 특성을 포함할 수 있음
    - 쿠키 이름은 각 타깃 그룹에 개별적으로 지정되어야함. (특정되어야함)
    - 쿠키이름: AWSALB, AWSALBAPP, AWSALBTG 는 사용하지 못함
    - Application Cookie
    - 로드밸런서에서 생긴 쿠키
    - 쿠키이름: AWSALBAPP
    • Duration-based Cookie
      • 로드밸런서에서 생긴 쿠키
        • 쿠키이름: AWSALB (ALB), AWSELB (CLB)

Cross Zone Load Balancing

  • 모든 AZ에 고르게 분산됨
  • 어떤 AZ에 몇개가 있든 고르게 분산되기 때문에
    - AZ1에 50퍼, AZ2에 50퍼가 분산된다고 하더라도 AZ1에 2개가 있고 AZ2에 8개가 있다면 각 인스턴스에 10퍼센트씩 분산됨
  • 쓰지않으면 AZ1에 50퍼, AZ2에 50퍼가 분산되면 AZ1 2개 인스턴스에 25퍼씩, 나머지는 6.25퍼씩 나눠가짐
  • ALB
    - Default로 가능함. (끌 수 있음)
    - 다른 AZ로 데이터 이동이 일어나도 요금 부과 x
  • NLB, GLB
    - Default가 불가능
    • 가능하게하려면 요금
  • CLB
    - Default가 불가능
    • 가능하게해도 요금 x

SSL / TLS

  • SSL 인증은 클라이언트와 로드밸런서 사이의 트래픽이 이동중 암호화가 되도록 해줌
  • SSL은 Socket Secure Layer 이며 연결암호화에 이용됨
  • TLS는 SSL의 새로운 버전, Transport Layer Security
    - TLS를 쓰고있지만 아직도 SSL이라고 부름
  • SSL은 갱신되어야함
  • 유저는 요청할때 로드밸런서와 https로 통신한 후 로드밸런서는 해당 트래픽을 vpc에서 http로 ec2와 통신하게됨

SNI

  • 하나의 웹서버가 여러개의 웹사이트를 처리할 때 하나의 웹서버에서 다수의 SSL을 로드해야함.
  • 새로운 프로토콜에서는 SSL handshake단계에서 클라이언트가 대상 서버의 호스트명을 표시해야함.
    - ALB, NLB, CloudFront에서 동작함
  • CLB
    - 하나의 SSL 인증만 지원함
    • 여러개의 SSL 인증을 하려면 여러개의 CLB를 써야함
  • ALB
    - 여러개의 SSL 인증 지원
    • SNI 지원
  • NLB
    - 여러개의 SSL 인증 지원
    • SNI 지원

Connection Draining

  • Connection Draining - CLB
  • Deregistration Delay - ALB & NLB
  • ec2가 종료될 때 draining모드로 들어감 기존유저의 연결이 끝날때까지는 기다림, 그 외 다른 사용자들은 해당 ec2가 아닌 다른 ec2로 연결해줌
  • 1 ~ 3600초로 시간을 둘 수 있음 (deafult: 300초)
  • 0초로 두면 disabled
  • request가 짧다면 낮은 시간으로 두는게 좋음
    - 인스턴스를 빠르게 뺄 수 있음

Auto Scailing Group

  • 스케일 아웃 (EC2 추가) & 인 (EC2 제거)
  • unhealthy 상태의 인스턴스를 재생성함
  • 로드밸런서에 자동으로 등록함
  • ec2 인스턴스 비용만 지불한다면 무료임
  • 최소 인스턴스 수, 원하는 인스턴스 수, 최대 인스턴스 수를 정할 수 있다.
  • ELB가 unhealthy를 ASG에 전달하면 ASG가 해당 인스턴스를 종료함
  • Launch Template
    - AMI + Instance Type
    • EC2 User Data
    • EBS Volumes
    • Security Groups
    • SSH Key Pair
    • IAM Roles for EC2 Instances
    • Network + Subnet Information
    • Load Balancer Information
    • ...
  • Scailing Policy
    - CloudWatch 알람에 의해 scale out 될 수 있음
    - Dynamic Scailing Policy
    - Target Tracking Scailing
    - ex) CPU 사용률 40퍼에 머물도록 하고싶다
    - Simple/Step Scailing
    - CloudWatch에서 임계치를 정하고 해당 임계치가 넘으면 얼마 추가한다
    - CloudWatch에서 임계치를 정하고 해당 임계치가 넘지 않으면 얼마 제거한다
    - Scheduled Action
    - 언제 얼만큼 늘릴지
    - Predictive Scailing
    - 이전의 부하를 보고 앞으로 일어날 부하를 예측하는것
  • 좋은 scailing 기준
    - CPU Utilization - 평균 CPU 사용량
    - RequestCountPerTarget - 타겟당 요청수
    • Average Network I/O
    • CloudWatch를 이요한 커스텀 매트릭
  • Scailing CoolDown
    - 스케일링 후 cooldown period (default 300초)
    • 이 기간동안 ASG는 스케일링을 하지 않음

0개의 댓글