prollerweg 发表于 2018-11-16 09:19:54

NGINX 负载均衡 之九

1、Nginx 负载均衡的组件模块
  ngx_http_proxy_module:proxy代理模块,用于把请求后抛给服务器节点或upstream服务器池。
  ngx_http_upstream_module:负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查。

2、upstream模块语法
  

upstream server_pools {  #ip_hash;
  server 10.3.151.34:81 weight=1;
  server 10.3.151.246:81 weight=1;
  }
  

3、upstream模块标签说明
  upstream:是关键字必须要有。
  server_pools:为一个upstream集群组的名字,可以自己定义,调用时使用。
  server:关键字必须要有,后面可以接域名或IP,如果不指定端口,默认是80端口。
  weight:代表服务器权重,默认值是1,权重数字越大表示接受的请求比例越大。
  ip_hash:根据客户端IP的hash结果分配,解决动态网页的session共享问题,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中不能使用weight和backup。

4、http proxy 模块相关参数
  proxy:设置http请求header 项传给后端服务器节点,例如:可实现让代理后端的服务器节点获取到访问客户端用户的真实IP地址。
  client_body_buffer_size:用于指定客户端请求主体缓冲区大小,此处如了解前文的http请求包的原理就好理解了。
  proxy_connection_timeout:表示反向代理与后端节点服务器连接的超时时间,即发起握手等候响应的超时时间。
  proxy_send_timeout:表示代理后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,nginx将断开这个连接。
  proxy_read_timeout:设置nginx从代理的后端服务器获取信息时间,表示连接建立成功后,nginx等待后端服务器的响应时间,其实是nginx已经进入后端的排队之中等候处理的时间。
  proxy_buffer_size:设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小。

5、负载均衡实战

5.1、网络架构
  web1:10.3.151.34(安装:nginx,端口监听:80,Server name:www.kang.com)
  web2:10.3.151.246 (安装:nginx,端口监听:80,Server name:www.kang.com)
  客户端:10.3.151.86

5.2、web1 nginx 配置文件如下:
  

worker_processes1;  
events {
  worker_connections1024;
  
}
  
error_loglogs/error.log;
  
http {
  include       mime.types;
  default_typeapplication/octet-stream;
  sendfile      on;
  keepalive_timeout65;
  log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  

  access_loglogs/access.logmain;
  

  upstream server_pools {                           #负载均衡服务器
  server 10.3.151.34:81 weight=1;
  server 10.3.151.246:81 weight=1;
  }
  

  
server {
  listen       80;
  server_namewww.kang.com;
  location / {
  proxy_pass http://server_pools;               #proxy_pass 转发
  }
  error_page   500 502 503 504/50x.html;
  location = /50x.html {
  root   html;
  }
  }
  server {
  listen       81;
  server_namewww.kang.com;
  location / {
  root   html;
  indexindex.html index.htm;       #index.html 内容为:10.3.151.34 WWW SERVER
  }
  error_page   500 502 503 504/50x.html;
  location = /50x.html {
  root   html;
  }
  }
  

  #include vhost/*.conf;
  
}
  

  

5.3、web2 nginx 配置文件如下:
  

worker_processes1;  
events {
  worker_connections1024;
  
}
  
http {
  include       mime.types;
  default_typeapplication/octet-stream;
  sendfile      on;
  keepalive_timeout65;
  

  upstream server_pools {                            #负载均衡服务器
  server 10.3.151.34 weight=1;
  server 10.3.151.246:81 weight=1;
  }
  

  server {
  listen       80;
  server_namewww.kang.com;
  location / {
  proxy_pass http://server_pools;      #proxy_pass转发
  }
  error_page   500 502 503 504/50x.html;
  location = /50x.html {
  root   html;
  }
  }
  server {
  listen       81;
  server_namewww.kang.com;
  location / {
  root   html;
  indexindex.html index.htm;            #index.html内容:10.3.151.246 WWW SERVER
  }
  error_page   500 502 503 504/50x.html;
  location = /50x.html {
  root   html;
  }
  }
  
}
  

5.4、通过客户端检查是否生效
  

# for n in `seq 100`; do curl www.kang.com; sleep 1 ;done      #分别轮询访问两台服务器  
10.3.151.34 WWW SERVER
  
10.3.151.246WWW SERVER
  
10.3.151.34 WWW SERVER


页: [1]
查看完整版本: NGINX 负载均衡 之九