从最根本应用来讲,haproxy是一个代理,或者说是一个httpd的代理
代理类型分为两种,正向代理和反向代理
代理类型:私有代理,为本地或有限用户的
公共代理:如谷歌
Haproxy代理作用:访问控制,web缓存(加速),反向代理,内容请求路由(根据流量及内容类型等条件将请求转发至特定的服务器),转码器
缓存的作用,减少冗余内容的传输,从而节省了带宽,缓解了后端网络瓶颈,降低了对原始请求服务器的请求压力,降低传输延迟
事实上haproxy只是一个http一些的反向代理,但支持tcp层基于tcp的应用层做负载均衡
七层反向代理,4层负载均衡软件
事实上haproxy本身是不具备ha功能,它称为haproxy可能是后面有多个原始服务器,任何一个down机,用户请求仍然可以继续。
Haproxy提供负载均衡和基于tcp和http应用的代理,支持虚拟机,是一个免费,快速并可靠的解决方案,适用于负载均衡特大级web站点
,这些站点通常又需要会话保持和七层处理
Haproxy事件驱动和单一进程模型,此模型支持非常大的并发连接数,多进程或多线程模型受内存限制,而对haproxy来讲,多线程多进程可能不是最佳选择,单个进程响应多个请求,那么c10k就不存在问题了
Haproxy使用改进过的红黑树,并且是二叉的,叫做弹性二叉树(ebtree),这是haproxy作者自行为了haproxy更优化数据存储,特地开发的一个数据结构。
PS:
Haproxy是一个代理,是一个代理则意味着前端有一个链接,后端必然也有一个。然而它肯定有很多个。一个链接建立起来后,肯定会端开,端开后需要被删除,众多链接保存,链接状态的追踪都需要一个存储机制进行存储!
为了有限追踪当前主机的所有链接以及每一个链接的状态信息,它需要一个特殊的数据结构来保存它,以便于实现新链接插入,旧链接删除等其他问题!
Haproxy1.4
ACL特性,基于源粘性,日志分析,负载均衡等等
Haproxy弱项:并发量不够,应用层协议,tap代理模型
性能特性,单进程的事件驱动,,
系统调用降低:haproxy能够在应用用户空间完成的的功能,不在会发起系统调用。因为在任何系统调用都会导致模式转换,而模式转换一定会降低性能。
缓存聚合等。
Haproxy从三个因素评估性能:
会话率:会话创建速率,单位时间创建
会话能力:负载均衡器同时承载
数据率:承载众多数据时,完成的交换能力
负载均衡中,后端有缓存时,haproxy即可支持除膜取于,或一致性hash算法,并且支持cook做粘性,这便意味着haproxy在做http代理中的重要地位
Haproxy只是http协议的反向代理,但支持tcp层对基于tcp的应用层做lb
配置和安装
[root@haproxy ~]# yum -y install haproxy
[root@haproxy ~]#Vim /etc/rsyslog.conf
开启日志udp
Web2和web1主机分别配置http的根目录index.html文件,两个文件分别写入web1和web2,做调度区分
在haproxy中配置如下:
1, 修改端口
frontend main *:80
2, default_backend app
backend定义名
3,定义后端主机
backend app 调用定义的服务器组名
balance roundrobin 负载均衡算法
server web1 192.168.131.136:80 check :web1
server web2 192.168.131.137:80 check :web2
4, 测试负载均衡