SSL/TLS 기초
SSL 인증서는 클라이언트와 로드 밸런서 사이에서 트래픽이 이동하는 동안 암호화 해줍니다 이를 전송중 암호화라고 합니다.
데이터는 네트워크를 이동하는 중에는 암호화되고, 송신자와 수신자 측에서만 이를 복호화할 수 있습니다
SSL은 '보안 소켓 계층'을 의미하고 연결을 암호화하는 데 사용합니다
TLS는 새로운 버전의 SSL로, '전송 계층 보안'을 의미합니다.
최근에는 TLS 인증서가 주로 사용되지만 여전히 SSL이라고 일반적으로 부릅니다.
SSL 인증서에는 만료 날짜가 있어서 주기적으로 갱신해 인증 상태를 유지해야 합니다
동작 원리
먼저 사용자가 HTTPS를 통해 접속합니다. HTTPS의 S는 SSL인증서를 통해 안전하게 접속하였다는 뜻입니다.
인터넷을 통해 우리 로드 밸런서에 접속하면, 로드 밸런서에서는 내부적으로 SSL 종료(SSL Termination)를 수행합니다. 백엔드에서는 HTTP로 EC2 인스턴스와 통신하고요 암호화되지 않은 상태로요, 하지만 VPC로 이동하는 트래픽은 프라이빗 네트워크를 쓰기 때문에 안전하게 보호됩니다
로드 밸런서는 X.509 SSL 또는 TLS 서버 인증서를 사용합니다. 이러한 인증서는 AWS Certificate Manager (ACM)와 같은 도구를 사용하여 관리됩니다.
HTTP 리스너를 구성할 때, 반드시 "HTTPS" 리스너를 선택하고 사용할 인증서를 지정해야 합니다.
ACM - AWS 인증서 관리자
SNI (서버 이름 지정)
SNI은 여러개의 SSL 인증서를 하나의 웹 서버에 로드해 하나의 웹 서버가 여러 개의 웹 사이트에 지원할 수 있게 해주는 프로토콜 입니다.
클라이언트가 접속할 호스트 이름을 지정하면, 서버는 해당 호스트에 맞는 SSL 인증서를 선택하고 트래픽을 암호화합니다. SNI는 클라이언트와 서버 간의 첫 번째 SSL 핸드셰이크 단계에서 작동합니다. 이 프로토콜은 ALB (애플리케이션 로드 밸런서), NLB (네트워크 로드 밸런서) 및 CloudFront와 함께 사용할 수 있습니다.
SSL 지원
CLB (클래식 로드 밸런서) : 클래식 로드 밸런서는 SSL 인증서를 지원하나 하나만 로드할 수 있습니다. 다중 호스트 이름을 지원하려면 여러 개의 클래식 로드 밸런서를 사용해야 합니다.
ALB (애플리케이션 로드 밸런서): ALB는 여러 개의 SSL 인증서를 지원하며 리스너를 여러 개 추가하여 다중 호스트 이름을 지원할 수 있습니다. 또한 SNI 프로토콜을 지원하여 클라이언트에게 호스트 이름을 지정하도록 허용합니다.
NLB (네트워크 로드 밸런서): NLB도 여러 개의 SSL 인증서를 지원하며 SNI 프로토콜을 사용하여 클라이언트에게 호스트 이름을 지정할 수 있습니다.
연결 드레이닝 (Connetion Draining)
연결 드레이닝 (등록 취소 지연): 웹 서버의 안전한 교체를 지원하는 기능
클래식 로드 밸런서를 사용할 경우에는 연결 드레이닝이라 부르고,
애플리케이션 밸런서나 네트워크 로드 밸런서를 사용하는 경우에는 등록 취소 지연이라고 부릅니다
연결 드레이닝은 인스턴스를 비활성화하거나 교체할 때 이전에 해당 인스턴스에 연결된 사용자에게 충분한 시간을 제공하는 방식입니다. 이를 통해 기존 연결 및 요청을 완료할 수 있도록 도와줍니다.
동작 원리
여러 개의 EC2 인스턴스가 있는 상황을 가정해 봅시다. 그 중 하나의 인스턴스를 드레이닝 모드로 설정합니다.
드레이닝 모드로 설정된 인스턴스에 이미 연결된 사용자는 충분한 드레이닝 시간을 얻게 되며, 이전 연결 및 요청을 완료할 수 있습니다.
인스턴스가 드레이닝 상태에 있다면, ELB (로드 밸런서)는 새로운 요청을 해당 인스턴스로 보내지 않습니다. 대신, 다른 정상 상태의 인스턴스와 연결을 수립합니다.
연결 드레이닝 파라미터 설정
연결 드레이닝은 파라미터로 설정할 수 있습니다. 기본적으로 연결 드레이닝 시간은 300초 (5분)으로 설정되어 있으며, 이를 0으로 설정하면 연결 드레이닝이 발생하지 않음을 의미합니다.
짧은 요청의 경우 (예: 1초 미만)에는 낮은 값을 설정할 수 있습니다. 이렇게 하면 인스턴스가 빠르게 드레이닝되고, 교체 작업 등이 빠르게 진행될 수 있습니다.
긴 요청 (예: 업로드 또는 오래 지속되는 요청)의 경우에는 더 높은 값을 설정하면 인스턴스가 지속적으로 활성 상태를 유지하고, 드레이닝 과정이 완료될 때까지 대기해야 합니다.
'AWS Cloud > solution architect' 카테고리의 다른 글
ASG (Auto Scaling Group) 개요 (2) | 2023.11.03 |
---|---|
AWS의 로드 밸런싱 전략 (스티키 세션/교차 영역 로드 밸런싱) (1) | 2023.11.01 |
로드벨런서 ALB/NLB/GWLM 개념 (4) | 2023.11.01 |
확장성 및 고가용성 / ELB (Elastic Load Balancing) 개요 (1) | 2023.10.31 |