本文大部分内容来自如下链接的官方文档,如果有感兴趣的可以直接阅读。
http://nginx.org/en/docs/http/load_balancing.html
-------------------------------------------------------------------------------------
在多个应用实例间进行负载均衡是优化资源利用率,增大吞吐量,减少延迟和提高容错性一个有效常用方法。
Nginx是一个处理负载均衡的非常有效的工具。
负载均衡的方法
Nginx有下面几种负载均衡的方法
round-robin :以循环的方式处理请求
least-connected :下一个请求被分配到有最小活动连接数的服务上
ip-hash:同一个IP会被HASH到同一个服务上去
默认的负载均衡配置
http { upstream myapp1 { server srv1.example.com; server srv2.example.com; server srv3.example.com; } server { listen 80; location / { proxy_pass http://myapp1; } } }
在上面一个实例中,有3个相同的实例srv1-srv3,当负载均衡的方式没有指定时,默认是循环的方式,所有的请求被代理到服务组myapp1中的服务进行负载均衡。
最小连接的方式
其它的不变,只下面这部分改变如下
upstream myapp1 { least_conn; server srv1.example.com; server srv2.example.com; server srv3.example.com; }
session一致的方式
upstream myapp1 { ip_hash; server srv1.example.com; server srv2.example.com; server srv3.example.com; }
权重的方式
upstream myapp1 { server srv1.example.com weight=3; server srv2.example.com; server srv3.example.com; }
健康检查
Nginx有被动的健康检查,即如果发送到某一个服务器的请求有错误,Nginx会标记这个服务,接下来会避免给这个服务分发请求。
附:nginx配置gzip压缩
在http{中}添加如下配置。
gzip on; gzip_min_length 1k; gzip_buffers 16 64k; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain html/plain application/json application/javascript application/x-javascript text/css application/xml; gzip_vary on;
然后执行命令,nginx -s reload,万事大吉