一、haproxy简介

haproxy是一个提供高可用性,负载均衡的应用代理,支持的协议有TCP,HTTP,并且支持虚拟主机,特别适用于那些负载量大的web应用,这些应用通常需要会话保持或者七层处理,HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

haproxy目前最新的版本是1.4系列的,提供了很多比较1.3的新的特性:

1.支持客户端侧的长链接(client-side keep-alive)

2.支持TCP加速(TCP speedups)

3.支持响应池(response buffering)

4.支持RDP协议

5.支持基于源的粘性(source-based stickiness)

6.有更好的统计数据接口(a much better stats interfaces)

7.有更详细的健康状态检测机制(more verbose health checks)

8.有基于流量的健康评估机制(traffic-based health)

9.支持HTTP认证

10.服务器管理命令行接口(server management from the CLI)

11.基于ACL的持久性(ACL-based persistence)


支持的平台以及OS

x86、x86_64、Alpha、SPARC、MIPS及PARISC平台上的Linux 2.4;

x86、x86_64、ARM (ixp425)及PPC64平台上的Linux2.6;

UltraSPARC 2和3上的Sloaris 8/9;

Opteron和UltraSPARC平台上的Solaris 10;

x86平台上的FreeBSD 4.1-8;

i386, amd64, macppc, alpha, sparc64和VAX平台上的OpenBSD 3.1-current;


二、haproxy的性能

1.haproxy使用单进程,事件驱动模型降低了上下午切换的开销及内存的占用

2.O(1)事件查看器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测

3.单缓冲机制,不会复制任何数据,节约CPU时钟周期

4.可以实现零复制转发,在Linux kernel 3.5以上还支持零复制启动

5.MRU内存分配器在固定大小的内存池中可实现即时内存分配,这能够显著减少创建一个会话的时长

6.采用树型存储

7.大部分工作都在用户空间完成,如时间读取、缓冲聚合及文件描述符的启用和禁用等


三、配置haproxy

1.配置文件格式:global配置段,用于设定全局配置参数,proxy配置段,包括:defaults,listen,fronted,backend


2.时间格式:一些包含了值的参数表示时间,如超时时长。这些值一般以毫秒为单位,但也可以使用其它的时间单位后缀:

us: 微秒(microseconds),即1/1000000秒;

ms: 毫秒(milliseconds),即1/1000秒;

s: 秒(seconds);

m: 分钟(minutes);

h:小时(hours);

d: 天(days)







转载于:https://blog.51cto.com/luojianlong/1389569