클라이언트가 많아져 서버가 원하는 결과를 응답해 줄 수 없을 때 해결 방법은 두 가지가 있다.
scale-up
: 하드웨어의 성능을 올린다. -고성능장비로 대체하는 것
- 비용대비 효과가 낮다.
scale-out
: 사용중비 장비를 대용량의 장비로 교체하는 것이 아니라, 같은 수준이거나 낮은 장비를 여러대로 재구성하는 방식 - 추가 확장도 용이하다.
- 설계 및 운영을 담당하는 엔지니어가 경험과 노하우가 있고 필요시 소프트웨어 코드 및 설계를 변경해야한다.
그의 반대 경우는 scale-Down
, scale-In
이다.
Scale-out의 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요합니다.
서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식
여러 대의 서버가 동일한 스펙을 가지고있고, 서버와의 연결이 오래 지속되지 않는 경우에 활용하기 적합
각 서버마다 가중치를 매기고 가중치가 높은 서버에 요청을 우선적으로 배분 가중치를 매기고 라운드로빈방시긍로 요청 전달
서버의 트래픽 처리 능력이 상이한 경우 사용
클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식
해싱해 로드분배
사용자가 항상 동일한 서버로 연결된다.
요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분합니다.
자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식
서버의 현재 연결 상태와 응답시간을 모두 고려하여 트래픽을 배분
가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식
*패킷: 네트워크 전송단위
L4와 L7 로드밸런서가 가장 많이 활용된다. L4부터 포트정보를 바탕으로 분산하는 것이 가능하다.
다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 써야함
L3 : IP주소를 바탕으로 로드밸런싱합니다.
L4 : Transport 계층을 사용, IP 주소와 포트 번호 부하 분산이 가능
L7 : Application 계층을 사용, URL 또는 HTTP 헤더에서 부하 분산이 가능