nginx配置实例 - 负载均衡
程序员文章站
2022-05-06 20:58:28
...
一、预期效果
在外部主机的浏览器多次访问http://服务器ip地址/edu/a.html
,请求平均分发给两台Tomcat服务器,从而在页面上轮流出现“8080”和“8081” 字符。
二、准备工作
在上一个实例中,部署了两台Tomcat服务器,分别占用8080
和8081
端口。
现在,在8081
端口的Tomcat的webapps
目录中新建edu
目录,并把a.html
文件复制到其中。
相关命令如下:
cd /usr/src/tomcat8081/apache-tomcat-9.0.55/webapps
mkdir edu
cp vod/a.html edu/
然后,启动两台Tomcat服务器。
三、nginx配置
接下来,进入nginx安装目录下的conf
目录,修改nginx.conf
文件中的配置信息。
首先,在http块内新增upstream配置:
# upstream中的server属性值记录的是目标服务器的地址
# myserver是自定义名称,可以不同
upstream myserver {
server 192.168.x.x:8080; #因为有两台Tomcat服务器,所以这里用两个server来记录
server 192.168.x.x:8081;
}
然后,在server块中配置路由信息:
server {
listen 80;
server_name 192.168.x.x;
location / {
proxy_pass http://myserver;
root html;
index index.html index.htm;
}
}
最后,启动nginx。
四、测试
在收到请求时,由于proxy_pass
字段值的myserver
是upstream
变量,所以nginx会找到名为myserver
的upstream
,根据其中的server
信息来找到服务器,并按指定策略(默认是轮询)来转发请求。
在外部主机的浏览器上两次访问http://192.168.x.x/edu/a.html
,出现如下效果,则为成功:
五、负载均衡策略
nginx的负载均衡策略有以下四种:
策略 | 关键字 | 效果 |
---|---|---|
轮询 | - | 平均分发请求到各个服务器 |
权重 | weight | 权重越大,分配到的请求越多 |
IP哈希 | ip_hash | 根据客户端IP的哈希来固定访问某台服务器,可以解决session问题 |
fair | fair | 按服务器的响应时间来选择接收请求的服务器 |
1.轮询
默认情况下,nginx负载均衡策略就是轮询:
upstream myserver {
server 192.168.x.x:8080;
server 192.168.x.x:8081;
}
2.权重
使用权重策略,只需在服务器地址后配置weight值即可:
upstream myserver {
server 192.168.x.x:8080 weight=10;
server 192.168.x.x:8081 weight=1;
}
默认的权重是1,这也能说明为什么默认情况下请求会平均分配给各个服务器。
3.ip哈希
在upstream中配置ip_hash,即可使用ip哈希策略:
upstream myserver {
ip_hash;
server 192.168.x.x:8080;
server 192.168.x.x:8081;
}
4.fair
在upstream中配置fair,即可使用fair策略:
upstream myserver {
fair;
server 192.168.x.x:8080;
server 192.168.x.x:8081;
}
六、总结
在服务访问量较大的情况下,选择合理的负载均衡策略来配置nginx,可以有效的降低服务器的压力,提高请求的处理效率。