【nginx】负载配置

    xiaoxiao2021-03-25  17

    contos搭建nginx服务:http://www.cnblogs.com/wangzhongqiu/p/6527346.html

    转自:http://ajita.iteye.com/blog/1715269

     Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。      Nginx 是一个很牛的高性能Web和反向代理服务器,它具有很多非常优越的特性:     在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。      Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。  -----------------------------------------------------  以上都是简介,也算是废话吧  -----------------------------------------------------      nginx直接去官网下载就可以,配置文件放在下面的conf目录。  1.下面先做最简单的配置,意思就是把请求到本机8080端口的所有http请求分别转发到本机18080和28080端口: 

    Conf代码   #user  nobody;   worker_processes  2;      #error_log  logs/error.log;   #error_log  logs/error.log  notice;   #error_log  logs/error.log  info;      #pid        logs/nginx.pid;         events {       #使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。          #use epoll;        worker_connections  1024;   }         http {       include       mime.types;       default_type  application/octet-stream;          sendfile        on;          keepalive_timeout  65;          #gzip  on;       upstream mysvr {            #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。            #同一机器在多网情况下,路由切换,ip可能不同            #ip_hash;         server localhost:18080;            server localhost:28080;           }             server {           listen       8080;           server_name  localhost;              #charset koi8-r;              #access_log  logs/host.access.log  main;              location / {                          proxy_connect_timeout   3;                          proxy_send_timeout      30;                          proxy_read_timeout      30;                          proxy_pass http://mysvr;                  }       }   }  

    2.Nginx upstream的5种权重分配方式  1)、轮询(默认)  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。  2)、weight  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。  例如:  upstream mysvr {  server 192.168.0.14:8080 weight=10;  server 192.168.0.15:8080 weight=10;  }  3)、ip_hash  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题(在上面提到的,如果一台机器有多个ip,且都能达到我们的服务器,这点就无效了)。  (适用于要求ip地址一致性的场景)  例如:  upstream mysvr {  ip_hash;  server 192.168.0.14:8080;  server 192.168.0.15:8080;  }  4)、fair(第三方)  按后端服务器的响应时间来分配请求,响应时间短的优先分配。  (fair策略是扩展策略,默认不被编译进nginx内核。其原理是根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。这种策略具有很强的自适应性,但是实际的网络环境往往不是那么简单,因此要慎用。)  upstream mysvr {  server 192.168.0.14:8080;  server 192.168.0.15:8080;  fair;  }  5)、url_hash(第三方)  按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。(适用于请求一致性,如缓存服务器)  例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法  upstream mysvr {  server 192.168.0.14:8080;  server 192.168.0.15:8080;  hash $request_uri;  hash_method crc32;  }  3.定义负载均衡设备的Ip及设备状态  upstream mysvr {  ip_hash;  server 127.0.0.1:9090 down;  server 127.0.0.1:8080 weight=2;  server 127.0.0.1:6060;  server 127.0.0.1:7070 backup;  }  在需要使用负载均衡的server中增加  proxy_pass http://bakend/;  每个设备的状态设置为:  1.down 表示单前的server暂时不参与负载  2.weight 默认为1.weight越大,负载的权重就越大。  3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误  4.fail_timeout:max_fails次失败后,暂停的时间。  5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 

    转载请注明原文地址: https://ju.6miu.com/read-50349.html

    最新回复(0)