본문 바로가기
AWS/AWS-SAA

섹션8: 고가용성 및 스케일링성: ELB 및 ASG

by YoonJong 2023. 12. 19.
728x90

참고 : https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/learn/quiz/5383986#overview

 

1. ELB ( Elastic Load Balancer )
   - 트래픽을 여러 인스턴스로 배분해주는 역할 
   - 헬스체크를 통해 인스턴스 상태를 확인해 트래픽을 분산
   - ELB 는 로드밸런서를 관리하는 역할을 한다.
     - 직접 로드밸런서를 관리하는 것은 비효율적

2. Health Check 
   - 로드밸런서를 위해 인스턴스 상태를 체크
   - 200 OK 응답이 아니면 트래픽을 보내지 않는다.

3. AWS 의 로드밸런서 종류
   - CLB : HTTP, HTTPS, TCP, SSL ( 안씀 )
   - ALB : HTTP, HTTPS ,  WebSocket
   - NLB : TCP , TSL , UDP
   - GLB : Operates at layer 3 ( Network Layer )

4. 로드밸런서 보안 그룹
   - 로드밸랜서에 속해 있는 인스턴스는 해당 로드밸런서의 보안 그룹으로 연결.
   - 직접 인스턴스에 접근하는 것은 지양.  -> 보안 강화
   - ALB 의 리스너 -> 규칙 추가 -> 조건 설정 가능

5. ALB ( Application Load Balancer )
   - 레이어 7
   - 타겟그룹 
     - EC2 인스턴스의 그룹
     - private IP 를 사용
   - 서버가 클라이언트의 IP 를 직접 확인하지 못한다.
     - 헤더에 있는 X-Forwarded-For 을 확인.

6. NLB ( Network Load Balancer )
   - 레이어 4 -> TCP / UDP 트래픽
   - ALB 에 비해 성능이 매우 높다.
   - AZ 마다 1개의 고정 IP 를 갖는다.
   - 타겟그룹 : 인스턴스, IP 주소 (private IP) 
   - 헬스체크 : TCP, HTTP, HTTPS

7. GLB ( Gateway Load Balancer ) - 6081 port
   - 방화벽, 보안, 침입 탐지 등에 특화 ( 레이어 3 - IP 패킷)
   - 네트워크 트래픽 분석
   - 모든 트래픽은 GLB 의 하나의 입구와 출구를 통한다.
   - 들어온 트래픽을 분산해 로드밸런서 역할을 한다.
   - 타겟그룹 : EC2 , IP (private IP) 

8. Sticky Sessions 
   - 분산없이 동일한 인스턴스에 요청
   - 쿠키 이용 ( 애플리케이션, 기간 기반 )
   - 타겟그룹 -> 속성 -> stickiness 설정 


  
- 교차 영역 밸런싱 ( Cross Zone Load Balancing )


  -> ALB 는 기본적으로 교차 영역 로드 밸런싱이 활성화 되어있다. ( NLB , GLB 는 직접 설정해주어야 한다. )


- SSL / TLS 
  - SSL 인증서는 클라이언트와 로드 밸런서 사이에서 트래픽이 이동하는 동안 암호화 작업을 한다. -> 전송 중 암호화 ( 보안 소켓 계층, 암호화하는데 사용 )  -> Secure Socket Layer
  - 데이터는 네트워크를 이동하는 중에는 암호화되고 송신자와 수신자 측에서만 복호화 가능 
  - TLS 는 새로운 버전의 SSL ( 같은 의미로 사용 ) -> Transfer Layer Security
  - 인증서에는 만료 날짜가 있어서 주기적으로 갱신해야 한다.
  - HTTPS 를 통해 접속 -> S 는 SSL 인증서를 써서 암호화해 안전하다는 뜻
    1. 로드 밸런서는 자체적으로 SSL 를 종료
    2. 백엔드에서는 HTTP로 EC2 인스턴스와 통신 ( private IP 이용하니까 안전 )
  - ACM : AWS 인증서 관리
- SNI ( 서버 이름 지정 ) : 접속할 호스트의 이름을 알린다.
  - 여러 개의 SSL 인증서를 하나의 웹 서버에 로드해 하나의 웹 서버가 여러 개의 웹 사이트를 지원할 수 있게 한다.
  - 클라이언트가 접속할 웹사이트를 말했을 때, 서버는 어떤 인증서를 로드 해야하는지  알 수 있다. ( ALB , NLB , Cloud Front 에서 작동 )
  - 여러 개의 SSL 인증서를 두고 리스너를 여러 개 지원할 수 있다. ( SNI 사용 ) -> ALB , NLB
  - ALB 에서 리스너 추가 -> 443 포트 
 
- 연결 드레이닝 ( Connection Draining = 소비, 유출, 배수 )  : 해당 상태가 되면 ELB 는 등록 취소 중인 인스턴스로 요청을 보내지 않는다.
  - 삭제될 예정인 EC2 를 사용중인 커넥션(세션)이 작업을 마칠 때 까지 기다리는 기능
  - 연결되어있는 인스턴스가 드레이닝 상태면, 요청을 소비한 후 더이상 요청을 받지 않는다.
  - 1~3600 초 까지 설정 가능 / 기본적으로 300 초

- ASG ( Auto Scaling Group )
  - 목표는 스케일 아웃, 증가한 로드에 맞춰 인스턴스를 추가하거나 스케일 인(감소) 시키는 것
  - 로드 밸런서와 페어링하는 경우 ASG 에 속한 ec2 인스턴스가 로드 밸런서에 연결
  - 비정상이면 종료하고 새로 인스턴스를 생성
  - 무료, 인스턴스 비용만 내면 된다.
  - CloudWatch 기반으로 ASG 를 스케일 인 , 아웃을 할 수 있다.
  - 경보가 울리게 되면 스케일 아웃 진행 (지표)
  - Target Tracking Scaling : 대상 추적 스케일링 : 기준선을 세우고 사용  CPU 가 40% 로 기준 (예)
  - Simple / Step Scaling : 70% 초과한 경우에는 늘리고 30% 아래면 줄인다 (예)
  - Scheduled Actions : 금요일 오후 5시에 큰 이벤트 -> 5시에 10개로 늘린다 ( 예 )
  - Predictive Scaling : 로드를 보고 예측해 사용
  - Scaling Cooldowns : 스케일링 활동이 일어난 이후에 일정시간을 휴식 ( 300초 디폴트 )
  -> 해당 시간동안은 오토 스케일링 작동안함.

728x90

댓글