로드 밸런싱 알고리즘(Load Balancing Algorithm)
- L4 스위치의 기능인 로드밸런싱을 수행하기 위한 알고리즘 정리.
Hashing
- 새 연결(TCP/UDP)시 각 클라이언트에 대한 Hashing key를 가지고 경로 지정.
- Hashing key : 클라이언트의 IP + Port 또는 IP 주소로 결정.
- Hashing key가 변하지 않는다면, 동일 서버로 계속 접속.
- 만일 해당 Server에서 서비스 오류 나거나 실 서버가 서버 그룹에서 제외시 재할당.
- 실 서버가 서버 그룹에서 제외됬을 때만 할당하는 알고리즘은 Minimum Missies (Min Miss).
- 유저가 많아졌을 때는 Load Balancing이 공평하게 이루어지는 편. 완전한 5:5는 달성하지 못함.
- 세션 유지가 필요한 사이트(인증, 보안 등)에서 많이 사용함.
장점
Round-robin
- 실서버로 세션을 순차적으로 맺어주는 방식.
- 현재 서버가 가진 세션 수에는 관여하지 않음.
- 실서버의 마지막 번호를 가진 서버로부터 출발하여 순차적으로 세션을 맺도록 해주는 로드밸런싱 기법.
- 모든 클라이언트에게 동일한 취급, 실 서버와 경로는 동일 처리량 보유해야 함.
- 만약 다르다면 Weighted round-robin 방식을 사용.
- 가중치를 다르게 하여, 처리량이 많은 쪽에 높은 가중치를 두어, 처리량을 늘리는 방식.
- 서버 로드 밸런싱(SLB)에서 많이 사용하는 알고리즘 방식.
Least Connection
- 실서버의 열린 세션 수를 고려하여, 적은 쪽에 세션을 맺어주는 방식
- 연결 수가 가장 적은 서버에 네트워크 연결방향을 설정.
- 동적으로 변하는 요청에 대해 부하 분산을 가능하게 함.
- 서버 처리 능력을 고려하여 가중치를 부여할 시 Weighted Least Connection 방식이 됨.
- 가중치 설정시, Weight 값에 따라 각 서버당 연결되는 세션 수가 정규화됨.
- 트래픽을 고루 분산할 수 있음.
- 단, 가중치와 연산이 추가되어 메모리 사용이 높아짐.
- 경로 보장이 안되는 단점이 있음.
Response Time
- 서버와 통신을 하며 응답시간에 대한 학습을 통해, 응답시간이 빠른 쪽에 더 많은 세션을 보내주는 방식.
- 각 서버들간의 서로 상이한 자원과 커넥션에 부수되는 시간과 데이터 양이 서로 다른 환경에서 사용하기 좋음.
- 세션처리에 대한 시간을 조절할 수 있어서, 전체적인 서버 안정화를 유도할 수 있음.
Bandwidth Based Load balancing
- 스위치와 연결된 서버들과의 대역폭을 고려하여 로드밸런싱 세션을 보내는 방식.
- 예를 들어, 서버가 3대이며 한 쪽은 기가, 다른 두대는 10/100으로 구성시, 기가쪽에 많은 트래픽을 보내어 부하를 분산시키는 방식.