로드밸런싱 이해하기
로드밸런싱이란?
로드밸런싱은 트래픽을 여러 대의 서버로 분산시키는 기술입니다. 트래픽이 많아져서 서버를 확장하게 될 경우, 서버의 성능을 증대시키는 scale-up 방식과 서버의 수를 늘리는 scale-out 방식이 있습니다. 두 가지 방법 중 scale-out 방식을 통해 많아지는 트래픽을 대처한다면, 모든 서버에 적절할 트래픽이 갈 수 있도록 해야할 것이고, 이때 이 역할을 하는 것이 로드밸런싱입니다.
분산 알고리즘
트래픽을 분산시키는 알고리즘은 여러 종류가 있습니다. 사용하고 있는 여러 서버의 상황이나 서비스 통신의 특징에 따라 적합한 분산 알고리즘을 사용해야합니다.
라운드 로빈 (Round Robin)
순서대로 배정하는 방식입니다. 서버들이 스펙이 비슷하고, 세션이 짧은 경우에 적절한 방법입니다.
가중 라운드 로빈(Weighted Round Robin)
각 서버에 가중치를 주고, 가중치가 높은 서버에 더 많이 배정하는 방식입니다. 서버의 스펙이 상이할 경우 적용하기 적합합니다.
IP 해시 (IP Hash)
클라이언트의 IP를 해싱하여 서버에 매핑하는 방식입니다. 이를 통해 같은 아이피는 같은 서버로 트래픽이 가도록할 수 있습니다.
최소 연결 (Least Connection)
연결 수가 적은 서버에 트래픽을 배분합니다. 균일하게 트래픽 수를 유지할 수 있습니다.
최소 응답 시간 (Least Response Time)
연결 시간이 적은 서버에 트래픽을 배분합니다. 전체적인 서비스의 응답 시간을 낮출 수 있습니다.
L4 로드 밸런싱 vs L7 로드 밸런싱
L4 로드 밸런싱은 IP 주소와 포트 번호를 기반으로 트래픽을 분배하고, L7 로드 밸런싱은 HTTP 헤더 정보를 기반으로 트래픽을 배분합니다. L4는 패킷 레벨의 정보만을 가지고 분산하기 떄문에 속도가 빠르고, 반면 L7은 Data/Message 레벨까지 봐야하기 때문에 속도가 느립니다. 하지만, L7는 더 구체적인 정보를 가지고 트래픽을 분산하기 때문에 더 섬세한 라우팅이 가능하고, 비정상적인 트래픽을 사전에 차단할 수 있습니다.
참조
https://www.nginx.com/resources/glossary/load-balancing/
https://post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903