## 静态算法 不考虑Real Server实时的活动连接和非活动连接 * rr:轮询 * wrr:Weight,加权轮询 * dh:destination hash,功能类似于sh,但应用场景不同 * sh:source hash,源地址hash;根据hash表将来自同一IP请求发送至同一Real Server,这样在一定程度上破坏了负载均衡的效果;主要使用在电商网站,实现session affinity(会话绑定)。 ### 如何避免使用sh? 1)在某些场景下,使用共享存储来储存session,每一个Real Server可以获取所有用户的session 2)在各Real Server之间实现session的实时共享 说明: 客户端首次访问服务器时,服务器会发送给客户端一个身份标识(包含认证信息、访问URL连接),存储在客户端的cookie中;之后,客户端在发送请求的请求中会附加cookie信息。cookie是随机码。 早期,客户端使用cookie时不区分网站,批量发送已有cookie,因此服务器端可以根据用户发来的大量信息来分析用户的访问习惯/访问行为,可能导致个人隐私泄漏。 现在使用`轻cookie`,客户端仅保存身份标识信息,在服务器端为每一个用户cookie创建一段内存区域,称为session来保存相应的用户信息 ## 动态算法 * lc:最少连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS. (active*256+inactive) * wlc:加权最少连接数调度,(active*256+inactive)/weighed,权重越大连接数越少,则连接至此rs * sed:最短期望延迟 (active+1)/权重,不考虑inactive,解决了如果只有一个请求,就给性能强的那台服务器 * nq:never queue 在每台rs都有连接之前不排队,保证每台rs至少有一个链接 ,不考虑inactive,解决了性能高的忙死,性能低没有连接 * lblc:基于本地的最少连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。 * lblcr:基于本地带复制功能的最少连接;对于已建立的请求,分配到同一台服务器;对于新请求,分配到连接数少的server ipvs默认的调度算法是wlc