본문 바로가기

AWS

AWS - ELB (Elastic Load Balancing) with. 확장성 및 고가용성

728x90

■ 확장성 (Scaling) 정의

  • IT 자원을 확장하거나 축소하는 기능을 의미함. 

■ 확장성 (Scaling) 종류

  • 수직 확장성 (Vertical Scailing): 자원의 용량을 확장하거나 축소 하는 것. 분산배치 작업이 어려운 DB와 같은 서버에 적용하기 적합
    • Scale-Up: IT 자원의 용량을 늘리는 것 (EC2 인스턴스의 CPU 변경 t2.micro → t2.large)
    • Scale-Down : IT 자원의 용량을 줄이는 것 (EC2 인스턴스의 CPU 변경 t2.large → t2.micro)
  • 수평 확장성 (Horizontal Scailing): 자원의 수량을 확장하거나 축소 하는 것. 분산배치 작업을 수행하는 WEB 서비스를 제공하는 서버에 적용하기 적합 
    • Scale-Out: IT 자원의 수량을 늘리는 것 (EC2 인스턴스의 수량 2개 → 4대)
    • Scale-In: IT 자원의 수량을 줄이는 것 (EC2 인스턴스의 수량 4개 → 2대)

 

 

■ 고가용성 (High-Availability, HA)

  • 가용성의 사전적 정의는 사용자가 필요로 할 때 언제든지 정보 시스템을 사용할 수 있는 상태를 정의하며, 고가용성은 정보 시스템을 항상 가용 상태로 유지하기 위한 방법론적 접근을 의미 합니다. 
  • 고가용성을 달성하기 위한 일반적인 사례로는 Server Load-Balancing, Data Center 이중화, Server Clustring이 있으며, 이러한 기술은 일부 시스템에 문제가 발생하더라도 서비스는 사용 가능한 상태로 유지 시켜줍니다. 

 


 

고가용성 을 달성하기 위한 AWS ELB 

  • ELB (Elastic Load-Balancing) 개요
    • AWS ELB는 부하분산 (Load Balancing) 기능을 제공 합니다. 부하분산이란 동일 목적을 수행하는 다수의 서버에 분산처리를 하는 기능을 의미 합니다. 

 

  • ELB (Elastic Load-Balancing) 특징
    • EC2에서 운영 중인 애플리케이션, 마이크로 서비스 및 컨테이너 서비스로 유입되는 트래픽 부하분산 수행
    • 여러 가용 영역에서 동작하여 애플리케이션의 가용성 향상
    • CloudWatch 기능을 활용하여 로그 및 메트릭 모니터링 수행
    • Auto-Scaling과 결합하여 트래픽 증감에 따라 자동으로 EC2 인스턴스 추가 및 제거 수행 
    • 네트워크 레벨에서 부하분산을 수행하는 NLB와 애플리케이션 레벨에서 부하분산을 수행하는 ALB 2가지 유형의 부하분산 서비스를 제공
    • HTTP, HTTPS, TCP, UDP, SSL등 다양한 프로토콜을 지원하며, SSL 암호화를 지원하여 애플리케이션 보안 강화 가능

 

  • ELB (Elastic Load-Balancing) 구성 요소
    • 로드 밸런서: 트래픽을 대상 그룹에 있는 인스턴스로 분산시켜 애플리케이션의 가용성을 유지하는 역할 수행
    • 대상 그룹: 로드 밸런서에서 분산할 대상의 집합을 정의. 라우팅 규칙에 따라 요청을 수용할 대상 그룹을 지정하고 정기적인 헬스체크를 통해 정상 대상으로만 트래픽 전달 수행. 대상 그룹으로 지정할 수 있는 항목은 인스턴스, IP 주소, 람다 함수 및 ALB를 지정 할 수 있습니다.
    • 리스너: 로드 밸런서에서 사용할 포트와 프로토콜을 설정하는 구성 요소 

 

  • ELB (Elastic Load-Balancing) 종류
    1. ALB (Application Load-Balancer): L7 로드 밸런서이며, HTTP/HTTPS/Web Socket 같은 웹 프로토콜을 지원 합니다. ALB는 기본적으로 가용 영역 전체로 트래픽이 분산되는 방식을 구성 합니다.
      • 경로 기반 라우팅: URL 경로를 기반으로 요청을 분산
        예: example.com/users 또는 example.com/posts 
      • 호스트 기반 라우팅: 호스트 이름을 기반으로 요청을 분산
        예: one.example.com 또는 two.example.com
      • 쿼리 문자열 기반 라우팅: URL 쿼리 문자열 기반으로 요청을 분산
        예: example.com/users?id=1234&order=false
      • IP 주소 보존: ALB에서 HTTP 헤더 중 하나인 X-Forwarded-For 에 클라이언트 IP를 추가하여 클라이언트 IP를 식별할 수 있게 지원함.
      • 교차 영역 로드 밸런싱:  기본값은 사용
    2. NLB (Network Load-Balancer): L4 로드 밸런서이며, 클라이언트와 로드 밸런서 사이의 연결은 TCP 레벨에서 수행되기 때문에 대규모의 트래픽 처리에 적합 합니다. NLB는 가용 영역 사이 트래픽이 분산되는 방식을 구성 합니다.
      • 고성능: 초당 수백만 건의 연결을 처리할 수 있고, 빠른 응답 시간을 위해 최적화된 알고리즘을 사용
      • 고가용성: 여러 가용 영역에서 인스턴스를 실행하여, 특정 가용영역의 장애 또는 인스턴스 장애가 발생 하더라도 서비스 제공 가능
      • IP 주소 보존: X-Forwarded-For 기능 없이 클라이언트의 IP를 유지 할 수 있음. 
      • 고정 IP 사용: EIP (Elastic IP)를 사용하여 고정적인 IP를 사용할 수 있음. ALB는 고정 IP를 사용할 수 없음. 
      • 교차 영역 로드 밸런싱:  기본값은 미사용. 로드 밸런서 설정에서 활성화 또는 대상 그룹에서 활성화 가능
    3. GWLB (Gateway Load-Balancer): 네트워크 트래픽을 Third-Party의 방화벽/어플라이언스 장비로 부하분산 처리하는 로드 밸런서. 
      GWLB는 L3 수준 (Network Layer)에서 동작하고, VPC의 모든 트래픽이 GWLB를 통과해야 하는 단일 입/출구가 됩니다. NLB, ALB와 달리 GWLB의 타켓 그룹은 EC2 인스턴스 또는 IP 주소만 설정 할 수 있습니다.
    4. CLB (Classic Load-Balancer): AWS에서 서비스 중지 예정

 

728x90