一、概述
随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了不同的分配方式(策略),可以按照实际情况去进行配置。这里做一个简单的介绍:
1、轮询(默认)
Nginx默认情况下使用的是这种方法。轮询法,就是将用户的请求按照时间顺序轮流分配给服务器,就像是挨个数数,轮流分配;如果后端服务器 down 掉,能自动剔除。这种算法比较简单,他具有绝对均衡的优点,但是也正是因为绝对均衡它必须付出很大的代价,例如它无法保证分配任务的合理性,无法根据服务器承受能力来分配任务。
2、weight
weight代表权重值,默认为1,权重越高被分配的客户端越多。指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如:
upstream server_pool {
server 192.168.5.21 weight=10;
server 192.168.5.21 weight=10;
}
3、ip_hash
每个请求按照访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如:
upstream server_pool{
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80;
}
4、fair(第三方)
按照后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool {
server 192.168.5.21:80;
server 192.168.5.22:80;
fair
}
二、配置实例
实验效果:当在浏览器地址栏输入地址http://ip地址/edu/a.html后,实现负载均衡效果,平均8080和8081端口中去。这里准备工作就不做过多展示了,这里前面有详细步骤:
https://blog.csdn.net/weixin_43997530/article/details/115414101
准备工作:
- 首先准备两台服务器,这里我们使用Tomcat服务器。一台端口号为8080,一台端口号为8081。
- 两台Tomcat里面webapps目录中,创建的是edu文件夹,在edu文件夹中创建页面a.html,用于测试。
在Nginx配置文件中进行配置:(位置在/usr/local/nginx/conf下的nginx.conf):
upstream server_pool { //地址池名字可以随意起
server 192.168.73.128:8080;
server 192.168.73.128:8081;
}
server {
listen 80;
server_name 192.168.73.128;
location / {
proxy_pass http://server_pool; //这里写上面的地址池名字
root html;
index index.html index.htm;
}
![](https://img-blog.csdnimg.cn/20210409182025545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk5NzUzMA==,size_16,color_FFFFFF,t_70)
到这里负载均衡就配置完成,接下来进行试验验证 ,这里验证的时候如果是谷歌浏览器需要使用回车键进行刷新,否则看不到负载均衡的效果。这里我们每刷新一下可以看出内容就变化一次。这就实现了基本的负载均衡。