Infrastructure

Amazon LB

Jinlib 2022. 6. 9. 20:04

1. Classic Load Balancers(v1)

  • Supports TCP(Layer 4), HTTP & HTTPS(Layer 7)
  • 상태확인은 TCP 또는 TCP or HTTP 기반으로 한다.
  • fixed hostname

위와 같이

  • Time-out 시간
  • 몇번 간격으로 health check을 할것인지?
  • 응답이 이상한게 몇번이면 Unhealthy로 판단할것인지?
  • 응답이 정상인게 몇번이면 healthy로 판단할것인지?

2. Application Load Balancer (v2)

  • 7계층 HTTP 전용 Load Balancers
  • 머신간 다수 HTTP 애플리케이션 라우팅에 사용된다.
  • 같은 머신에 여러 어플리케이션을 Load Balancing (ex Dokcer AWS ECS)
  • HTTP/2 & WebSocket 지원
  • HTTP → HTTPS로 트래픽 자동 리다이렉트 지원
  • 고정 호스트 네임
  • 어플리케이션 서버는 클라이언트의 IP를 직접적으로 보지 못한다.
    • 대신, X-Forwarded-For에 클라이언트 IP가 삽입된다.
    • X-Forwarded-Port에 클라이언트 Port가 삽입된다.
    • X-Forwarded-Proto에 클라이언트 프로토콜이 삽입된다.

3. Network Load Balancer(v2)

  • layer 4 로드밸런스 ⇒ TCP UDP 기반 트래픽을 인스턴스로 전달
  • 초당 수백만 건의 요청을 처리함
  • ALB보다 지연시간이 짧음 ~100ms ↔ ALB ⇒ 400ms
  • 외부 AZ 당 1개의 고정 IP를 노출하기 때문에 NLB자체 IP를 가져오는 대신 Elastic IP를 사용한다.
  • 2개의 엔트리 포인트를 사용하고자 할때 유용
    • ex) 애플리케이션 전용 특정 IP 지정시, NLB가 해당 트래픽을 EC2로 보낸다.
  • Extreme 성능, TCP or UDP 수준의 트래픽을 원할때 사용한다.
  • NLB는 AWS 프리티어를 제공 X
  • 고정 IP가 없고 고정 호스트 이름이 있다.

Network Load Balancer - Target Groups

  • EC2 인스턴스
    • 대상그룹에 EC2 인스턴스를 등록하면 NLB에서 트래픽 전송방법을 파악

    ()고정아이피와는 다르게

  • 고정 IP와 개인 IP를 지정해서 NLB에 트래픽을 보내도록 하는것
    • 자체 데이터 센터에 서버가 있는경우에는 가급적이면 개인IP가 있는 서버 로드 밸런서를 사용한다.
  • NLB + ALB(Aplication Load Balancer)
    • NLB기능을 활용해서 고정 IP를 가지기 위해
    • HTTP 관련 기능 ALB를 활용할수 있다.

4. Gateway Load Balancer

  • 배포 및 확장, AWS의 가상 어플라이언스의 서드파티 fleet 관리에 사용된다.
  • 모든 트래픽이 방화벽을 통과하게 하거나 침입탐지 방지 시스템, 일부 페이로드를 수정하는 네트워크 수 잇게한다.
  • Network Layer(layer3)에서 작동한다.
  • 2가지 기능
    • Transparent 네트워크 게이트웨이: VCP의 모든 트래픽이 GWLB가 되는 단인 엔트리와 출구를 통과
    • Load Balancer: 트래픽을 분산해서 로드 밸런서가 된다.
  • 시험볼때는 6081포트의 GENEVE 프로토콜을 사용한다.

5. Sticky Sessions

  • 로드밸런서에 2가지 요청을 수행하는 클라이언트가 요청에 응답하기 위해 백엔드에 동일한 인스턴스를 갖는것을 의미
  • 원리 클라이언트에서 로드밸런서로 쿠키가
  • 쿠키 다른 eC2인스턴스
  • 사용자의 로그인과 같은 중요한 세션데이터를 잃지 않기위해 동일한 백엔드를 이용하고자 한다.

