서버에 가해지는 부하를 분산해주는 장치 또는 기술
한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리
각 서버가 최적의 상태를 유지할 수 있도록 관리
서버의 로드율 증가, 부하량, 속도저하 등을 고려해 적절히 분산처리하여 해결해주는 서비스
그렇다면 로드밸런서가 항상 필요할까?
여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이기 때문에 항상 필요한 것은 아니다.
이용 유저가 적을 때 : 로드밸런서 없이도 이용자가 서버를 원활히 이용 가능하기 때문에 필요X
이용 유저가 많을 때 : 이럴 경우 서버는 한정적이지만 유저가 몰려 해결이 필요!!
위와 같이 이용 유저가 많아 서버가 원활한 동작을 하기 어려울 때 해결 방법에 두 가지가 있다.
위 방법들 중 Scale-out 방법을 사용하려면 로드밸런서가 필요하다.
하드웨어 향상 비용보다 서버 한대 추가 비용이 더 저렴
여러 대의 서버를 이용해 중단하지 않고 서비스를 제공 가능
대신 여러 대의 서버에 균등하게 트래픽을 분산시켜주기 위해 로드밸런서가 필요
인터넷상에서 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화 해제 가능
서버에 들어온 요청을 순서대로 서버마다 균등하게 분배하는 방식
여러 대의 서버들이 동일 스펙이고, 서버와의 연결이 오래 지속되지 않을 때 사용하기 적합
각 서버마다 가중치를 매겨, 가중치가 높은 서버에 요청을 우선적으로 배분
주로 서버의 스펙이 상이하여 그에 맞는 트래픽을 전달해 주기 위한 환경에서 사용하기 적합
가중치는 수동으로 정할 수도 있고 동적으로 조정되기도 함
요청이 들어온 시점에 연결이 가장 적은 서버에 우선적으로 분배하는 방식
세션이 자주 길어지거나, 서버에 분배된 트래픽들이 일정치 않은 경우에 적합
서버의 현재 연결 상태와 응답시간을 모두 고려하여 트래픽을 배분
(응답시간 : 서버에 요청을 보내고 최초 응답을 받을 때까지 소요되는 시간)
가장 적은 연결 상태와 짧은 응답시간을 보인 서버에 우선적으로 배분하는 방식
클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식
사용자의 IP를 해싱 한 후 이것을 key로 두고 value 값으로 특정 서버의 IP를 매핑
(Hashing : 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑하는 것 또는 그런 함수)
사용자의 IP는 고정되어 있기 때문에 동일한 IP라면 항상 같은 서버로 연결 보장
단, 매핑된 서버가 오류가 나거나 Server pool에서 해당 서버가 제외될 경우엔 재할당