📖 로드밸런싱
1️⃣ 로드밸런싱은 무엇이고 왜 필요 할까?
데이터가 방대해지면서 아무리 좋은 서버라고 해도 이를 수용하는데 있어 무리가 있습니다. 그에 따라 규모가 큰 서비스를 제공하는 회사의 경우 여러 대의 서버를 두고 동일한 데이터를 저장하여 수많은 트래픽을 효과적으로 분산합니다.
수 많은 트래픽을 여러 대의 서버로 분산해줄 수 있는 기술이 없다면 트래픽은 결국 한대의 서버로 집중 될 것입니다. 그렇게 된다면 서비스 속도가 엄청나게 느려질 것이고 최악의 경우 서버가 마비되어 서비스 자체를 제공할 수 없게 될 것입니다.
이러한 경우에 대비하여 여러 대의 서버로 트래픽을 분산 시켜줄 무엇인가가 필요한데 이 기술이 바로 로드 밸런싱입니다.
이렇게 로드 밸런서를 사용하면 수백만명 의 사용자를 동시에 처리하고 정확한 텍스트, 비디오, 이미지 및 기다 데이터를 빠르고 안정적인 방식으로 각 사용자에게 반환하는 데 큰 도움을 줍니다. 간단하게 교통 경찰이라고 생각하시면 쉽습니다.
❗❓️ 항상 필요할까?
로드 밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술입니다. 따라서 서비스 제공 초기, 즉 한대의 서버로도 감당이 가능하다면 굳이 로드 밸런서를 구성할 필요가 없습니다. 서비스 규모가 커지면서 트래픽이 점점 증가하거나 티켓 예매처럼 특정 시간에 트래픽이 몰리는 시스템이라면 고려해봐야 합니다.
2️⃣ 로드 밸런싱 기법
로드 밸런싱에는 두 가지 주요한 접근 방식이 있습니다. 동적 로드 밸런싱은 각 서버의 현재 상태를 고려하고 이에 따라 트래픽을 분산하는 알고리즘을 사용합니다. 정적 로드 밸런싱은 이러한 조정 없이 트래픽을 분산합니다.
정적 로드 밸런싱 알고리즘
📌 라운드로빈 방식(Round Robin Method)
- 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식
- 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합
📌 가중 라운드로빈 방식(Weighted Round Robin Method)
- 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분
- 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식
- 예를 들어 A라는 서버가 5라는 가중치를 갖고 B라는 서버가 2라는 가중치를 갖는다면, 로드 밸런서는 라운드로빈 방식으로 A 서버에 5개 B 서버에 2개의 요청을 전달합니다.
📌 IP 해시 방식(IP Hash Method)
- 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식
- 사용자의 IP를 해싱해(Hashing, 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑하는 것, 또는 그러한 함수) 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장
동적 로드 밸런싱 알고리즘
📌 최소 연결 방식(Least Connection Method)
- 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분
- 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식
📌 최소 응답 시간 방식(Least Response Time Method)
- 서버의 현재 연결 상태와 응답 시간(Response Time, 서버에 요청을 보내고 최초 응답을 받을 때까지 소요되는 시간)을 모두 고려하여 트래픽을 배분
- 가장 적은 연결 상태와 가장 짧은 응답 시간을 보이는 서버에 우선적으로 로드를 배분하는 방식
3️⃣ L4 로드 밸런싱과 L7 로드 밸런싱
로드 밸런싱에는 L4 로드 밸런싱과 L7 로드 밸런싱이 가장 많이 활용됩니다.
그렇다면 대체 L4로드 밸런싱과 L7로드 밸런싱이 무엇일까요?
L4, L7은 각각 Layer 4(전송 계층) 프로토콜과 Layer 7(응용 계층) 프로토콜의 헤더를 부하 분산에 이용하기 때문에 붙은 접두사입니다. 모든 요청을 L4 혹은 L7 로드 밸런서가 받아 서버들에게 적절히 나누어 줍니다.
⭐️ L4 로드 밸런서
L4 로드 밸런서는 네트워크 계층(IP, IPX)이나 전송 계층(TCP, UDP)의 정보(IP주소, 포트번호, MAC주소, 전송 프로토콜)를 바탕으로 로드를 분산합니다.
⭐️ L7 로드 밸런서
L7 로드 밸런서는 애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능합니다. 쉽게 말해 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능한 것 입니다. URL에 따라 부하를 분산시키거나, HTTP 헤더의 쿠키 값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있습니다.
또한 L7 로드 밸런서의 경우 특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있습니다.
🎾 비교
📚 Reference
'CS' 카테고리의 다른 글
CORS / SOP (1) | 2024.02.04 |
---|---|
쿠키와 세션 (1) | 2024.01.27 |
DNS / 웹 통신 흐름 (3) | 2024.01.13 |
OSI 7 계층 (2) | 2024.01.07 |