upstream testserver {
# server 127.0.0.1:8080 weight=2;
# server 127.0.0.1:8081 weight=1; #多加了此台服务器 weight权限级别
server 127.0.0.1:8080;
server 127.0.0.1:8081; #多加了此台服务器
ip_hash;
}
upstream testserver1 {
server 127.0.0.1:8081;
}
以上 testserver 和 testserver1 配置项为负载均衡配置项和均衡服务器列表
server {
listen 80;
server_name nginx-proxy.cn;
location / {
proxy_pass http://testserver;
index index.html index.htm index.php l.php;
}
}
proxy_pass http://testserver 里的testserver为上边配置项目名称
负载均衡策略
方法 | 说明 | 配置举例 | 注意 |
轮询 | 默认方式 , 最基本的配置方法, 上面的例子就是轮询的方式, 它是upstream模块默认的负 载均衡默认策略。每个请求会 按时间顺序逐一分配到不同的 后端服务器。 | ||
weight | 权重方式 ,在轮询策略的基 础上指定轮询的几率 | upstream bend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } | 权重越高分配到需要处理的请求越多。 此策略可以与least_conn和ip_hash结合使用。 此策略比较适合服务器的硬件配置差别比较大的情况。 |
ip_hash | 依据ip分配方式, 指定负载 均衡器按照基于客户端IP的 分配方式,这个方法确保了 相同的客户端的请求一直发 送到相同的服务器,以保证 session会话。这样每个访 客都固定访问一个后端服 务器,可以解决session不 能跨服务器的问题。 | upstream dynamic { ip_hash; #访客固定访问一个后端服务器 server localhost:8080 weight=2; server localhost:8081; server localhost:8082; server localhost:8083 max_fails=3 fail_timeout=20s; } | ip_hash不能与backup同时使用。 此策略适合有状态服务,比如session。 当有服务器需要剔除,必须手动down掉。 |
least_conn | 最少连接方式, 把请求转 发给连接数较少的后端服 务器。轮询算法是把请求 平均的转发给各个后端, 使它们的负载大致相同; 但是,有些请求占用的 时间很长,会导致其所 在的后端负载较高。这 种情况下,least_conn这种方式就可以达到更好的负载均衡效果。 | upstream dynamic { least_conn; #请求转发给连接数较少的服务器 server localhost:8080 weight=2; server localhost:8081; server localhost:8082 backup; server localhost:8083 max_fails=3 fail_timeout=20s; } | 此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。 |
fair(第三方) | 响应时间方式, 按照服务 器端的响应时间来分配请 求,响应时间短的优先分配 | upstream dynamic { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0 fair; #实现响应时间短的优先分配 } | |
url_hash(第三方) | 依据URL分配方式,按访 问url的hash结果来分配请 求,使每个url定向到同一 个后端服务器,要配合缓存 命中来使用。同一个资源 多次请求,可能会到达不 同的服务器上,导致不必 要的多次下载,缓存命 中率不高,以及一些资 源时间的浪费。而使用 url_hash,可以使得 同一个url(也就是同 一个资源请求)会到 达同一台服务器, 一旦缓存住了资源,再此收到请求, 就可以从缓存中读取。 | upstream dynamic { hash $request_uri; #实现每个url定向到同一个后端服务器 server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0 } |
配置项说明
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