참고
Upstream
NOTE
server 설정에서 NGINX가 받아들인 요청을 어떤 서버로 흘려보낼지 결정한다!
Nginx의 리버스 프록시를 이용하기 위해 사용된다.
http {
server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
##
upstream phpserver {
## LB method
# least_conn, ip_hash;
## fastcgi 를 사용하는 경우
#server unix:/var/run/php/php7.0-fpm.sock;
#server fpm-server-ip:9000;
## proxy 를 사용하는 경우
server was1-ip:1234;
server was2-ip:1234;
}
Bash
복사
Load Balancing method
NOTE
긴 국제선 비행을 마치고 막 착륙했고, 400명의 다른 여행객들과 함께 분주한 입국장에 들어섰습니다.
이 사람들이 서버의 요청이라 생각하자
•
이제 입국장에서 가이드를 고용하고, 그들의 임무는 관리 데스크의 여러 대기열 중 하나의 합류하도록 지시하는 것이다! (가이드를 로드 밸런서로 생각)
◦
여행자는 각각 가능한 빨리 요청이 처리되길 원한다.
◦
출입국 관리 데스크(백엔드)는 서버로 각각 백로그를 요청한다.
◦
가이드는 각 요청에 가장 적합한 서버를 선택하여 효율성을 극대화 한다.
◦
최상의 서버를 선택하기 위해 가이드에서 사용할 수 있는 ㅂ아법은 분산 알고리즘에 해당한다.
Round robin Load Balancing(라운드 로빈 LB)
NOTE
자 데스크를 돌아가면서 줄서세요~
upstream samplecluster {
server 111.111.111.111:8080;
server 222.222.222.222:8080;
server 333.333.333.333:8080;
}
Bash
복사
기본으로 RR이 적용됨
•
가장 기본적인 접근방식이며, 처음 여행자는 대기열 A, 다음은 B, 이렇게 반복된다.
Least Connections Load Balancing(최소 연결 LB)
NOTE
나는 가장 줄이 적은곳으로 가겠다
upstream samplecluster {
least_conn;
server 111.111.111.111:8080;
server 222.222.222.222:8080;
server 333.333.333.333:8080;
}
Bash
복사
LC 적용
•
가이드는 각 대기열을 보다가 여행자를 가장 짧은 대기열로 보낸다!
Least Time Load Balancing(최소시간 LB)
NOTE
흠.. 지금보니깐 B 데스크보다 C 데스크가 더 빨리 처리해주는거 같아 저기로 갈래
•
지난 10분동안 얼마나 많은 여행자가 처리된지 계산해서 대기열로 안내한다!
•
해당 알고리즘은 NGINX Plise의 지표의 추가 데이터에 의존하기 때문에 NGINX PLUS에서만 사용이 가능하다..
server 지시어의 파라미터들
NOTE
server 지시어에 아래와 같은 파라미터를 설정해서 디테일한 로드 밸런싱을 설정할 수 있다!
weight
NOTE
특정 서버의 가중치를 설정할 수 있다!
upstream samplecluster {
server 111.111.111.111:8080 weight=3;
server 222.222.222.222:8080;
server 333.333.333.333:8080;
}
Bash
복사
•
가중치가 설정된 서버는 배수만큼 트래픽을 더 많이 분배받는다!
◦
ex) 111.111.111.111 서버는 다른 서버에 비해 3배 더 많이 받는다.
max_conns
NOTE
서버와의 최대 동시 연결수를 제한하는 파라미터다!
upstream samplecluster {
server 111.111.111.111:8080 max_conns=256;
server 222.222.222.222:8080;
server 333.333.333.333:8080;
}
Bash
복사
256개까지만 허용
max_fails
NOTE
서버와의 연결이 주어진 횟수만큼 실패했다면, 다른 서버로 트래픽을 보내기 위한 파라미터이다.
upstream samplecluster {
server 111.111.111.111:8080 max_fails=5;
server 222.222.222.222:8080;
server 333.333.333.333:8080;
}
Bash
복사
5번 실패하면 ㅂㅂ
fail_timeout
NOTE
서버와의 연결된 시간만큼 기다렸는데 연결되지 않으면, 다른서버로 트래픽을 보낸다!
upstream samplecluster {
server 111.111.111.111:8080 fail_timeout=30;
server 222.222.222.222:8080;
server 333.333.333.333:8080;
}
Bash
복사