Skip to Content
Suffering builds character

4. 부하분산 전략

Nginx에서 제공하는 대표적인 부하분산 메커니즘은 다음과 같음

1. 라운드 로빈, Round-robin

Nginx에서 기본 옵션으로 설정된 부하분산 기법으로, 업스트림 풀에 지정된 서버의 순서에 따라 균일하게 요청을 분산

weight 옵션을 통해 서버 간 가중치 조절 가능

nginx.conf
upstream node_servers { server localhost:3001 weight=1; server localhost:3002 weight=2; # 3001보다 더 많은 요청을 처리 }

가중치는 가중치 평균의 통계적 확률에 따라 계산됨

2. 리스트 커넥션, Least connection

Nginx와의 연결 횟수가 적은 서버를 먼저 활용하는 방식

nginx.conf
upstream node_servers { least_conn; # 리스트 커넥션 알고리즘 적용 server localhost:3001 server localhost:3002 }

3. 리스트 타임, Least time

Nginx+(유료 버전)에서만 활용 가능

리스트 커넥션 알고리즘과 마찬가지로 가장 적은 업스트림 서버로 요청을 전달하지만, 추가적으로 응답 시간이 가장 빠른 서버를 우선하여 전달하는 방식

nginx.conf
upstream node_servers { least_time; # 리스트 타임 알고리즘 적용 server localhost:3001; server localhost:3002; }

그 외 캐시가 있을 확률이 높은 서버로 요청을 전달하고 싶을 경우에는 제네릭 해시(hash), Nginx가 랜덤으로 분산할 경우에는(random) 등의 알고리즘도 있음

Last updated on