
로드밸런서
서버에 가해지는 부하(로드)를 분산(밸런스) 해주는 장치 또는 기술을 의미한다. 서버와 클라이언트 사이에 위치하고 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각 서버가 최적의 퍼포먼스를 낼 수 있도록 한다. 로드밸런서를 제대로 이해하기 위해서 Scale-up과 Scale-out을 이해해야 한다.
Scale-up
물리적 장비 하드웨어를 통해 서버 성능을 향상시킨다.
Scale-out
기존과 동일하거나 성능이 조금 낮은 서버를 2대 이상 증설하여 운영한다.
로드밸런싱 알고리즘
2대 이상의 서버를 증설하는 Scale-out 방식을 사용하면 하나의 서버에 트래픽이 몰리지 않도록 분배하는 로드밸런싱을 해야 한다. 로드밸런싱 알고리즘의 종류는 대표적으로 5가지가 존재한다.
1. 라운드로빈
현대 컴퓨터가 쓰는 스케줄링 우선순위 스케줄링의 일종이다. 각 프로세스는 동일한 할당 시간을 주고 그 시간 안에 끝나지 않으면 다시 준비 큐의 뒤로 가는 알고리즘이다. 서버에 들어온 요청을 순서대로 돌아가며 배정하고 클라이언트의 요청을 순서대로 분배하므로 여러 대의 서버가 동일한 스펙을 갖고 있고 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합하다.
2. 가중 라운드로빈 방식
각 서버마다 중요도를 매기고 중요도가 높은 서버에 클라이언트 요청을 우선적으로 분배한다. 주로 서버의 트래픽 처리 능력이 상이할 경우 사용되는 부하 분산 방식이다. A 서버의 중요도가 10이고 B는 5라고 가정하면 가중 라운드로빈 방식으로 A에게 10개 B에게 5개의 요청을 전달한다.
3. IP 해시 방식
요청 클라이언트 IP 주소를 특정 서버로 매핑하여 요청을 처리한다. 사용자의 IP를 해싱 하여 로드를 분배하므로 사용자가 항상 동일한 서버로 연결되는 걸 보장할 수 있다.
4. 최소 연결 방식
요청이 들어온 시점에 가장 연결이 적은 서버에 우선적으로 트래픽을 분배한다. 세션이 길어지거나 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합하다.
5. 최소 리스폰타임
서버의 현재 연결 상태와 응답시간을 모두 고려해 트래픽을 분배한다. 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 트래픽을 분배하는 방식이다.
etc
3대의 서버를 로드밸런서를 이용해 운영한다고 가정하면 로드밸런서가 뻗지 않을 경우 동시에 2대의 서버가 뻗어도 서비스를 유지할 수 있다. 반대로 생각해 보면 한대의 로드밸런서가 뻗으면 모든 서버가 뻗는다. 그래서 보통 로드밸런서를 2대를 운영한다. 하나는 액티브 모드 나머지 하나는 스탠바이 모드다. 이러한 운영 방식을 로드밸런싱 이중화라고 한다.
'네트워크' 카테고리의 다른 글
Nginx (0) | 2022.08.11 |
---|---|
쿠키와 세션 (0) | 2022.08.04 |
Proxy (0) | 2022.08.01 |
HTTP 비연결성 무상태성 (0) | 2022.07.30 |
그런 REST API로 괜찮은가 (0) | 2022.07.19 |