로드밸런서 개념정리(정의, 방법, 알고리즘 종류 )
로드밸런서(Load Balancer)란?
로드밸런스는 분산 처리 시스템에서, 대용량 트래픽이 예상되는 요청 및 서버에 대해 서버의 부하를 줄이기 위해 사용하는 장치나 기술을 뜻한다.
규모가 작은 서비스일 경우 서버 하나로 처리가 가능하겠지만, 서비스의 규모가 커지거나 클라이언트 수가 늘어날수록 한 대의 서버만으로 처리할 수 없을 정도의 트래픽이 발생할 것이다.
이 때, 늘어난 트래픽에 대처하는 방법으로는 scale-up 과 scaple-out이 있다.
시스템 성능 향상의 두가지 방법
Scale-up
서버 자체의 용량이나 성능을 높이는 방법. CPU나 RAM등 하드웨어의 사양을 높이는 것을 말한다.
Scale-out
서버의 개수를 늘리는 방법.
장단점 비교
Scale-up | Scale-out | |
장점 | - 관리의 용이성 - 기존 시스템에서의 성능 향상 |
- 서버를 무한하게 확장 가능 - 부하 분산 - 장애 발생 시 다른 서버로 대체 가능 |
단점 | - 장애 발생 시 전체 시스템에 영향 - 물리적 한계에 따른 확장의 제한 |
- 복잡한 설정과 관리 - 서버 간 통신 비용 - 시스템 일관성 유지가 어려움 |
사용 상황 | - (리소스가 많이 필요한) 고성능 어플리케이션일 때 | - 고가용성과 확장성이 중요한 경우 |
비용 | - 성능 증가에 따른 비용 증가 폭 큼일반적으로 비용 부담이 큰 편 | - 비교적 저렴한 서버를 사용하므로, 일반적으로 비용 부담이 적음 - 유지관리에 추가 비용 발생 |
방법 | - CPU 업그레이드 - RAM 업그레이드 |
- 클라우드 서버 확장 - 웹서버 클러스터링 |
- 웹서버 클러스터링 : 여러 대의 웹서버를 네트워크로 연결하여 하나의 시스템처럼 동작하게 하는 기술
로드밸런서의 역할
로드밸런서는 위의 Scale-out 방식을 통해 분산 처리 시스템을 구축했을 때, 클라이언트와 서버 그룹 사이에 위치해 클라이언트의 요청(트래픽)을 여러 대의 서버에 고르게 분배하는 역할을 맡는다.
로드밸런서 구축 방식
로드밸런서는 하드웨어적 장치일 수도 있고, 프로그램을 설치하여 구축할 수도 있다.
우선 종류에 대해서만 간단히 알아보고 자세한 내용 다음에 포스팅하도록 하겠다.
하드웨어(물리적) | 소프트웨어 | |
특징 | - 안정성 및 성능이 우수 - 설치 및 유지보수 비용이 높음 |
- 유연성과 확장성이 높응ㅁ - 비용이 저렴하거나 무료 |
사용 환경 | - 대규모 데이터 센터 - 대용량 트래픽 환경(대기업 등) |
- 클라우드 기반 환경 - DevOps 및 CI/CD 파이프라인. |
종류 및 도구 | - L2, L4, L7 등 | - Nginx,, HAProxy, ELB 등 |
로드밸런싱 알고리즘
라운드 로빈 방식
서버에 들어온 요청을 순서대로 서버에 분배.
서버들이 동일 스펙을 가지고 있을 때 적합
가중 라운드 로빈 방식
서버들의 성능이 서로 다를 때, 각 서버의 처리량을 기준으로 가중치를 매겨 분배
고스펙 서버의 경우 더 많은 요청을 처리하고, 저스펙 서버는 상대적으로 적은 요청을 처리하게 됨.
IP해시 방식
클라이언트 ip주소를 수학적으로 계산하여 개별 서버에 매핑.
각 클라이언트는 언제나 동일한 서버로 연결되는 것을 보장
장점인 이유?
- 세션 지속성 보장
- 만약 사용자가 다른 서버로 연결된다면 다른 서버에서 세션 정보를 찾기 못해 로그인 상태가 사라지는 등의 불편함이 발생할 수 있다. IP해시방식을 쓴다면 세션 정보를 같은 서버에서 계속 처리할 수 있도록 보장하여 사용자의 로그인 상태를 유지할 수 있음.
- 서버 간 데이터 일관성 유지
- 만약 다른 서버로 연결된다면 동일한 사용자 정보를 각 서버의 세션에서 중복해서 관리하게 됨 -> 불필요한 부하
이 외에도 다른 방식들이 있지만 지금은 알고리즘에 따라 적용할 수 있다는 사실만 알고 넘어가도록 하겠다.