1.什么是Haproxy?
HAProxy 是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常需要会话保持七层处理。
HAProxy 运行在当前的硬件上完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上
2.Haproxy的相关概念
(1)正向代理
正向代理其实就是用户想从服务器拿资源数据,但是只能通过proxy服务器才能拿到,所以用户A只能去访问proxy服务器然后通过proxy服务器去服务器B拿数据
这种情况用户是明确知道要访问的是谁,在我们生活中最典型的案例就是“翻墙“,也是通过访问代理服务器最后访问外网的
(2)反向代理
反向代理其实就是客户端去访问服务器时,它并不知道会访问哪一台,感觉就是客户端访问了Proxy一样,而实则就是当proxy关口拿到用户请求的时候会转发到代理服务器中的随机(算法)某一台,在用户看来,他只是访问了Proxy服务器而已,典型的例子就是负载均衡了
代理服务器
,可以提供缓存功能加速客户端访问,同时可以对缓存数据进行有效性检查
内容路由
:根据流量以及内容类型将请求转发至特定的服务器
转码器
:支持压缩功能,将数据以压缩形式发送给客户端
(3)缓存
- 减少访冗余内容传输,节省带宽,缓解网络瓶颈
- 降低了对原始服务器的请求压力,降低了传输延迟
(4)负载均衡集群
四层负载均衡:lvs, nginx(stream),haproxy(mode tcp)
七层负载均衡:http: nginx(http, ngx_http_upstream_module), haproxy(mode http), httpd, ats, perlbal, pound...
3.Haproxy的功能
Haproxy是TCP / HTTP反向代理服务器,尤其适合于高可用性环境
- 可以针对HTTP请求添加cookie,进行路由后端服务器
- 可平衡负载至后端服务器,并支持持久连接
- 支持基于cookie进行调度
- 支持所有主服务器故障切换至备用服务器
- 支持专用端口实现监控服务
- 支持不影响现有连接情况下停止接受新连接请求
- 可以在双向添加,修改或删除HTTP报文首部
- 支持基于pattern实现连接请求的访问控制
- 通过特定的URI为授权用户提供详细的状态信息