nginx的负载均衡

什么是负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
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,困扰了我超级久,小菜鸟已被气晕
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值