로드밸런서의 사전적 정의는 다수의 중앙처리장치나 저장장치와 같은 컴퓨터 자원들에게 작업을 나눠주는 장치 이다.
클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 해주는 장치이기도 하다.
즉,
로컬에서 네트워크 서비스로 배포하는 과정 중 브라우저에서 DNS를 통해 레코드 유형을 확인한 후 VPC(DB 집합체)로 접속하게 되는데 이 때 여러 DB로 데이터가 나눠질 때 생가는 부하를 분산시켜주는 것이 Load Balancer (부하 분산기)이다.
기존에 트래픽에 대체 할 수 있는 방법에 대해 간단히 설명한 적 있었는데
대체 하는 방식에 따라 Scale up과 Scale out으로 나눠진다.
Scale up은 서버 자체의 성능을 확장시키는 방식으로 서버로 쓰이는 컴퓨터 자체 성능을 늘려주는 방법 (새로 더 좋은 CPU를 산다거나 메모리를 늘리는 등 일종의 현질이라고 생각하면 이해하기 쉽다...)
Scale out은 트래픽을 균등하게 여러 서버로 분산 시켜 트래픽을 해결하는 방식을 말하는데 로드밸런스도 이러한 방식에 속한다.
로드밸런서에도 많은 종류가 있지만 현재 L4로드 밸런서와 L7로드밸런서를 가장 많이 이용한다.
그 이유는 L4 로드밸런서부터 포트(Port)정보를 바탕으로 로드를 분산하는 것이 가능하기 때문이다. 한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야만 한다.
L4 로드밸런서는 네트워크 계층(IP, IPX)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산해준다. IP주소나 포트번호, MAC주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능하다.
반면 L7 로드밸런서의 경우 애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능하다.
즉 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능한 것이다.