负载均衡
四层负载和七层负载
四层负载根据四层网络信息如IP、端口进行负载,可以识别同一IP或同一端口的负载到某个Real Server节点上,常用的四层负载有LVS等;
七层负载在四层负载的基础上,还支持七层网络信息即应用信息如URL、邮件地址等进行负载,常用的七层负载有Nginx等;
常用负载均衡算法
1、轮询
每个请求按时间顺序逐一分配到不同Real Server上,不管是否同一IP
2、加权轮询
跟轮询类似,但分给某个Real Server节点的请求有加权,如某个Real Server机器好,那么别人分一个请求,它分两个
3、ip_hash
每个请求按ip hash结果分配,同一IP会分配到同一节点,可以解决session的问题
4、url_hash
与ip_hash类似,只不过是同一URL分配到同一节点,主要适用于后端服务器能够缓存URL响应结果场景
5、fair
按后端服务器的响应时间来分配,响应时间短的优先分配,能够最大化平衡压力,适用于服务器性能不均衡的场景
长连接
1、四层负载的实现机制,TCP长连接后续的请求都会分配到同一个Real Server,即使没开ip_hash
2、七层负载的实现机制,HTTP长连接(底层也是TCP长连接)后续的请求默认不会分配到原有Real Server,还是按负载策略分配,固要维持长连接,必须配置cookie会话保持功能
七层长连接负载和四层长连接负载实现不一样,可能是认为应用层面的七层连接比较“重”吧,设计成重新分配比较符合使用场景。