안녕하세요! 임오군란과 민씨팀의 임입니다.
이번 주제는 로드 밸런서(Load Balancer)에 대한 주제로 포스팅하겠습니다.
로드 밸런서(Load Balancer)란?
로드밸런서에서 트래픽을 하나의 경로로 받아서 다수의 인스턴스에 분산하게 되어, 유저 입장에서는 각각의 인스턴스에 일일이 접근해서 관리하는 게 아닌 하나의 주소로 접속해서 관리할 수 있게 된다.
인스턴스가 떨어져 나가거나 오류가 나는 경우 로드밸런서가 health check, monitoring을 통해 트래픽을 전송하지 않고, 새로운 인스턴스가 등록되면 자동으로 분산을 시켜준다.
Elastic Load Balancing(ELB)란?
- 애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS서버 환경을 운용하는 데에 도움을 주는 서비스.
- EC2뿐 아니라 컨테이너(ECS), AWS Lambda 등으로 다양한 서비스와 연계하여 부하를 분산할 수 있다.
- ELB의 구성요소
- 리스너 : 프로토콜과 포트를 기반으로 요청을 받아 검사하고 이를 적절한 타깃으로 전달하는 기능을 수행, 최소 1개의 리스너가 필요하며 10개까지 설정 가능
- 규칙 : 리스너와 타겟 그룹 사이의 트래픽 분배를 위한 라우팅 규칙이다. 룰은 우선순위, 액션, 조건 등의 정보를 담고 있으며, 조건이 만족되었을 때, 지정된 액션을 수행하는 방식으로 작동한다. path, host, HTTP header, source IP, query parameter 등의 다양한 조건을 제공
- 대상그룹: 리스너가 전달한 요청을 처리하기 위한 부하분산 대상들의 모임. 대상 그룹에 등록된 EC2의 각종 정보(instance ID, Port, AZ)가 적혀있고, 이 EC2가 전달받은 요청을 처리할 수 있을지를 체크하는 헬스체크 기능과 모니터링 기능이 있다.
이번엔 ELB의 요청 처리 과정에 대해서 알아보겠습니다.
- ELB 요청 처리 과정
- 사용자가 로드밸런서에 접근하기 위해 Amazon DNS 서버에 로드밸런서의 도메인 해석을 요청
- Amazon의 DNS 서버가 로드밸런서 노드 IP 리스트를 사용자에게 전달
- 사용자는 전달받은 IP 중 하나를 선택하여 로드밸런서에 접근(+port 입력)
- 사용자는 로드밸런서의 (Port가 일치하는) 리스너에 접근하게 되며 리스너는 이 요청을 받아들여 적절한 대상그룹으로 전달
- 리스너로부터 전달받은 요청을 EC2가 처리한 후 다시 사용자에게 반환
다음은 AWS 로드밸런서의 유형과 과금 형태에 대해서 알아보도록 하겠습니다.
AWS 로드밸런서의 유형
- Application Load Balancer
- 로드 밸런서는 요청을 받으면 우선순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음, 규칙 작업의 대상 그룹에서 대상을 선택
- Layer 7인 애플리케이션 계층의 로드 밸런서를 지원하며, HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송
- SSL 적용이 가능
- Network Load Balancer
- TCP/UDP 트래픽을 로드밸런싱 해서 내부 인스턴스에 전달, 내부로 들어온 트래픽을 처리하고, 내부의 인스턴스로 트래픽을 전송함
- 4 계층인 전송 계층에서 작동하며 때문에 상위 계층인 Layer 5,6,7의 프로토콜을 이해하지 못함
- 하지만 NLB는 Layer 4 너머의 프로토콜을 이해할 필요가 없으니 TCP와 UDP만을 이해하여 ALB보다 시스템 리소스 소모가 적을 수밖에 없다.
유형별 차이점
ALB의 IP는 유동적, NLB는 고정 IP
ALB적용 시 SSL을 적용 가능하고 NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용
ALB IP주소 + 포트번호 + 패킷 내용을 보고 스위칭, NLB는 IP + 포트번호를 보고 스위칭
NLB network 계층까지만 확인하기 때문에 application 계층까지 확인하는 ALB보다 빠르다
ALB는 클라이언트가 웹 화면을 요청하는 상황(HTTP, HTTPS 프로토콜을 사용해서 애플리케이션 레벨에 접근할 때), NLB는 내부로 들어온 트래픽을 처리하고, 내부의 인스턴스로 트래픽을 전송할 때
과금 형태
- Application Load Balancer - ALB가 실행된 시간 또는 부분 시간, 그리고 시간당 사용된 로드 밸런서 용량 단위(LCU)에 대해 요금이 부과
- Network Load Balancer - NLB가 실행된 시간 또는 부분 시간 그리고 시간당 Network Load Balancer에서 사용된 Network Load Balancer 용량 단위(NLCU)에 대해 요금이 부과
- LCU란? 애플리케이션 로드 밸런서가 트래픽을 처리하는 차원(새 연결, 활성 연결 및 대역폭) 중 하나에서 최대로 소비된 리소스를 정의
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] Neptune (0) | 2022.07.07 |
---|---|
AWS GuardDuty (0) | 2022.07.07 |
Amazon VPC CNI EKS 추가 기능 업데이트 방법 3가지 (0) | 2022.07.06 |
AWS SSH 접속 (0) | 2022.07.04 |
[AWS] Bastion (0) | 2022.07.03 |
댓글