위키득계정 ↗
기술

부하분산

부하분산기술
영문명
Load balancing
주요 대상
요청과 계산 작업
대표 목적
부하 집중 완화와 가용성 향상
관련 조건
서버 상태와 공유 자원의 병목
부하분산은 여러 처리 자원에 작업을 나누어 한곳에 요청이 몰리는 것을 줄이는 방식이다. 웹 서비스에서는 여러 서버로 요청을 배정하는 데 쓰이며, 성능과 가용성은 배분 규칙뿐 아니라 전체 시스템 구조에 달려 있다.

작업을 나누는 입구

같은 서비스를 처리할 서버가 여러 대라면 들어온 요청을 어느 서버로 보낼지 정해야 한다. 부하분산기는 이를 위한 접점이 될 수 있다. 요청을 나누더라도 저장소나 외부 서비스가 하나의 병목으로 남으면 전체 성능이 비례해 늘지는 않는다.

배정 규칙의 차이

순서대로 돌아가며 배정하거나 현재 연결 수를 고려하는 등 여러 방식이 있다. 한 요청을 처리하는 비용이 모두 같지 않으므로 요청 개수가 같다고 실제 부하도 같지는 않다. 서버의 성능 차이와 작업 특성에 맞는 규칙이 필요하다.

상태와 장애

응답하지 못하는 서버에 계속 보내지 않으려면 상태 확인이 필요하다. 단순히 포트가 열린 것과 서비스가 필요한 작업을 정상적으로 처리하는 것은 다를 수 있다. 상태 확인과 제외, 복귀의 기준이 실제 서비스 동작에 맞아야 한다.

자료의 일관성과 세션

요청을 다른 서버로 보내도 사용자의 상태와 처리 결과가 유지되어야 한다. 세션과 파일을 한 서버에만 보관하면 배정이 바뀔 때 문제가 생길 수 있다. 부하분산은 이러한 상태 관리와 장애 복구까지 자동으로 해결하는 기능은 아니다.

관련 문서

프록시 서버 / 웹 서버 / 병렬 컴퓨팅 / 데이터베이스