AWS a to z - ELB

NTbell·2025년 2월 3일
0

이번에는 ELB에 대해 알아보자!
한줄로 말하면 ELB는 Load Balancing임 트래픽을 분산을 도와줌!🧐

우선 로드밸런싱을 이해하기 위해서 확장성,가용성에 대해 알아보자!ㅎㅁㅎ

1. 확장성(Scalability)

  • 애플리케이션 또는 시스템이 부하에 맞추어 적절하게 조절될 수 있는 능력
  • 확장성에는 수평적 확장(Scale-Out)과 수직적 확장(Scale-Up)이 있음

✅ 수평적 확장 (Scale-Out)

  • 여러 개의 인스턴스를 추가하여 부하를 분산하는 방식
  • 탄력적인 확장 가능
  • AWS 적용 예시: Auto Scaling Group을 멀티 AZ로 구성하여 트래픽 증가 시 자동 확장

✅ 수직적 확장 (Scale-Up)

  • 인스턴스의 크기를 업그레이드하여 성능을 향상시키는 방식
  • 하나의 애플리케이션이 처리하는 용량이 증가하는 경우 유용
  • AWS 적용 예시: EC2 인스턴스를 t2.microt2.large로 업그레이드 (1 vCPU / 1 GiB RAM → 2 vCPU / 8 GiB RAM)

2. 가용성(Availability) & 고가용성(High Availability)

  • 가용성: 서비스가 중단되지 않고 계속 운영될 수 있는 능력
  • 고가용성(HA, High Availability): 여러 가용 영역(AZ) 및 데이터 센터에 애플리케이션을 배포하여 장애에도 지속적인 운영을 가능하게 함
  • AWS 적용 예시:
    • 수평적 확장을 통해 인스턴스를 여러 데이터 센터(AZ)에 배포
    • 로드 밸런서를 활용하여 트래픽을 분산

3. 로드 밸런서(ELB: Elastic Load Balancer)란?

  • ELB는 AWS에서 제공하는 부하 분산(Load Balancing) 서비스
  • 애플리케이션의 트래픽을 여러 개의 인스턴스로 분배하여 성능과 가용성을 향상시킴
  • 자체적으로 로드 밸런서를 구축하는 것보다 간편하고, 자동 확장 및 복구 기능 제공
  • 트래픽을 여러 가용 영역(AZ)과 백엔드 서버에 분산하여 장애 발생 시에도 지속적인 서비스 운영 가능

ELB를 사용해야 하는 이유

  1. 여러 개의 서버에 트래픽을 분산하여 부하를 줄임
  2. 인스턴스에 대한 헬스 체크(Health Check) 수행
  3. 여러 가용 영역(AZ) 간의 가용성 제공
  4. 퍼블릭 트래픽과 프라이빗 트래픽을 분리

✅ 헬스 체크(Health Check)란?

  • 로드 밸런서가 백엔드 인스턴스가 정상적으로 요청을 받을 수 있는지 확인하는 기능
  • 일반적으로 특정 포트 번호 + 루트 경로로 확인 (예: example.com:443/health-check)
  • HTTP 상태 코드 기반으로 정상/비정상 판별

4. AWS 로드 밸런서(ELB) 종류 및 사용처

1️⃣ CLB (Classic Load Balancer)

  • 지원 프로토콜: HTTP, HTTPS, TCP, SSL
  • 오래된 방식으로 현재는 ALB, NLB가 더 많이 사용됨

2️⃣ ALB (Application Load Balancer)

  • L7(Application Layer)에서 동작하며, HTTP/HTTPS 트래픽을 처리
  • 트래픽을 요청의 경로나 호스트명 기반으로 라우팅 가능
  • 사용 사례:
    • URL 기반 라우팅이 필요한 경우: example.com/api → API 서버, example.com/images → 이미지 서버
    • 마이크로서비스 아키텍처: 여러 개의 서비스(API, 이미지 처리, 인증 서버 등)를 하나의 ALB에서 관리 가능
    • WebSocket을 사용하는 서비스: 실시간 채팅, 알림 시스템 등에 활용
    • AB 테스트나 버전 관리가 필요한 경우: 특정 요청을 A/B 그룹으로 나누어 트래픽을 분산할 수 있음

예제

  • example.com/api 요청은 API 서버로,
  • example.com/images 요청은 이미지 서버로,
  • example.com/chat 요청은 WebSocket 서버로 보내는 구조 가능

