发布时间 : 星期四 文章haproxy负载均衡配置文档更新完毕开始阅读
必把用户踢下线。与maxidle不同, 这个值是不刷新的,只在第一次访问日期计数。maxidle和maxlife可以一起使用,尤其是用户一直不关闭浏览器,可以避免在一台服务器上占用太长 时间 (eg: after a farm size change)。与maxidle的超时后强行重新分配相比,这个要更好一些。
每个HTTP后端可以只有一个持久cookie,并定义在default部分,cookie的值可以是\声明中\关键字后面的值。如果服务器没有指定cookie,则不会设置。
2 Balance
balance
balance url_param [check_post [
May be used in sections : defaults | frontend | listen | backend yes | no | yes | yes Arguments :
roundrobin 每个服务器根据权重轮流使用,如果服务器的处理时间平均分布,这是最流畅和公平的算法。算法是动态的,对于实例启动慢的服务器的权重会在运行中调整。每个 backend的活动服务器在设计上限制为4128个。在一些大的群里面, 当服务器很短的宕机后恢复回来,有时会有几百个请求被重新整合到群当中,并开始接收处理。尽管很少发生,但是很正常。这也说明了有机会监视它们,所以不必 担心。
static-rr 每个服务器根据权重轮流使用,类似roundrobin,但它是静态的,意味着运行时修改权重是无效的。另一方面,它对服务器的数量没有设计上的限制,服 务器启动后便会立即进到群中,整个分发方案会重新计算。这会略微降低CPU的运行(约1%)。
leastconn 连接数最低的服务器优先接收连接。Round-robin用于负载相同的服务器,使每台服务器都被使用。leastconn建议用于长会话服务,例如 LDAP, SQL, TSE等,而不是很适合短会话协议,如HTTP。算法是动态的,对于实例启动慢的服务器的权重会在运行中调整。
source 对源IP地址进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个客户端IP地址总是访问同一台服务器。如果哈希的结 果随可用服务器数量而变化,那么有的客户端会定向到不同的服务器。该算法一般用于不能插入cookie的TCP模式。它还可以用于广域网上,为拒绝使用会 话cookie的客户端提供最有效的粘连。该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据\的变化做调 整。
uri 对URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一台服务器。一般 用于代理缓
存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端。该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是 算法会根据\的变化做调整。
算法支持两个可选参数\和 \, 都是后跟正整数。“len”参数指定算法只处理URI从头开始的字符数,据此计算哈希。因为大多URI以\开头,所以\最好不要设为 1。\参数指定URI中最大的路径深度,据此计算哈希。请求中的每个斜线为一级。如果同时声明了这两个参数,则截取URI时必须同时满足。
url_param 在HTTP GET请求的查询串中查找中指定的URL参数。
若使用了修饰符\,如果在URL问号('?')后面的查询串中找不到参数,就会搜索HTTP POST 请求实体。或者在指定的一些字节后面尝试搜索消息体。如果搜索不到实体, 则使用round robin算法。例如,假设客户端总是在前128个字节发送LB参数,就可以指定它。默认为48。如果到达网关的字节数量不够,实体数据是检索不到的,至 少有:(default/max_wait, Content-Length or first chunk length)。如果Content-Length没有或为0,就不需要等待客户端发送更多的数据。当Content-Length有值且大 于
如果参数后面跟着 ('=') 和一个值,则可以根据这个值进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。
还可用于跟踪请求中的用户身份,只要服务器正常,同一个用户ID的请求总是发给同一台服务器。如果没有参数或参数没有值,则使用轮询算法。该算法只用于 HTTP后端。该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据\的变化做调整。
hdr(name) 在每个HTTP请求中查找HTTP头
rdp-cookie
rdp-cookie(name)
为每个进来的TCP请求查询并哈希RDP cookie
balance uri [len
balance url_param [check_post [
如果没有其他算法、模式或选项的设置,后端的负载均衡算法默认为roundrobin。每个后端只能设置一种。
附录II
1 与nginx代理的对比
Nginx的优点:
1. 2. 3. 4. 5.
性能好,可以负载超过1万的并发。 功能多,除了负载均衡,还能作Web服务器,而且可以通过Geo模块来实现流量分配。 社区活跃,第三方补丁和模块很多 支持gzip proxy
工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活
6. Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能
7. Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。 8. Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可
以考虑用其作为反向代理加速器。
9. 、Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx
的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
10. Nginx也可作为静态网页和图片服务器,这方面的性能也无对手.
Nginx的缺点:
1. 不支持session保持。(三方模块开始支持)
2. 对后端realserver的健康检查功能效果不好。而且只支持通过端口来检测,不支持通过
url来检测。
3. nginx对big request header的支持不是很好,如果client_header_buffer_size 设置的比较
小,就会返回400 bad request页面。
4. 负载均衡策略简单, 第三方提过的但也不全, 不支持url均衡. 5. 不支持tcp代理与均衡.
Haproxy的优点:
1. 支持session保持,同时支持通过获取指定的url来检测后端服务器的状态。
2. 本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载
均衡速度,在并发处理上也是优于Nginx的。 3. 支持tcp模式的负载均衡。比如可以给mysql的从服务器集群和邮件服务器做负载均衡。 4. HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有8种.
缺点:
1. 不支持虚拟主机(现在开始支持).