Nginx、HAProxy、LVS三者的优缺点( 二 )


⑤ uri
表示根据请求的URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配 。只要服务器正常,同一个URI地址总是访问同一个服务器 。一般用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率 。该算法只能用于HTTP后端;该算法一般用于后端是缓存服务器;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整 。
⑥ url_param
【Nginx、HAProxy、LVS三者的优缺点】在HTTP GET请求的查询串中查找<param>中指定的URL参数,基本上可以锁定使用特制的URL到特定的负载均衡器节点的要求;该算法一般用于将同一个用户的信息发送到同一个后端服务器;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整 。
⑦ hdr(name)
在每个HTTP请求中查找HTTP头<name>,HTTP头<name>将被看作在每个HTTP请求,并针对特定的节点;如果缺少头或者头没有任何值,则用roundrobin代替;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整 。
⑧ rdp-cookie(name)
为每个进来的TCP请求查询并哈希RDP cookie<name>;该机制用于退化的持久模式,可以使同一个用户或者同一个会话ID总是发送给同一台服务器 。如果没有cookie,则使用roundrobin算法代替;该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整 。
haproxy的工作模型图:

Nginx、HAProxy、LVS三者的优缺点

文章插图
 
HAPorxy缺点:
1. 不支持POP/SMTP协议
2. 不支持SPDY协议
3. 不支持HTTP cache功能 。现在不少开源的lb项目,都或多或少具备HTTP cache功能 。
4. 重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好 。
5. 多进程模式支持不够好




推荐阅读