본문 바로가기
node.js & nginx

7. Nginx 로드밸런싱

by 프갭 2023. 5. 19.

1) 로드밸런싱

서버에 가해지는 부하를 분산해주는 장치 또는 기술

*Scale up : 서버 자체의 성능을 높이는것
*Scale out : 여러 대의 서버를 두는것

로드 밸런싱은 Scale out과 연관된다.

2) 로드밸런싱의 종류

1. 하드웨어에서의 로드밸런싱
L4 로드 밸런싱 : OSI 7 계층 중 4계층 단에서 부하를 분산(IP,Port기준으로)
L7 로드 밸런싱 : OSI 7 계층 중 7계층 단에서 부하를 분산(4계층 기능 포함(IP,Port), Http,Url 기준)

2.소프트웨어에서의 로드밸런싱
Nginx : 오픈소스 소프트웨어,Health Check 유료버전에서만 지원
HAProxy : 오픈소스 소프트웨어,Health Check지원

3) Nginx  setting

ubunt 기준 /etc/nginx/nginx.conf 파일셋팅을 보면 include /etc/nginx/sites-enabled/* 항목이 있고
sites-enabled 폴더의 파일을 포함 시켜준다.

 /etc/nginx/sites-enalbled/ 폴더에 파일생성(아무이름이나 상관없음)
upstream ldtest { #<=====

#round-robin(디폴트) - 그냥 돌아가면서 분배한다. 아무것도 안적으면 round-robin
#hash - 해시한 값으로 분배한다 쓰려면 hash <키> 형태로 쓴다. ex)hash $remote_addr <- 이는 ip_hash와 같다.
#ip_hash - 아이피로 해싱해서 분배한다.
#random - 그냥 랜덤으로 분배한다.
#least_conn - 연결수가 가장 적은 서버를 선택해서 분배, 근데 가중치를 고려함
#least_time - 연결수가 가자 적으면서 평균 응답시간이 가장 적은 쪽을 선택해서분배
server localhost:5000;
server localhost:5001;
server localhost:5002;

}

erver {
	listen 80 default_server;
	listen [::]:80 default_server;
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html;
	server_name _;
	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}
	location /api/ {
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host @http_host;
		proxy_set_header X-NginX-Proxy true;

	  	proxy_pass http://ldtest/; #<====
		proxy_redirect off;
	}
}​

Load balancing methods(부하 부산 규칙)
round-robin(디폴트) - 그냥 돌아가면서 분배한다.
hash - 해시한 값으로 분배한다 쓰려면 hash <키> 형태로 쓴다. ex)hash $remote_addr <- 이는 ip_hash와 같다.
ip_hash - 아이피로 해싱해서 분배한다.
random - 그냥 랜덤으로 분배한다.
least_conn - 연결수가 가장 적은 서버를 선택해서 분배, 근데 가중치를 고려함
least_time - 연결수가 가자 적으면서 평균 응답시간이 가장 적은 쪽을 선택해서분배

 

Parameter

weight - 가중치를 둬서 더많이 가게 한다.

max_conns - 최대 연결 한계를 정한다

max_fails - 최대 실패 한계를 정한다. 최대 실패횟수에 도달하면 서버가 죽은것으로 간주한다.

fail_timeout - 시간을 정한다. 이 시간을 넘어서도 응답하지 않으면 서버가 죽은것으로 간주한다.

backup - 이 서버는 백업서버로 간주하고 다른 메인 서버가 죽었을때 동작한다. load balancing methods가 hash나 random일때는 무의미

down - 표시한 서버는 사용치 않는다.



 

반응형

'node.js & nginx' 카테고리의 다른 글

React + IIS + Node.js  (0) 2023.08.07
6. Node.js Worker Thread  (0) 2023.05.19
5. Nginx reverse proxy 설정  (0) 2023.05.18
4. 배포 및 pm2 서비스 등록  (0) 2023.05.17
3. Node.js 설치 방법 3가지  (0) 2023.05.17

댓글