负载均衡upstream介绍
负载均衡(Load Balance) :
分布式系统中一个非常重要的概念,当访问的服务具有多个实例时,需要根据某种“均衡”的策略决定请求发往哪个节点,这就是所谓的负载均衡, 原理是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,从而提高了数据的吞吐量。
负载均衡的种类 :
通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但比较昂贵的。
通过软件来进行解决,常见的软件有LVS、Nginx等,它们是基于Linux系统并且开源的负载均衡策略 目前性能和成本来看,Nginx是目前多数公司选择使用的。
用户访问nignx,nginx根据一定的规则将请求转发到后端应用上
启动两个jar程序,分别是8080端口和8081端口
nohup java -jar demo-1.jar &
nohup java -jar demo-2.jar &
直接访问测试
说明点:每次修改完nginx的配置文件以后必须【./nginx -s reload 】以后修改的配置文件才会生效!!!!
nginx的配置文件如下:
默认是【轮询】策略,适合静态文件服务器
upstream lbs {
server 192.168.0.106:8080;
server 192.168.0.106:8081;
}
location /api/ {
proxy_pass http://lbs;
proxy_redirect default;
}
配置带权重的负载均衡策略,【权重】越高,访问的流量越多【线上常用手段】
upstream lbs {
server 192.168.159.133:8080 weight=10;
server 192.168.159.133:8081 weight=5;
}
ip_hash(固定分发)
简介:根据请求发起ip地址的hash结果分配,这样每个用户就可以固定访问一个后端服务器【只要用户ip不变,那么就一直访问同一个后端服务】
场景:服务器业务分区、业务缓存、Session需要单点的情况
upstream lbs {
ip_hash;
server 192.168.159.133:8080;
server 192.168.159.133:8081;
}
设置某个节点状态为down下线
down 表示当前的该节点暂时不参与负载
upstream lbs {
server 192.168.159.133:8080 weight=10 down;
server 192.168.159.133:8081 weight=5;
}
设置某个节点是backup状态
backup 其它【所有】的⾮backup机器下线不可用的时候,才会请求backup机器,因此backup的机器压⼒会最轻,配置也会相对低
upstream lbs {
server 192.168.0.106:8080;
server 192.168.0.106:8081 backup;
}