sol 개발 블로그 로고
Published on

AWS ELB 정리 (3)

Authors
  • avatar
    Name
    Chan Sol OH
    Twitter

목차

SSL과 TLS

SSL 인증서는 클라이언트와 로드 밸런서 사이에서 트래픽이 전송되는 동안 암호화되도록 한다. 오직 발신자와 수신자만 해독할 수 있도록, 연결을 암호화하는 SSL은 보안 소캣 계층이고, TLS는 전송 계층 보안으로 SSL의 새로운 버전. TLS 인증서를 SSL 인증서라고도 한다. 이런 인증서를 보증하는 업체를 Certificate Authorities(CA)라고 한다.

로드 밸런서가 SSL 인증을 하는 방법

유저가 HTTPS 통신을 Load Balancer와 한다. 내부적으로 로드 밸런서는 SSL 종료하고 EC2 인스턴스와 HTTP 통신을 하게된다.

로드밸런서는 SSL 인증서를 로딩하고 ACM 인증서나 개인적인 인증서를 올려서 사용할 수 있다. HTTPS 리스너를 설정할 때 기본 인증서를 설정해야하고, 인증서 목록을 추가해 여러 도메인을 지원할 수 있다. 클라이언트는 SNI를 통해 접근하는 호스트 이름을 지정할 수 있다.

추가적인 실습 내용은 AWS HTTPS 연결 설정을 참고하면 된다.

Server Name Indication (SNI)

한 로드밸런서가 여러 SSL 인증서를 가지고 여러 웹 사이트를 지원하게 하려면 SNI로 클라이언트가 어떤 웹 사이트로 갈건지 호스트 이름을 정할 수 있다.

SNI는 클라이언트가 SSL 핸드 쉐이크할 때, 대상 서버의 호스트 이름을 지정하는 새로운 프로토콜이다. 그럼 서버는 클라이언트가 요청한 호스트 이름에 맞는 인증서를 가지고 암호화한다.

새로운 프로토콜이기 때문에 최신 로드밸런서인 ALB, NLB,그리고 CloudFront에서 지원한다.

aws SNI 라우팅 도표

Connection Draining

CLB에서 사용하면, Connection Draining이라 부르고, ALB나 NLB에서 사용하면, 등록 취소 지연 (Deregistration Delay)라고 부른다.

인스턴스가 등록 취소 혹은 비정상 상태에 있을 때, 인스턴스에 어느 정도 유예기간을 주고 다시 활성 요청을 완료할 수 있도록 한다. 그러도고 활성 못하면 등록 취소(de-registering)가 되고 그 인스턴스로는 새로운 요청을 보내지 않는다. 드레이닝 시간 (등록 취소 지연 시간)은 파라미터로써 1~3600초 사이로 설정할 수 있다. 보통 요청 시간의 길이와 드레인 파라미터 길이는 비례해서 설정하면 좋다.