[ELB & ASG] Sticky session 및 SNI, Connection Draining 등 Etc.
Sticky Sessions
- 같은 사용자가 항상 같은 인스턴스에 redirection 되게 하려면 stickiness 기능을 활용하면 됨
- cookie 정보를 활용하여 stickiness 할 수 있음
- 이런 기능을 허용하게되면 인스턴스에 접근하는 로드 균형에 문제가 생길 수 있음. 특정 인스턴스에만 편중될 수 있기 때문
Cross-zone 로드밸런싱
- AZ 에 상관없이 퍼져있는 AZ 내 인스턴스를 대상으로 로드밸런싱
- ALB (Application Load Balancer)
-> 디폴트로 Cross-zone 로드밸런싱을 사용하도록 되어있음 (타겟그룹 단위에서 기능을 비활성화 시킬 수 있음)
-> AZ 데이터 사이의 비용부과는 없음
- NLB (Network Load Balancer) & GLB (Gateway Load Balancer)
-> 디폴트로 Cross-zone 로드밸런싱 disabled 처리
-> AZ 데이터 사이에 비용 발생
SSL / TLS
- SSL : 클라이언트와 LB 사이의 트래픽이 이동 중 암호화되도록 함
- TLS : SSL 의 new 버전으로 트랜스포트 계층 보안을 의미
SNI (Server Name Indication)
- 하나의 웹 서버가 여러개의 SSL 인증서 로딩문제를 해결하도록 해줌
- Client 로 하여금 처음 SSL handshake 할 때 타겟팅 할 호스트명을 지적하도록 요구하고 서버는 맞는 인증서를 찾아 리턴하는 구조
- 오직 ALB & NLB, CloudFront 에서만 작동함. CLB 에서는 작동하지 않음
SSL 을 지원하는 로드밸런서
- CLB
-> 오직 하나의 SSL 인증서만 지원
-> 여러개의 인증서와 함께 여러개의 호스트명을 처리하기 위해서는 여러개의 CLB 가 필요
- ALB
-> 여러개의 SSL 인증서를 처리할 수 있음 (SNI 를 통해서)
- NLB
-> 여러개의 SSL 인증서를 처리할 수 있음 (SNI 를 통해서)
Connection Draining
- 두 가지 이름 -> Connection Draining (CLB 사용 시 이름) OR De-registration Delay(ALB, NLB 사용 시 이름)
- 인스턴스가 연결해제 되는 중이거나 unhealthy 라고 되어있는 상태에서 실행중인 요청건을 완료하기 위해인스턴스에게 조금의 시간을 주는 컨셉
- 인스턴스가 Drained 상태라면 ELB 는 인스턴스에게 요청보내는 것을 멈춤
- 인스턴스가 Drained 상태가 되면 ELB 는 새로운 유저의 연결에 대해 Drained 상태가 아닌 다른 인스턴스에 새로운 연결을 함
- Drain 기능을 활용하면 인스턴스를빠르게 빼낼 수 있고 오프라인으로 이동하거나 대체할 수 있음