nginx 부하 균형 및 캐 시 서버 설정
9007 단어 Nginx
nginx 부하 균형 설정 은 매우 간단 하여 7 층 의 부 하 를 실현 할 수 있 으 며, 일부 경량급 방문 량 의 사이트 에 대해 서 는 여전히 실 용적 입 니 다.
1. 구조
: CentOS 6.6 x86_64
nginx : 1.10.2 #
:
server 10.0.18.146 80
web server 10.0.18.144 80 10.0.18.145 80
2. 설정 과정
세 대의 서버 에 nginx 의 yum 원본 을 설정 합 니 다.
#cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
yum nginx
#yum install nginx -y
세 대의 서버 에 파일 열기 수 를 설정 합 니 다.
#tail -5 /etc/security/limits.conf
# End of file
* soft nofile 65535
* hard nofile 65535
* soft nproc 10240
* hard nproc 10240
백 엔 드 서버 두 대 설정: 10.0.18.144, 다음 과 같 습 니 다:
#cat /etc/nginx/nginx.conf # ,
events {
use epoll; # epoll
worker_connections 10240; #
}
#cat /etc/nginx/conf.d/default.conf # server_name
server {
listen 80;
server_name nginx1.test.com;
………………
}
:
#cat /usr/share/nginx/html/index.html # 18.144,
…………
Welcome to nginx 18.144!
…………
nginx
#service nginx start
물리 적 컴퓨터 에 도 메 인 이름 을 추가 하 는 것 은 다음 과 같 습 니 다.
hosts --->C:\Windows\System32\drivers\etc\hosts
10.0.18.144 nginx1.test.com
10.0.18.145 nginx2.test.com
10.0.18.146 balance.test.com
브 라 우 저 에 접근 하면 다음 과 같 습 니 다.
백 엔 드 두 대의 server: 10.0.18.145 를 설정 합 니 다. 방법 은 18.144 와 마찬가지 로 군말 하지 않 고 브 라 우 저 에서 다음 과 같이 방문 합 니 다.
3. 부하 균형 서버 설정
프로필 먼저 보기:
#cat nginx.conf
events {
use epoll;
worker_connections 10240;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
upstream backend { # server, 1
server 10.0.18.144 weight=1;
server 10.0.18.145 weight=1;
}
server {
listen 80;
server_name balance.test.com;
location / {
proxy_set_header Host $host; #
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering on; #
proxy_pass #
}
}
}
nginx
#service nginx start
브 라 우 저 에서 접근http://balance.test.com테스트 진행:
브 라 우 저 를 계속 새로 고침 하면 18.144 와 18.145 가 돌아 가면 서 해당 하 는 것 을 볼 수 있 습 니 다. 다음 과 같 습 니 다.
이렇게 해서 nginx 의 부하 균형 체 제 를 실현 하 였 습 니 다. 매우 간단 합 니 다!
2. nginx upstream 의 몇 가지 방식:
1. 폴 링
폴 링 은 upstream 의 기본 배분 방식 입 니 다. 즉, 모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 로 돌아 가 며 분 배 됩 니 다. 만약 에 특정한 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다. 다음 과 같 습 니 다.
upstream backend {
server 192.168.1.101:80;
server 192.168.1.102:8080; # , OK
}
2、weight
폴 링 의 강화 판 은 폴 링 비율 을 지정 할 수 있 고 weight 와 방문 확률 은 정비례 할 수 있 으 며 주로 백 엔 드 서버 설정 이 다른 장면 에서 다음 과 같다.
upstream backend {
server 192.168.1.101 weight=1;
server 192.168.1.102 weight=2; # , web
}
:
upstream backend {
server 192.168.1.101:80 weight=1;
server 192.168.1.102:8080 weight=2;
}
3、ip_hash
모든 요청 은 ip (즉, Nginx 의 사전 서버 나 클 라 이언 트 IP) 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 그러면 모든 방문객 이 백 엔 드 서버 를 고정 적 으로 방문 하여 session 일치 문 제 를 해결 할 수 있 습 니 다. 다음 과 같 습 니 다.
upstream backend {
ip_hash;
server 192.168.1.101;
server 192.168.1.102;
}
4、fair
fair 는 말 그대로 백 엔 드 서버 의 응답 시간 (rt) 에 따라 공정 하 게 요청 을 분배 합 니 다. 응답 시간 이 짧 으 면 rt 작은 백 엔 드 서버 의 우선 배분 요청 입 니 다. 다음 과 같 습 니 다.
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
fair;
}
5、url_hash
와 iphash 는 유사 하지만 url 에 접근 한 hash 결과 에 따라 요청 을 할당 하여 모든 url 을 같은 백 엔 드 서버 로 지정 합 니 다. 주로 백 엔 드 서버 가 캐 시 일 때 사용 하 는 장면 에서 다음 과 같 습 니 다.
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
hash $request_uri;
hash_method crc32;
}
,hash_method hash , ,server weight 。
주의: maxfails 와 failtimeout 은 일반적으로 연결 되 어 사용 되 며, 서버 가 fail 에 있다 면timeout 시간 내 max 출현fails 차 연결 에 실 패 했 습 니 다. 그러면 Nginx 는 끊 었 다 고 생각 하고 failtimeout 시간 내 에 요청 하지 않 습 니 다. failtimeout 기본 값 은 10s, maxfails 기본 값 은 1 입 니 다. 즉, 오류 가 발생 하면 서버 가 끊 겼 다 고 생각 합 니 다. max 를fails 를 0 으로 설정 하면 이 검 사 를 취소 하 는 것 을 의미 합 니 다. 다음 과 같 습 니 다.
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
3. nginx 역방향 프 록 시 설정 웹 캐 시 서버 구현
nginx 는 squid 와 유사 한 웹 캐 시 기능 을 지원 합 니 다. 즉, 웹 페이지 를 url 인 코딩 에 따라 하 드 디스크 에 저장 하 는 것 입 니 다. 많은 자료 에 따 르 면 nginx 의 안정성 과 속 도 는 Squid 보다 못 하지 않 고 성능 적 으로 nginx 가 다 중 핵 cpu 에 대한 이용 도 Squid 를 초과 합 니 다.또한 nginx 는 부하 균형 도 지원 합 니 다. 이것 은 단기 적 으로 갑자기 방 문 량 을 견 디 지 못 하 는 사이트 에 있어 매우 편리 합 니 다. 설정 은 다음 과 같 습 니 다.
:10.0.18.146
#cat nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 10240;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
proxy_temp_path /usr/local/nginx/proxy_temp_dir; # :proxy_temp_path proxy_cache_path
proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=30g;
# Web cache_one, 100MB,1 , 20GB
upstream backend {
server 10.0.18.144:80 weight=1;
server 10.0.18.145:8080 weight=1;
}
server {
listen 80;
server_name balance.test.com;
location / {
# 502、504、 , upstream , 。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
proxy_cache_valid 200 304 12h; # HTTP
proxy_cache_key $host$uri$is_args$args; # 、URI、 Web Key ,Nginx Key ,
#
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_buffering on; #
proxy_pass # server
expires 1d; # , cookies,1d 1 ,1m 1 ( )
}
#location ~ /purge(/.*) { # purge, , ngx_cache_purge
# allow 127.0.0.1;
# deny all;
# proxy_cache_purge cache_one $host$1$is_args$args;
#}
}
}
:
#mkdir -pv /usr/local/nginx/{proxy_cache_dir,proxy_temp_dir}
nginx, !
#service nginx restart
그리고 18.144 와 18.145 의 웹 저장 경 로 를 각각 test. html 로 만 듭 니 다. 내용 은 다음 과 같 습 니 다.
18.144
#cat /usr/share/nginx/html/test.html
This is a test page 18.144
18.145
#cat /usr/share/nginx/html/test.html
This is a test page 18.145
그리고 부하 균형 도 메 인 이름 으로 접근 합 니 다.http://balance.test.com/test.html 페이지 는 다음 과 같 습 니 다:
그리고 끊임없이 새로 고치 거나 다른 브 라 우 저 를 교체 합 니 다. 18.145 이 server 응답 은 캐 시 를 설 정 했 기 때문에 처음 방문 한 후에 데 이 터 를 캐 시 합 니 다. 설 정 된 캐 시가 만 료 될 때 까지 입 니 다. 그리고 이때 부하 균형 서비스 기 에서 캐 시 정 보 를 봅 니 다.
#cd /usr/local/nginx/
#ll proxy_cache_dir/9/41/
total 4
-rw------- 1 nginx nginx 444 Nov 4 16:53 b5e4d782cfd84da92097d8ed956fb419
!
캐 시 내용 보기, 다음 그림:
캐 시 를 볼 수 있 는 것 은 18.145 페이지 입 니 다!
현재 캐 시 를 수 동 으로 삭제 하면 브 라 우 저 접근 을 변경 합 니 다.http://balance.test.com/test.html 18.144 응답 페이지 가 나타 납 니 다. 다음 과 같 습 니 다.
#cd /usr/local/nginx
#rm -rf proxy_cache_dir/*
:
캐 시 내용 보기, 다음 그림:
여기까지 끝!부족 한 점 은 잘 부탁드립니다!
참조 링크:http://cui.zhbor.com/article/27.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.