[2023 기능대회 준비] 16. ELB 개념 깎기

Yohan_05·2023년 3월 23일
1
post-thumbnail

ELB란?

로드밸런서는 부하를 적절하게 분배해주는 장치임. AWS 에서는 ELB라는 이름으로 로드밸런서를 제공함. 이 시스템은 자동으로 로드 밸런싱으로 제공하며 시스템이 서버가 죽지 않도록 알아서 관리함.

트래픽 분산, 자동 확장, 인스턴스의 상태를 자동 감지해서 오류가 있는 시스템 배제, 사용자 세션을 특정 인스턴스에 고정, SSL 암호화 지원, SSL의 경유지로 ELB를 사용하는 경우에 SSL 처리에 따른 부하를 ELB가 수용하게됨. 등등..

사용자는 로드 밸런서 포트를 통해 웹에 접속. 사용자가 접속하면 로드 밸런서는 적당한 웹서버에 분배해 주는데 이때 로드 밸런서는 Instance Port를 통해 웹서버와 통신함. 그래서 80:3000 이런식으로 통신할 수 있게됨.

오토스케일링과 함께

오토스케일링 : 트래픽을 몰릴때 인스턴스(컴퓨터) 수를 자동으로 늘림으로서 서버 사이즈를 조절해 서비스가 원할히 유지되게 하며, 또한 트래픽이 적을 경우 인스턴스를 감소시켜 비용 낭비를 막아주는 서비스.

ELB: 트래픽을 오토 스케일링을 통해 늘린 수만개의 인스턴스들에게 부하(트래픽)을 분산하는 서비스.

즉 이 둘은 서로 유기적으로 연동되어 ec2 등의 서비스를 효과적으로 이용할 수 있게함.

ELB 구성요소

리스너

프로토콜과 포트를 기반으로 요청을 받아 검사하고 이를 적절한 타켓으로 전달하는 기능을 수행함. 모든 로드밸런서는 최소 1개 이상의 리스너를 필요로 하며, 최대 10개까지 설정할 수 있음.

  • ssl 인증서를 게시하여 ssl offload를 실시 할 수 있음.

규칙

리스너 룰은 리스너와 타겟그룹 사이의 트래픽 분배를 위한 라우팅 규칙에 해당함. 룰은 우선순위, 액션, 조건 등의 정보를 담고 있으며, 조건이 만족되었을 때, 지정된 액션을 수행하는 방식으로 작동.

리스터 룰에는 path, host, http header, source IP, query parameter 등의 다양한 조건 제공.

대상그룹

리스너가 전달한 요청을 처리하기 위한 부하분산 대상들의 모임. 즉 ELB가 분산을 할 때 어디로 분산할 것이냐를 모든 그룹들을 말함.

그렇기에 대상 그룹에 등록된 EC2의 각종 정보가 적혀있고, 이 EC2가 전달받은 요청을 처리할 수 있는지 체크하는 헬스 체크 기능, 요청 처리가 가능한 ec2를 확인할 수 있는 모니터링 기능도 있음.

ELB 기능 & 특징

고가용성 및 탄력성

  • ELB는 접속 부하에 맞게 자동적으로 리소스의 확장/축소를 수행함. 따라서 대량의 요청이 발생해도 ELB로 인해 병목 현상이 발생하는 상황은 거의 일어나지 않음.
  • 또한 수신되는 트래픽을 단일 가용영역 또는 여러 가용영역의 Amazon EC2 인스턴스 전체에 걸쳐 배포할 수 있음.

도메인 기반 접근

  • ELB는 지속적으로 IP 주소가 바뀌며 IP 고정 불가능하여 따라서 항상 도메인 기반으로 사용해야함.
  • 자동 확장/축소 함에 따라 ELB 접근 IP가 변경되므로, ELB에 접근하는 경우 ELB를 생성할 때 생성되는 도메인 이름을 사용해 접근하도록 구성해야함.
  • 즉 DNS 이름을 통해 접속하면 ELB는 요청을 대상 그룹에 전달할 것이고 대상 그룹의 ec2가 요청을 처리하는 것임.

ELB의 요청 처리 과정

  1. 사용자가 로드밸런서에 접근하기 위해 Amazon의 DNS 서버에 로드밸런서의 도메인 해석을 요청
  2. Amazon의 DNS 서버가 로드밸런서 노드 Ip 리스트를 사용자에게 전달
  3. 사용자는 전달받은 IP 중 하나를 선택하여 로드밸런서에 접근
  4. 사용자는 로드밸런서의 리스너에 접근하게 되며 리스너는 이 요청을 받아들여 적절한 대상그룹으로 전달
  5. 리스너로부터 전달받은 요청을 EC2가 처리한 후 다시 사용자에게 반환.

Health Check(상태검사)

  • 직접 트래픽을 발생시켜 인스턴스가 살아있는지 체크하는 기능이다.
  • 타겟 그룹에 대한 헬스체크를 통해 정상적으로 작동하는 인스턴스로만 트래픽을 분배한다.
  • 인스턴스의 상태를 자동으로 감지해서 오류가 있는 시스템은 배제 -> 인스턴스가 회복되면 LB가 자동으로 감지하여 인스턴스에 트래픽을 보내줌.

종류

ALB

OSI 7계층에서 Application Layer를 다루는 로드밸런서임.
사용자와 직접 접하는 계층으로서 브라우저를 통해 특정 사이트들에 들어갈 수 있도록 사용하는 프로토콜 역시 Application Layer에 속한다. (Http/https)

  • path, port에 따라 다른 대상그룹들에게 라우팅이 가능하다.

NLB

OSI 7계층에서 네 번쨰 계층에 해당하는 Transport Layer를 다루는 로드밸런서 = TCP와 UDP를 사용하는 요청을 받아들여 부하분산을 실시함.

단, HTTP가 아닌 하위 Layer인 TCP Layer에서 처리하므로 HTTP 헤더를 해석하지 못한다.

로드 밸런서가 연결 요청을 받으면 기본 규칙의 대상 그룹에서 대상을 선택하고 리스너 구성에 지정된 포트에서 선택한 대상에 대한 TCP 연결을 열려고 시도한다.

고성능을 요구하는 환경에서의 부하분산에 적합한 솔루션임. 낮은 레이턴시로 초당 수백만 건의 요청을 처리할 수 있으며 갑작스러운 트래픽 증대 및 변화에도 최적화 되어있음.

ALB와 비교하여 NLB의 가장 큰 특징은 EIP로 공인 IP를 고정할 수 있다는 점임.

profile
안녕하세요 DevOps 엔지니어로 현업에서 활동중인 요한이라고 합니다.

1개의 댓글

comment-user-thumbnail
2023년 3월 24일

도움이 많이 되었습니다!😊

답글 달기