负载均衡是为减轻单个服务器负担,将请求按照某种策略分发给多个服务器。
官方文档参考:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream
以2台Tomcat集群为例
Tomcat配置
Tomcat下载地址:https://tomcat.apache.org/download-80.cgi
解压后修改\tomcat\conf\
目录下的server.xml
修改所有的端口号,避免冲突
1 | <Connector port="8080" protocol="HTTP/1.1" |
本例中,Tomcat A部署在http://localhost:8080
,Tomcat B部署在http://localhost:8082
分别在两个Tomcat下部署tomcat\webapps\demo\load-balance.html
1 |
|
用颜色和文字区分两个Tomcat
Nginx配置
1 | upstream tomcat { |
进入浏览器,用http://localhost:8088/demo/load-balance.html
进行访问
F5刷新页面,会依次地访问到8080和8082上的Tomcat
分发策略
1.轮询(默认)
1 | upstream tomcat { |
按时间顺序,依次分发
2.加权轮询
1 | upstream tomcat { |
weight值与访问几率成正比
3.ip_hash
1 | upstream tomcat { |
考虑缓存的情况,保持会话
来自同一ip的请求会固定到一个server
4.最小连接
1 | upstream tomcat { |
根据连接数来分发,起到均分的作用
5.url_hash
1 | upstream tomcat { |
来自同一url的请求会固定到一个server
状态参数
1.down
1 | upstream tomcat { |
当前server不参与负载均衡
2.backup
1 | upstream tomcat { |
预留的server,当有其他的server挂掉或者忙的时候,才会参与负载
3.max_fails和fail_timeout
1 | upstream tomcat { |
最大连接错误次数3次,每次失败后,间隔30s再重新发起连接
4.max_conns
1 | upstream tomcat { |
超过最大连接数后,就不参与负载