코딩과로그

로드밸런서(Load Balancer) 본문

Devops

로드밸런서(Load Balancer)

피리음 2023. 4. 6. 23:00

서비스 규모가 커지면 서버 한 대로는 모든 서비스를 수용할 수 없게 된다. 또한 서버 한 대로 서비스를 제공할 수 있는 용량이 충분하더라도 서비스를 단일 서버로 구성하면 해당 서버의 애플리케이션, 운영체제, 하드웨어에 장애가 발생했을 때, 정상적인 서비스를 제공할 수 없어 문제가 된다.

서비스 가용성(availability)를 높이기 위해서라도 하나의 서비스는 보통 두 대 이상의 서버로 구성하는데 각 서버 IP주소가 다르므로 해당 서버의 IP들을 통일되게 관리하는 방법이 필요하다. 이러한 관리를 위해 로드 밸런서가 존재한다.

로드 밸런서에는 동일한 서비스를 하는 다수의 서버가 등록되고 사용자로부터 서비스 요청이 오면 로드 밸런서가 받아 사용자별로 다수의 서버에 요청을 분산시켜 부하를 분산한다.
로드 밸런서에는 클라이언트가 접근하기 위한 서비스를 위한 가상 IP를 하나를 가진다. 클라이언트는 각각의 서버 개별 IP에 접근하는 것이 아니라 이 로드 밸런서의 가상 IP에 접근한다. 로드 밸런서는 각 서버의 상태를 고려해 사용자의 요청을 분산하여 서버장애와 트래픽 관리를 제공한다.

 

계층별 로드 밸런서

로드 밸런서는 동작하는 계층에 따라 OSI 7계층 모델을 기준으로 보통 4계층과 7계층으로 나눌 수 있다.

L4 로드 밸런서

TCP, UDP 정보(특히 포트넘버)를 기반으로 로드 밸런싱을 수행한다. 이 때에 부하 분산과 더불어 TCP 계층에서의 최적화와 보안도 같이 제공된다. 최근 사용되는 로드 밸런서는 4계층과 7계층의 기능을 모두 지원한다.

 

L7 로드 밸런서

HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행한다.  이 때 HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산한다. 보통 이런 장비를 ADC(Application Delivery Controller)라고 부르며 리버스 프록시 역할을 한다. 장애 극복, 리다이렉션 등의 기능도 같이 수행한다.