반응형
Load Balancer란?
서버의 트래픽(요청)을 분산시키는 장치
우리가 컴퓨터에 너무 많은 프로그램을 켜 놓으면 느려지고, 최악의 경우 블루스크린이 뜨며 작동을 중지하듯, 서버 또한 너무 많은 요청을 받으면 부담이 됩니다. Load Balancer는 부하(Load)를 밸런싱(Balance)해 주는 장치를 말합니다.
네이버 홈페이지를 생각해 보면, 하루에 네이버를 찾는 사람이 1000만명은 될 겁니다. 이 모든 요청은 1개의 서버가 받는다면 네이버 홈페이지는 터지는게 일상일테지만, 로드 밸런서가 한 요청은 춘전의 데이터센터에 보내고, 한 요청을 서울로 보내는 식으로 분산시킨다면 터지지 않을 것입니다.
그렇다면 로드 밸런서는 어떤 식으로 트래픽을 분산시킬까요?
흔히 쓰이는 알고리즘
Round Robin | 라운드 로빈 | 돌아가면서 차례대로 |
Least Connections (LC) | 현재 연결 수가 가장 적은 거 부터 | |
Least Time (LT) | 가장 시간이 덜 걸릴 거 같은 거 부터 | |
Hash | 해시 | 정의된 Hash에 따라 배분 |
IP Hash | IP 해시 | IP 주소의 Hash에 따라 배분 |
Random with 2 Choices | 랜덤으로 2개 고르고 연결 수 더 적은 거 |
크게 2가지 카테고리로 나눌 수 있습니다.
- 로드 벨런서가 알아서 자신만의 기준을 가지고 분배하는 경우 (라운드 로빈, 해시)
- 서버의 현재 상황에 따라 분배하는 경우 (LC, LT)
해시 알고리즘의 경우, 해시 함수를 잘 설정하면 같은 유저는 같은 서버에 요청을 보내게 할 수 있어 Session으로 유저 정보를 관리하고 있을 경우 자주 쓰입니다.
꼭 1가지 알고리즘을 골라서 쓴다기보다 여러가지 알고리즘을 혼합해서 쓰는 경우가 많습니다.
대표적인 Cloud의 Load Balancer
대부분의 Cloud 서비스에는 모두 로드 밸런서가 있습니다. 그 중 대표격인 AWS의 로드 밸런서에 관한 내용은 아래의 링크에서 확인하실 수 있습니다.
반응형
'👨💻 프로그래밍 > Architecture' 카테고리의 다른 글
Redis, RabbitMQ, Kafka를 각각 Message Queue로 사용할 때의 장단점 (1) | 2023.09.30 |
---|---|
🔒 분산 Architecture에서 Redlock으로 Lock 걸기 (0) | 2023.09.28 |
MSA 환경에서 Circuit Breaker를 쓰는 이유, 그럼에도 발생하는 문제 Bulkhead로 해결하기 (0) | 2023.09.24 |
Spring Cloud Config로 Config 서버 구성하기 (0) | 2023.05.02 |
마이크로서비스(MSA)를 쓰는 이유 (0) | 2023.03.28 |