web 개발

로드밸런싱, NGINX, ELB

잼추 2024. 6. 10. 02:02

로드 밸런싱

 

  • 부하 분산: 로드 밸런서는 여러 서버나 리소스에 걸쳐 들어오는 요청 분배
  • 가용성 및 내구성 증대: 하나의 서버나 리소스에 문제가 발생 시 전체 시스템의 가동 중단 없이 계속 작동 가능
  • 확장성: 로드 밸런싱은 시스템에 더 많은 서버를 추가함으로써 확장성을 제공
    → 로드 밸런서가 자동으로 트래픽을 새 서버로 분산 시키므로, 추가적인 서버를 네트워크에 쉽게 통합 가능, 
  • 성능 최적화: 서버의 부하를 적절히 분산   각 서버를 최적의 성능으로 운영 가능

 

 

NGINX

  • 로드 밸런싱: NGINX는 여러 서버로 들어오는 트래픽을 분산시키는 로드 밸런서 역할
  •  효율성 향상 : 서버 하나가 과부하되는 것을 방지, 서버 간에 균등하게 트래픽을 분배
    →  전체 시스템의 효율성 향상
  • SSL/TLS 종단 처리: NGINX는 SSL/TLS 종단 지점으로서 작동
    즉, HTTPS를 통해 암호화된 트래픽을 처리하고, 내부적으로 서버로의 트래픽을 HTTP로 전환 가능
    →  보안 유지, 네트워크 복잡성 감소
  • 세션 지속성: 특정 사용자의 세션이 특정 서버에 지속적으로 연결되도록 관리, 이는 사용자 경험을 개선하고, 서비스 중단 없이 애플리케이션을 이용 가능하게 함
  • 무중단 배포 지원
    • NGINX는 새로운 버전의 애플리케이션으로 트래픽 이동
    • 문제 발생 시 즉시 이전 버전으로 롤백하여 트래픽을 전환할 수 있습니다.

 

ELB

AWS에서 제공하는 로드 밸런서 서비스

 

1. Application Load Balancer (ALB)

  • HTTP 및 HTTPS 트래픽 최적화: 7계층 로드 밸런싱(애플리케이션 계층)을 제공하여 HTTP 및 HTTPS 트래픽을 지능적으로 관리합니다.
  • 고급 요청 라우팅: URL, 헤더, HTTP 메소드, 소스 IP 등을 기반으로 요청을 라우팅 할 수 있습니다.
  • 웹소켓 및 HTTP/2 지원: 최신 웹 표준을 지원합니다.
  • 컨테이너화 된 애플리케이션 지원: ECS(Elastic Container Service) 및 EKS(Elastic Kubernetes Service)와 통합하여 컨테이너 인스턴스 간의 로드 밸런싱을 수행할 수 있습니다.

2. Network Load Balancer (NLB)

  • 고성능, 저지연 처리: 4계층 로드 밸런싱(전송 계층)을 제공하며, 수백만 개의 요청을 초당 처리할 수 있는 능력을 갖추고 있습니다.
  • TCP, UDP, TLS 트래픽 지원: 다양한 프로토콜을 지원하여, TCP 및 UDP 트래픽 라우팅이 가능합니다.
  • 정적 IP 주소 할당: 고정 IP 주소를 사용할 수 있어, 방화벽 규칙 설정에 용이합니다.
  • 극대화된 성능: 초당 초고속 연결을 맺을 수 있어 게임 서버, IoT 디바이스 통신 등에 이상적입니다.

3. Classic Load Balancer (CLB)

  • 단순한 로드 밸런싱: HTTP, HTTPS, TCP 및 SSL 프로토콜을 지원합니다.
  • 자동 스케일링: 트래픽 부하에 따라 자동으로 EC2 인스턴스를 추가 또는 제거합니다.
  • 헬스 체크: 등록된 인스턴스의 상태를 주기적으로 확인하여, 실패한 인스턴스로는 트래픽을 보내지 않습니다.