3️⃣ NLB (Network Load Balancer)

  • L4(Network Layer)에서 동작하며, TCP/UDP 기반 트래픽을 처리
  • ALB보다 빠른 응답 속도 제공 (ALB 400ms vs. NLB 100ms 이하)
  • 사용 사례:
    • 낮은 지연 시간이 중요한 금융 거래 서비스
    • 대량의 실시간 데이터 처리 (IoT, 게임 서버 등)
    • TCP/UDP 기반의 애플리케이션 트래픽 처리

4️⃣ GWLB (Gateway Load Balancer)

  • 보안 장비(방화벽, IDS/IPS) 트래픽을 분산할 때 사용
  • L3(Layer 3)에서 동작하며, 보안 솔루션 및 네트워크 트래픽 제어 목적
  • 사용 사례:
    • 트래픽을 특정 방화벽 장비로 전달해야 하는 환경
    • 클라우드 내 보안 어플라이언스를 사용해야 하는 경우

5. 추가 개념

✅ Sticky Session (고정 세션)**

  • 동일한 클라이언트의 요청을 항상 같은 인스턴스로 보내도록 설정
  • CLB, NLB, ALB에서 지원
  • 하지만, 특정 인스턴스에 트래픽이 집중될 수 있는 단점이 있음

✅ Cross-Zone Load Balancing

여러 가용 영역(AZ)에 걸쳐 트래픽을 균등하게 분배하는 기능

왜 필요한가?

  • AWS에서 로드 밸런서를 사용할 때, 가용 영역(AZ)별로 배포된 인스턴스 개수가 다를 수 있음
  • 일반적인 로드 밸런서는 각 AZ에 있는 인스턴스 개수만큼 트래픽을 분배하지만, Cross-Zone Load Balancing을 활성화하면 전체 인스턴스에 트래픽을 고르게 분산함!
  • AZ 간 트래픽을 공유하여 부하를 분산
  • ALB: 기본적으로 활성화되어 있으며, 추가 비용 없음
  • NLB/GWLB: 기본적으로 비활성화, 활성화 시 AZ 간 데이터 전송 비용 발생

✅ SSL/TLS

  • SSL (Secure Sockets Layer): 클라이언트와 로드 밸런서 간 암호화된 통신을 제공
  • TLS (Transport Layer Security): SSL의 후속 버전으로 더 안전한 암호화 방식 제공

Tip
SSL와 TLS는 같은 역할을 수행함 하지만 SSL경우 보안 취약점이 더많아서 TLS를 쓰는 것이 좋다!


AWS 및 도메인 SSL 인증서 설정 시
AWS에서 SSL 인증서를 설정하면 사실상 TLS를 사용함
AWS ACM(AWS Certificate Manager)에서도 TLS 기반의 인증서만 발급 가능
Let’s Encrypt, DigiCert, GlobalSign 등의 인증서 제공업체도 SSL이라는 이름을 쓰지만 실제로는 TLS를 지원
[정리]
✅ SSL 인증서를 구매하거나 설정하더라도, 내부적으로는 TLS가 적용됨
✅ "SSL 인증서"라는 말이 남아 있지만, 실제로는 TLS를 사용하고 있음
✅ TLS 1.2 또는 TLS 1.3을 사용하는 것이 가장 안전함

✅ Connection Draining (연결 종료 대기)

사용 중인 서버가 꺼지거나 제거될 때, 기존 요청을 안전하게 처리하고 종료하는 기능

예제 상황
EC2 인스턴스가 트래픽을 처리하고 있음
이 인스턴스를 종료하거나, Auto Scaling이 축소되면서 제거될 예정
갑자기 종료하면 현재 진행 중인 요청(예: 결제, 파일 업로드 등)이 끊어질 위험
Connection Draining이 활성

  • 인스턴스가 정지되거나 Unhealthy한 상태가 될 때, 기존 연결을 안전하게 종료하는 기능
  • 요청을 즉시 끊지 않고 1초 ~ 3600초(기본 30초) 동안 대기 후 종료
  • 설정을 0초로 하면 즉시 종료됨
  • 요청이 몇 초 이내에 끝나는지 확인 후 적절한 값 설정 필요

profile
최종빈의 컴퓨터교실

0개의 댓글

관련 채용 정보