什么是负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
nginx的负载均衡,简单来说就是当用户访问时,由nginx来分发请求给多台服务器共同来分担压力,可以减少某台服务器因并发量太大而宕机的情况出现。
nginx负载均衡的策略
1、轮询策略
2、权重策略
3、ip_hash策略
前期准备
在开始实现nginx之前,我们首先需要准备三台端口分别为8080,8081,8082的tomcat服务器,并上传到linux系统上运行。运行效果如图
轮询策略
轮询是nginx负载均衡的默认机制,配置nginx.conf如下。
upstream nginx{
server 192.168.86.128:8080;
server 192.168.86.128:8081;
server 192.168.86.128:8082;
}
server {
listen 80;
server_name www.nginx.demo.com;
location / {
#root html;
#index staticDemo.html;
proxy_pass http://nginx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
经过测试,三者之间出现的概率是相等的,1/3
权重策略
当我们需要让某台服务器承担更多的请求时,可以采用权重策略,这里假设8080,8081,8082三台服务器的权重为3:2:1
upstream nginx{
server 192.168.86.128:8080 weight=3;
server 192.168.86.128:8081 weight=2;
server 192.168.86.128:8082 weight=1;
}
server {
listen 80;
server_name www.nginx.demo.com;
location / {
#root html;
#index staticDemo.html;
proxy_pass http://nginx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
经过测试,我们发现出现频率最多的是8080端口,然后是8081。
ip_hash策略
ip_hash策略是指根据用户的ip地址运算之后与某台服务器进行绑定,将来该用户只访问这台服务器。
该策略已经过时,仅作为了解。
ip_hash策略存在的问题:
1.采用ip_hash可能会造成负载不均
2.如果其中某台服务器宕机,可能会造成服务器宕机,进而影响用户体验
upstream nginx{
ip_hash;
server 192.168.86.128:8080 weight=3;
server 192.168.86.128:8081 weight=2;
server 192.168.86.128:8082 weight=1;
}
server {
listen 80;
server_name www.nginx.demo.com;
location / {
#root html;
#index staticDemo.html;
proxy_pass http://nginx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
经测试,这时再去访问就只会访问同一台服务器。
总结
在一开始测试轮询策略的时候,发现明明三台服务器,可为什么总是访问两台,于是都去重新打成war包,再重新上传到linux上,再开始测试,发现还是那样,就是有台服务器测不通,访问不了,感到奇怪,后来想到会不会是浏览器的缓存问题,于是打开了F12,再刷新网页时右键清空缓存并重新加载,发现果然是浏览器的缓存问题,OMG,困扰了我超级久,小菜鸟已被气晕