DevOps/AWS

ELB(일래스틱 로드 밸런서)

prden 2023. 2. 13. 22:29

ALB, NLB

 

1. ALB (Application Load Balancer)

Application Load Balancer는 OSI 7계층에서 일곱 번째 계층인 애플리케이션 계층에서 작동한다. 

로드 밸런서는 요청을 받으면 우선순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음, 규칙작업의 대상 그룹에서 대상을 선택한다. 

-  HTTP, HTTPS, WebSoket을 활용하는 로드밸런서라는 것이 가장 큰 특징이다.

-  ALB는 HTTP Header, 요청 Method 등을 이용해 사용자의 요청을 적절한 대상그룹으로 라우팅(부하분산)할 수 있으며 규칙에 우선순위를 두고 차례대로 적용할 수 있다. 

- HTTP 헤더에는 표준헤더, 요청헤더, 응답헤더, 일반 헤더가 존재한다. 요청 상황, 응답 상황에 따른 다른 헤더를 가지며 그 헤더에는 다양한 정보가 들어있다. 사용자는 헤더에 자신의 정보를 담아 서버에 전송할 수 있고 서버는 헤더에 담긴 정보를 보고 사용자의 요구사항을 알 수 있다.

- ALB는 HTTP 헤더를 라우팅 규칙에 활용하게 되는데 그중 요청헤더와 일반헤더를 활용한다.

- 요청헤더를 이루는 주요 항목은 Host-Header(호스트 헤더), Cookie Header, User-agent Header, Accept Header 등으로 사용자의 상태 정보나 사용자가 사용하는 디바이스의 정보를 담을 수 있다. 

- 일반 헤더에 속하는 대표적인 헤더는 X-Forwarded-For 로 사용자의 IP를 헤더에 담아 서버에 전달한다. 

- 로드밸런싱(부하 분산) 방식은 RoundRobin으로 요청을 EC2 인스턴스에 순서대로 할당한다. 

- SSL 인증서 탑새 가능 : 사용자와 서버가 HTTPS를 이용하여 암호화 통신을 하고자할 때 SSL 인증서를 이용한 인증, SSL Handshake를 통한 협상을 통해 암호화된 메시지를 전달해야 한다. 이 작업은 리소스 소모가 커서 서버에 큰 부담이 된다. on-premise에서는 L4스위치가 그 작업을 대행하여 사용자와의 암호화 통신을 실시한다. 클라우드에서는 ALB가 이런 기능을 보유하고 있다. 사용자와 EC2인스턴스가 암호화 통신을 해야할 경우 EC2인스턴스의 부담을 줄이기 위해 ALB가 대신하여 SSL 인증서를 이용해 암호화 통신을 한다.

 

1-1.  ALB의 구성요소(리스너, 규칙, 대상그룹)

하나의 ALB는 여러개의 리스너를 거느릴 수 있고, 리스너 안에 다수의 규칙을 보유할 수 있으며 하나의 리스너는 여러 대상그룹을 거느릴 수 있다.

1. 리스너 : 사용자에게서 요청을 받아들여 이 요청을 처리할 적절한 대상그룹으로 전달하는 리스너

2. 규칙 : 어느 대상그룹에 전달할지 판단하는 기준이 되는 규칙

3. 대상그룹 : 요청을 처리할 EC2가 모여있는 대상그룹

https://velog.io/@ragnarok_code/AWS-Application-Load-Balancer-ALB%EC%9D%98-%ED%8A%B9%EC%A7%952

 1) 리스너 : ALB의 리스너는 HTTP와 HTTPS에 해당하는 요청을 받아들이며, HTTP 관련 정보를 해석할 수 있다. 

그 정보를 기반으로 어느 대상그룹에 요청을 전달할 것인지 규칙을 세우고 라우팅을 실시한다. 

HTTP/HTTPS 리스너는 공통적으로 자신의 이름에 해당하는 리스너ID, 대상그룹에 사용자의 요청을 건네줄 판단 기준이 되는 규칙을 보유한다. 또한, ALB의 HTTPS리스너는 암호화된 HTTP 요청을 받아들여 수행하기 때문에 이를 충족하기 위해 자신의 신원을 보증해줄 SSL 인증서와 주고받을 데이터의 암호화 방안인 보안 정책을 추가로 보유한다. 

 

2) 규칙 : 사용자의 요청을 받은 리스너가 헤더에 담긴 HTTP 관련 정보를 해석한 뒤 그 정보를 기반으로 어느 대상그룹에 전달할지 판단하는 기준이 되는 요소

전달대상, 리디렉션 대상, 고정 응답 반환

 

3) 대상그룹 : 사용자의 요청을 처리할 EC2의 집합이다. 

 

https://velog.io/@ragnarok_code/AWS-Application-Load-Balancer-ALB

 

AWS Application Load Balancer (ALB)의 특징1

Application Layer / 응용 계층사용자가 UI로 접하는 응용 프로그램과 관련된 계층으로 HTTP, FTP, DHCP, SMTP, DNS등이 있습니다. 여기에 속한 프로토콜들은 어떠한 방법으로든 사용자와 직접 접하게 됩니다

velog.io

https://velog.io/@ragnarok_code/AWS-Application-Load-Balancer-ALB%EC%9D%98-%ED%8A%B9%EC%A7%952

2. NLB(Network Load Balancer)

 

 

https://aws.amazon.com/ko/elasticloadbalancing/features/#compare

 

네트워크 트래픽 분산 - Elastic Load Balancing - Amazon Web Services

 

aws.amazon.com