반응형
Load Balancer(로드밸런서) 란?
로드밸런서는 서버에 가해지는 부하(로드)를 분산(밸런싱) 해주는 장치 또는 기술이다.
클라이언트와 서버풀(분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 낼 수 있도록 한다.
Scale-out 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분사해주는 로드밸런싱이 반드시 필요하다.
OSI 계층에서 상위(7계층 Application Layer)에서 사용되는 장비는 하위 계층의 장비가 갖고 있는 기능을 모두 가지고 있으며, 상위 계층으로 갈수록 더 정교하게 로드밸런싱 할 수 있다.
→ 즉, L7 Load balancer가 L4 Load balancer보다 더 정교하다.
L4(Transport Layer)란?
- Transport 계층(전송 계층)에서 IP정보와 Port 정보를 참조해서 라우팅한다.
- TCP/UDP 포트 정보를 바탕으로 한다.
- 데이터 안을 보지 않고 패킷 레벨에서만 트래픽을 분산하기 때문에 속도가 빠르고 효율이 높다.
- L7보다 덜 섬세하지만 비교적 저렴하다
- 네트워크 계층(IP)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산시킨다.
- 주로 Round Robin 방식을 사용한다.
*참고) VIP : Virtual IP (가상 아이피)
L7(Application Layer)란?
- TCP/UDP 포트 정보와 함께 HTTP의 URI, 쿠키 정보 등을 바탕으로 한다.
HTTP 헤더, 쿠키와 같은 사용자의 요청을 기준으로 특정 서버로 트래픽을 분산하는 것이 가능하다 - Application 계층(응용 계층)에서 로드밸런싱 한다.
상위 계층에서 로드를 분산하기 때문에 훨씬 더 섬세한 라우팅이 가능하다. - 패킷 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능하다.
- URL에 따라 부하를 분산시키거나 HTTP헤더의 쿠키값에 따라 분산하는 등 클라이언트의 요청을 세분화해서 서버에 전달 할 수 있다.
- 특정 패턴을 지닌 바이러스를 감지해 네트워크를 보호 할 수 있다.
- DoS/DDoS와 같은 비정상 트래픽을 사전에 필터링 할 수 있어 서비스 안정성이 높다.
로드 밸런서 알고리즘
- Round Robin : 순차 방식
요청을 순서대로 각 서버에 균등하게 분배한다.
서버 커넥션 수나 응답 시간에 상관없이 모든 서버를 동일하게 처리하며 처리 알고리즘 중 가장 빠르다. - IP 해시 방식
클라이언트의 IP 주소로 매핑하여 요청을 처리하는 방식이다.
사용자의 IP를 해싱해 로드를 분산하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다. - Least Connection : 최초 접속 방식
서버에 연결되어 있는 Connection 개수가 가장 적은 곳에 연결한다. - Weight Least Connections(가중치 최소 접속 방식)
서버에 부여된 Weight 값을 기반으로 Connection 수와 같이 고려하여 할당한다. - Fastest Response Time(응답 시간 방식)
가장 빨리 응답하는 서버에 연결한다.
응답 시간은 각 서버가 패킷 형태의 요구를 송수신하는데 걸리는 시간을 측정한 것이다. - Adaptive(최소 대기 방식)
Open 또는 Pending 중인 커넥션을 적게 가지고 있는 서버로 연결한다.
마무리하며
운영에 서버를 올리면 보통 2대 이상을 올리기 때문에 기본적으로 Load balancer를 사용한다.
지금 쓰는 switch는 IP 해시방식으로 부하분산을 제대로 못하고 있어서 아쉽다. 로드 밸런서를 사용한다고 항상 드라마틱하게 분산되는 건 아닌 것 같으니 더 찾아보고 적절하게 사용하는게 좋을 것 같다.
Software 부하분산 시스템으로는 HAProxy가 있다.
지금은 서버 2대를 active/active 상태로 사용하고 있는데 예전에는 active/passive로 사용하는 서버를 운영한 적도 있다.
References
반응형
'IT 기본지식' 카테고리의 다른 글
Distributed system(분산시스템)이란? 이점 및 고려사항 (0) | 2022.02.16 |
---|---|
고가용성 High Availability이란? (0) | 2022.02.16 |
Micro Service Architecture(MSA)의 장단점 (0) | 2022.02.15 |
CI/CD 에 대한 간단 정리 (0) | 2022.02.14 |
3-Tier Architecture 정의 및 구성방식 (0) | 2022.02.13 |
댓글