Cookie Names?

  • 커스텀 쿠키
    • 대상으로 생성된 사용자 정의 쿠키
    • 애플리케이션에 필요한 모든 사용자 정의 속성을 포함할 수 있다.
    • 각 대상 그룹별로 개별적으로 사용해야한다.(AWSALB, 이런걸 ㅅ쓰면안됌
  • 애플리케이션 쿠키
    • Load balancer 자체에서 생성됨
    • AWSALBAPP
  • 기간 기반 쿠키
    • load

6. Cross-Zone Load Balancing(교차 영역 로드 밸런싱)

클라이언트가 두 교차영역

각 로드 ㅗ든 인스턴스에 전반적으로 고르게 부ㄴ포됌

클라이언트는 50%를 1 AZ에 보내고 각 ALB는 가용영역에 상관없이 10개의 인스턴스에 분포함

두번째 ALB를 보면 전체 인스턴스에 수신한 것이 10%인데

ALB

  • Cross-Zone Laod Balancing이 항상 ON 상태이다(비활성화 못한다)
  • 데이터가 한 AZ에서 다른 AZ로 이동하면, 비용을 지불해야한다.(ALB는 활성화가 되어있으므로 데이터 전송에 대한 돈 지불할 필요가 없다.

NLB

  • Cross-Zone Laod Balancing이 기본적으로 비활성화 상태이다
  • 활성화하면 AZ간 데이터 전송에 비용을 지불해야한다.

CLB

  • Cross-Zone Laod Balancing이 기본적으로 비활성화 상태이다
  • 활성화한다해도 AZ간 데이터 전송에 비용을 지불 X

7. SSL/TLS

  • SSL을 사용하면 클라이언트와 Load Balancer 사이에서 전송 중인 트래픽을 암호화 할 수 있다.(in-flight 암호화)
  • SSL은 Secure Sockets Layer 연결을 암호화하는데에 사용된다.
  • TLS는 SSL의 최신버전으로 Transport Layer 보안 (요즘 사용됨)
  • 공용 SSL 인증서 를 사용하면 클라이언트와 로드밸런스 사이에 암호화를 할 수 있다.

애플리케이션 로드 밸런서 (ALB)와 네트워크 로드 밸런서 (NLB)의 어떤 기능을 통해 하나의 리스너에서 여러 SSL 인증서를 로드할 수 있을까요?Server Name Indication (SNI)

8. Connection Draining

  • 불리는 이름들..
    • CLB에서는 Connection Draining이라고 불린다.
    • ALB, NLB에서는 Deregistraion Delay라고 불린다.
  • 기능
    • 인스턴스가 de-registering, 혹은 Unhealthy인 상태에 있을 때 인스턴스에 어느 정도의 시간을 줘서, 활성을 완료할 수 있도록 하는 기능
  • 과정
    • Elastic Load Balancing은 Deregistraion 프로세스를 완료하기 전 300초 동안 대기
      • Elastic Load Balancing이 대기하는 시간을 변경하려면 등록 취소 지연 값을 업데이트
    • 등록 취소하는 대상 초기 상태는 draining
    • draining이 경과한 후 등록 취소 프로세스가 완료되며 대상 상태는 unused
      • ASG의 일부인 경우 종료 및 대체되는 시점 ⇒ 5xx 에러발생

9. Auto Scaling Group?

  • 애플리케이션에 받는 부하가 많아진다면, 빠르게 서버를 증설해준다(스케일 아웃)
  • 반대로, 받는 부하가 적어서 리소스가 낭비된다면, 서버를 줄어들게 한다(스케일 인)
    • 일정량만 증가시키거나 줄어들게 만들수있는데, 이로써 ASG에 실행되는 머신의 최대, 최소 숫자 설정가능하다.

Auto Scaling Alarms

  • 몇가지 metric으로 작동하는데, metric 설정을 통해서 Trigger를 줘서 (ex 평균 CPU사용량이 70% 이상 시) 스케일 아웃, 스케일 인을 할 수 있다.

ASG의 장점

  • 인스턴스가 종료될 경우 ASG가 인스턴스 종료 사실을 파악할 것이고 자동으로 새 인스턴스를 생성해서 교체해 준다.
  • 로드 밸런서가 특정 인스턴스를 unhealthy이라고 표시한 경우 ASG는 해당 인스턴스가 unhealthy이니 종료하고 새 인스턴스를 생성해 교체하는 판단을 내린다. ⇒ ASG는 재시작이 필요 없고 인스턴스의 중단없이 문제가 있는 인스턴스를 종료한 후 새 인스턴스를 생성해 교체한다.

Auto Scaling Group(ASG) - Dynamic Scaling 정책

  1. 타겟 트래킹 스케일링
    1. 가장 간단한 방식
    1. example: ASG의 평균 CPU 사용률을 추적해서 40%에 머물 수 있도록 해라!(
  1. Simple / Step 스케일링
    1. 전체 ASG의 CPU 사용률이 70%를 초과하는경우 2 unit를 높여라
    1. 반면, 30%떨어지면 1 unit를 제거해라
  1. 스케줄 액션
    1. 특정시간에 맞춰서 스케일링하는 방식
    1. 금요일 오후 5시에 큰 이벤트가 예정되어있으니, 최소 10개이상 늘릴수 있도록 해라
  1. 예측 스케일링
    1. 과거 전력을 통해서 예측 스케일링 서비스를 제공함.

  • CPU 사용량(CPU Utilization): 평균 CPU
  • 타겟당 요청 수(Request Count Per Target):
  • Average Network In/Out:

'Infrastructure' 카테고리의 다른 글

Amazon RDS  (0) 2022.06.09
Amazon SQS  (0) 2022.06.09
Amazon EC2 Overview  (0) 2022.06.09
Amazon ELB overview  (0) 2022.06.09
Amazon EC2 EBS  (0) 2022.06.09