본문 바로가기
devops 공부/네트워크

로드밸런서(Load Balancer)란?

by 글쓰는 개발자. 2022. 5. 18.

서비스를 운용하면서 점점 사용자가 늘어나면 서버 한 대로는 모든 서비스와 모든 사용자의 리소스를 처리할 수 없다. 또한 서버를 한대로 구성했을 때 서버에 문제가 발생하면 가용성이 떨어져 큰 위기를 맞이하게 될 수 있다. 하나의 서비스는 보통 두 대 이상의 서버로 구성하는데 각 서버의 IP주소가 다르므로 사용자가 서비스를 호출할 때는 어떤 IP로 서비스를 요청할지 결정해야 한다. 사용자에 따라 호출하는 서버의 IP가 다르면, 특정 서버에 장애가 발생했을 때, 전체 사용자에게 영향을 미치지 않아서 장애 범위는 줄어들지만 여전히 부분적으로 서비스 장애가 발행하게 된다. 그런 문제로 서비스 가용성을 높이기 위해서 로드밸런서를 사용한다.  로드 밸런서는 동일한 서비스를 하는 다수의 서버가 등록되고 사용자로부터 서비스 요청이 오면 로드 밸런서가 받아서 사용자별로 다수의 서버에 요청을 분산하여 부하를 분산한다. 로드밸런서에는 서비스를 위한 가상의 IP를 하나 제공하고, 사용자는 각 서버의 개별 IP주소가 아닌 동일한 가상 IP를 통해 각 서버로 접근한다. 이 외에도 로드 밸런서는 각 서버의 서비스 상태를 체크하여 서비스가 가능한 서버로만 사용자의 요청을 분산하므로 서버에서 장애가 발생하더라도 기존 요청을 분산하여 다른 서버에서 서비스를 제공할 수 있다. 또한 로드 밸런서는 동작하는 계층에 따라서 OSI 7 계층 모델을 기준으로 4 계층과 7 계층으로 나눌 수 있다.

3 계층

일반적인 로드 밸런서가 동작하는 방식. TCP, UDP 정보를 기반으로 로드밸런싱을 수행한다. 부하는 분산하는 기능뿐만 아니라, TCP 계층에서의 최적화와 보안 기능을 함께 제공한다. 그러나 최근 사용되는 로드 벨런서는 4 계층과 7 계층의 기능을 모두 지원하기 때문에 4계층 로드밸런싱만 제공하는 경우는 찾기 어렵다.

7계층

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

댓글