본문 바로가기
WEB

로드 밸런서 (Load Balance)

by jinukix 2021. 10. 2.

서버를 운영하다 보면 갑작스레 이용자들이 몰리거나, 서비스 확장 등 여러 가지 이유로 인해 더 많은 서버 용량과 성능을 필요로 할 때가 있습니다. 이런 경우 서버를 확장하기 위한 방법으로 스케일 업과 스케일 아웃이 있습니다.

스케일 업 (Scale-Up)

스케일 업은 기존의 하드웨어를 보다 높은 사양으로 업그레이드하는 것을 말합니다.

성능이나 용량 증가를 위해 서버에 디스크를 추가하거나 CPU, 메모리를 업그레이드시키는 것을 말합니다. 이처럼 하나의 서버의 능력을 증가하기 때문에 수직 스케일링이라고도 합니다. 서버를 추가하는 방법이 아니다 보니 여러 대의 서버를 두는 것보다 데이터 정합성 이슈에서 자유롭습니다.

스케일 아웃 (Scale-Out)

스케일 아웃은 장비를 추가해서 확장하는 방식을 말합니다.

기존 서버만으로 용량이나 성능에 한계가 있다면, 비슷한 사양의 서버를 연결해 추가된 분만큼 용량이 증가할 뿐만 아니라 병렬 컴퓨팅을 구현할 수 있습니다. 서버를 추가로 확장하기 때문에 수평 스케일링이라고도 불립니다.

이때 서버가 여러 대가 되기 때문에 데이터 정합성을 고려해야 하며 각 서버에 걸리는 부하를 균등하게 해주는 '로드 밸런싱'이 필수적으로 동반되어야 합니다.

로드 밸런서 (Load Balancer)

여러 대의 컴퓨터 자원에 작업을 균등하게 나누는 것을 로드밸런싱, 또는 부하분산이라고 부릅니다. 로드밸런싱을 담당하는 장비, 서버를 로드 밸런서라고 합니다.

로드 밸런서의 종류

로드 밸런서는 운영체제 로드 밸런서와 네트워크 로드 밸런서로 나뉘게 됩니다.

  • 운영체제 로드 밸런서: 물리적 프로세스 간 작업 스케줄링
  • 네트워크 로드 밸런서: 네트워크 작업 스케줄링

지금은 네트워크 로드 밸런서에 대해 알아보겠습니다.

네트워크 로드밸런서의 OSI 7 계층을 기준으로 종류가 나뉩니다.

상위 계층으로 갈수록 더욱 정교한 로드밸런싱이 가능하지만 그만큼 가격이 비쌉니다.

  • L2: Mac 주소 기반 로드 밸런싱
  • L3: IP 주소 기반 로드 밸런싱
  • L4: Port 기반 로드 밸런싱
  • L7: URL 기반 로드 밸런싱

로드 밸런서 주요 기능

NAT (Network Address Translation)

- 사설 ip주소를 공인 ip주소로 변경합니다.

 

DSR (Dynamic Source Routing protocol)

- 응답 시 목적지 주소를 로드밸런서가 아닌 클라이언트의 IP로 찾아가는 개념입니다.

 

Tunneling

- 데이터를 캡슐화해 연결된 상호 간에만 캡슐화된 패킷을 캡슐화를 해제할 수 있습니다.

로드 밸런싱 알고리즘

Round Robin (순차 방식)

- 요청을 순서대로 각 서버에 균등하게 분배하는 방식입니다.
서버 커넥션 수나 응답 시간에 상관없이 모든 서버를 동일하게 처리하며 다른 알고리즘에 비해 가장 빠릅니다.

 

Least Connection (최소 접속 방식)

- 서버에 연결되어 있는 Connection 개수만 가지고 단순 비교하여 가장 적은 곳에 연결합니다.

 

Weighted Least Connections (가중치 최소 접속방식)

- 서버에 부여된 Weight값을 기반으로 Connection 수의 개수와 같이 고려하여 할당합니다.

 

Fastest Response Time (응답 시간 방식)

- 가장 빨리 응답하는 서버에 이용자 요구를 연결하는 방법입니다.

응답 시간은 각 서버가 패킷 형태의 요구를 송수신하는데 걸리는 시간을 측정한 것입니다.

 

Source Hash Scheduling

- 사용자의 IP를 해싱한 후 그 결과에 따라 서버로 요청을 분배합니다. 사용자의 IP는 고정되어 있기 때문에 항상 같은 서버로 연결시킬 수 있습니다.

단순히 한 가지 알고리즘만 선택하지 않고 여러 개의 알고리즘을 조합해 사용할 수 있습니다.
예시로 Least Connection 알고리즘을 선택 후 동등한 수의 Connection이 존재할 경우 Round Robing을 선택하는 방식으로도 사용이 가능합니다.

 

참고: https://d2.naver.com/helloworld/284659

'WEB' 카테고리의 다른 글

OAuth 2.0  (0) 2021.10.04
JWT  (0) 2021.10.04
쿠키(Cookie), 세션(Session)  (0) 2021.10.01
HTTP 버전별 비교. (0.9, 1.0, 1.1, 2.0, 3.0)  (0) 2021.10.01
CORS  (0) 2021.10.01

댓글