nginx--负载均衡三种方式

负载均衡
在nginx可以通过虚拟的集群域名,来实现一个后端集群的统一管理。通过不放方式的负载均衡计算算法实现负载均衡
1 轮询配置
nginx--负载均衡三种方式
可以实现对service的依次访问。访问数量是差多不的。

2 权重配置
轮询作为依次访问的逻辑,一种物理平均的负载均衡计算,如果后端运行服务器集群每个节点性能不同,应该给高性能的服务器分配更多的请求,给低性能的服务器分配少的请求,可以使用权重(权衡比重),例如:8091(2),8092(3),8093(5).
权重的配置,需要在轮训的list服务器列表upstream里配置2个关键字
weight=数字 表示当前server分配的负载均衡比重
down 当前server不在进行访问 比重0.有的时候一个集群中某些节点宕机之后无法短时间恢复,可以使用down禁止对其进行访问

nginx--负载均衡三种方式
结果会按 2:3:5的几率去访问三个不同的server

但是,有一个问题,sesseion对象是存在各自的servelet容器, 这样会使用户登录后出现频繁退出的情况。
解决
方案1: session对象互相同步,但是太占内存了。每个服务器压力太大 冗余 浪费资源
方案2:代理ip_hash计算(nignx支持):只要客户端的ip地址不发生变化,对应负载均衡的计算就只能访问同一个节点
缺点:将客户端强耦合到一个后端服务器上,一旦服务器出现问题不能访问,这些客户端将被动的暂停对系统使用

方案3 :采用第三方的存储容器(redis):session不存储在服务器上,使用第三方存储容器管理session数据.
缺点:占用更多的网络带宽资源.redis稳定,性能高是个优秀的选择

ip_hash计算逻辑:
本质上是一种hash取余的计算逻辑

利用hash散列的特点,对客户端ip地址进行hash整数计算,只要ip不发生变化,整数结果不变,假设3个负载均衡的几点,整数会对3进行%取余计算,得到[0,1,2] 绑定list中下标,ip不变绑定下标不变,对应server不会发生变化.
nginx--负载均衡三种方式