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 |
댓글