AWS 로드 밸런서는 단순히 트래픽을 분산하는 것 외에도 다양한 추가 기능을 통해 고도화된 서비스를 제공합니다.
Sticky Session
Sticky Session은 사용자가 특정 인스턴스에 고정되어 요청을 계속 보내도록 설정하는 기능입니다. 로드 밸런서가 기본적으로는 트래픽을 여러 인스턴스로 분산하지만, Sticky Session이 활성화되면 사용자가 동일한 인스턴스에 연결된 상태를 유지하게 됩니다. 주로 로그인 상태를 유지하거나 세션 데이터를 특정 인스턴스에 저장해야 하는 경우에 사용됩니다.
Corss-Zone Load balancing
Cross-Zone Load Balancing은 트래픽을 가용 영역(Availability Zone) 간에 고르게 분산하는 기능입니다. 이를 통해 특정 가용 영역에 과부하가 걸리는 것을 방지할 수 있습니다.
ALB, NLB, GWLB, CLB 별로 Cross-Zone Load Balancing 정의
ALB (Application Load Balancer): 기본적으로 활성화되어 있으며 트래픽이 모든 가용 영역에 균등하게 분배됩니다.
NLB (Network Load Balancer): 선택적으로 활성화할 수 있습니다. 네트워크 레벨의 로드 밸런싱에 적합합니다.
GWLB (Gateway Load Balancer): 가상 네트워크 장치를 사용하여 트래픽을 관리하며, Cross-Zone Load Balancing 기능을 지원합니다.
CLB (Classic Load Balancer): 사용자가 직접 활성화해야 하며, 예전 버전의 로드 밸런서입니다.
인증 (SSL 과 TLS)
SSL
SSL (Secure Sockets Layer)은 인터넷 상에서 데이터를 암호화하여 전송하는 프로토콜입니다.
이를 통해 전송 중 데이터가 외부에 노출되지 않도록 보안성을 제공합니다.
TLS
TLS (Transport Layer Security)는 SSL의 업그레이드된 버전입니다. TLS는 더 강력한 암호화와 보안성을 제공하며, 현재 대부분의 시스템에서 SSL 대신 TLS를 사용하고 있습니다.
Load Balancer에서 SSL 인증 동작 방식
로드 밸런서는 SSL 인증서를 사용하여 클라이언트와의 연결을 암호화합니다. SSL 인증 동작 방식은 다음과 같습니다:
사용자가 로드 밸런서에 HTTPS 요청을 보냅니다.
로드 밸런서는 사전에 설정된 SSL 인증서를 사용해 연결을 암호화합니다.
인증이 완료되면 데이터를 암호화된 채로 전송합니다.
SNI (server name indication) 란
SNI는 클라이언트가 로드 밸런서에 연결할 때 호스트 이름을 지정할 수 있도록 하는 확장 기능입니다. 이를 통해 하나의 로드 밸런서에서 여러 도메인의 SSL 인증서를 관리할 수 있습니다.
예를 들어, example.com과 api.example.com의 인증서를 각각 설정할 수 있습니다.
ELB 서비스별 SSL 인증
ALB: SNI를 지원하며, 여러 SSL 인증서를 설정할 수 있습니다.
NLB: SNI를 지원하지 않지만, 단일 SSL 인증서를 통해 암호화가 가능합니다.
GWLB: SSL 인증을 처리하지 않고 데이터 패킷 전달에 중점을 둡니다.
CLB: 제한된 SSL 인증 기능을 제공합니다.
Connection Draining
Connection Draining은 인스턴스를 종료하거나 연결을 해제할 때, 기존 연결을 안전하게 마무리하도록 도와주는 기능입니다.
예를 들어, 서버가 업데이트 중일 때도 기존 사용자의 요청이 갑자기 끊기지 않도록 처리 시간을 제공합니다.