Search
Duplicate
📒

[Docker Container] 10-4. Nginx 로드 밸런싱

상태
미진행
수업
Docker Container
주제
Nginx
연관 노트
3 more properties
참고

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
복사