> 백엔드 개발 > PHP 튜토리얼 > nginx 로드 밸런싱을 구성하는 방법은 무엇입니까? nginx 로드 밸런싱 구성 방법

nginx 로드 밸런싱을 구성하는 방법은 무엇입니까? nginx 로드 밸런싱 구성 방법

不言
풀어 주다: 2023-04-03 12:20:01
원래의
5484명이 탐색했습니다.

nginx 로드 밸런싱을 구성하는 방법에는 여러 가지가 있습니다. 여기서는 Nginx 로드 밸런싱을 구성하는 두 가지 방법을 소개하겠습니다. 다음으로 nginx 로드 밸런싱의 일반적인 구성 방법을 자세히 살펴보겠습니다.

nginx는 백엔드 웹 서버(apache, nginx, tomcat, weblogic) 등에 대해 역방향 프록시를 수행합니다.

여러 백엔드 웹 서버에서는 파일 공유 및 데이터베이스 공유 세션 공유 문제 파일 공유는 nfs, 공유 저장소(fc, ip 저장소) + redhat GFS 클러스터 파일 시스템, rsync + inotify 파일 동기화 등을 사용할 수 있습니다. 소규모 클러스터는 더 많은 nfs를 사용합니다. 단일 서버에 정보를 게시하고 rsync+inotify를 사용하여 여러 서버에 동기화하는 것이 좋습니다.

소규모 클러스터, 단일 고성능 데이터베이스(예: Zhiqiang 듀얼 쿼드 코어, 32/ 64/ 128G 메모리)이면 충분합니다. 대규모 클러스터의 경우 mysql에서 공식적으로 제공하는 클러스터 소프트웨어를 사용하거나 keepalived+lvs를 사용하여 읽기와 쓰기를 분리하여 Mysql을 생성할 수 있습니다. Cluster

session 공유 문제는 nginx가 ip_hash 폴링 방식을 채택하면 각 IP가 일정 시간 내에 백엔드 서버에 고정되므로 세션 공유 문제를 해결해야 합니다. 반대로
IP에 대한 요청이 폴링되고 분산됩니다. 여러 서버에서 세션 공유 문제를 해결하려면 nfs를 사용하여 세션을 공유할 수 있습니다. 머신 크기가 상대적으로 클 경우 일반적으로 memcache에 세션을 작성하는 방법을 사용합니다.

여기서는 백엔드 웹 서버 구성 방법에 대해 논의하지 않습니다. 백엔드 서버는 apache, nginx, tomcat, lighthttp 등일 수 있습니다. 프런트엔드는 백엔드가 무엇인지 상관하지 않습니다.

먼저 나중에 호출할 수 있도록 새 A Proxy.conf 파일을 만듭니다. 여러 클러스터를 구성하는 경우 공용 매개변수를 파일에 기록한 다음 계속 포함하는 것이 좋은 방법입니다)
vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;#🎜 🎜#proxy_set_header 호스트 $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header buffer_size 90;
proxy_connect_timeout 90;
proxy_read_timeout 90;#🎜🎜 #proxy_buffer_size 4k;# 🎜🎜#proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
pr oxy_temp_file_write_size 64

여기서는 nginx의 두 가지 로드 밸런싱 방법인 폴링 가중치에 대해 설명합니다. , 1:1 로드) 및 ip_hash(세션 문제를 해결하기 위해 고정된 백엔드 서버에 동일한 IP가 할당됩니다)
이 구성 파일은 nginx.conf에 작성할 수 있습니다(하나만 있는 경우). 웹 클러스터) 여러 개의 웹 클러스터가 있는 경우 가상 호스트 형태로 가상 호스트에 작성하는 것이 가장 좋습니다. 여기서는 nginx.conf
에 작성합니다. 첫 번째 구성: 가중치 폴링, 가중치는 다음과 같습니다. 이 예에서는 할당이 1:2입니다.

 upstream lb {                server 192.168.196.130 weight=1 fail_timeout=20s;
                server 192.168.196.132 weight=2 fail_timeout=20s;
 }
 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }
로그인 후 복사

두 번째 구성: ip_hash 폴링 방법, 서버에 가중치를 부여할 수 없음#🎜🎜 #
upstream lb {                server 192.168.196.130 fail_timeout=20s;
                server 192.168.196.132 fail_timeout=20s;
  ip_hash;
 }
 server {
                listen 80;
                server_name safexjt.com www.safexjt.com;
  index index.html index.htm index.php;
  location / {
                        proxy_pass http://lb;
   proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
   include proxy.conf;
                }
 }
로그인 후 복사

방법 2 nginx 로드 밸런싱은 ip_hash
1을 기반으로 세션 붙여넣기를 구현합니다.Polling(기본값)
각 요청은 시간순으로 하나씩 다른 백엔드 서버에 할당됩니다. 백엔드가 다운되면 자동으로 제거됩니다.

upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
로그인 후 복사

2. 가중치 지정

폴링 확률 지정 가중치는 접속률에 비례하며 백엔드 서버 성능이 고르지 않을 때 사용됩니다.


upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
로그인 후 복사

3. IP 바인딩 ip_hash

각 요청은 접속 IP의 해시 결과에 따라 할당되므로 각 방문자는 백엔드 서버에 고정된 접속 권한을 갖게 됩니다. 세션 문제를 해결할 수 있습니다.


upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
로그인 후 복사

4.fair(제3자)

요청은 백엔드 서버의 응답 시간에 따라 할당되며, 응답 시간이 짧은 요청이 먼저 할당됩니다.


upstream backserver {
server server1;
server server2;
fair;
}
로그인 후 복사

5, url_hash(제3자)

액세스 URL의 해시 결과에 따라 요청을 분산하여 각 URL이 동일한 백엔드 서버로 연결되도록 하고, 백엔드 서버는 캐싱할 ​​때 더 효과적입니다.


upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
로그인 후 복사

로드 밸런싱을 사용해야 하는 서버에 추가

proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}
로그인 후 복사

max_fails: 허용되는 요청 실패 횟수의 기본값은 1입니다. 최대 개수가 초과되면, Proxy_next_upstream 모듈에서 정의한 오류가 반환됩니다.
fail_timeout:max_fails 실패, 일시 중지 시간

관련 권장 사항:

여러 Nginx 구현 로드 균형 잡힌 방식

php 인터뷰 질문 7: nginx 로드 밸런싱 구성 방법

위 내용은 nginx 로드 밸런싱을 구성하는 방법은 무엇입니까? nginx 로드 밸런싱 구성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