haproxy 介绍 haproxy是一个开源的、高性能的基于TCP和HTTP应用代理的高可用的、负载均衡服务软件,它支持双机热备、高可用、负载均衡、虚拟主机、基于TCP和HTTP的应用代理、图形界面查看信息等功能。其配置简单、维护方便,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,haproxy会自动的将该故障服务器摘除,当故障的服务器恢复后,haproxy还会自动将该服务器自动加入进来提供服务。
LVS/NGINX对比 haproxy 特别适用于那些高负载、访问量很大,但又需要会话保持及七层应用代理的业务应用。haproxy运行在今天的普通的服务器硬件上,几乎不需要进行任何的优化就可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单、轻松、安全的整合到各种己有的网站架构中,同时,haproxy的代理模式,可以使得所有应用服务器不会暴露到公共网络上,即后面的节点服务器不需要公网IP地址。
从1.3版本起,haproxy软件引入了frontend,backend的功能,frontend (ad规则匹配)可以让运维管理人员根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend(这个是事先定义好的多个server pools,等待前端把请求转过来的服务器组)。通过frontend和backend,我们可以很容易的买现haproxy的各种7层应用代理功能。
haproxy代理模式 haproxy支持两种主要代理模式:
1、基于4层的tcp应用代理(例如:可用于邮件服务、内部协议通信服务器、MySQL、HTTPS服务等)。
2、基于7层的http代理。在4层tcp代理模式下,haproxy仅在客户端和服务器之间进行流量转发。但是在7层http代理模式下,haproxy会分析应用层协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求(request)或者回应(response)里指定内容来控制协议。
官方网站:www.haproxy.org
haproxy 解决方案拓扑图 haproxy L4负载均衡应用架构拓扑 haproxy软件的四层tcp应用代理非常优秀,且配置非常简单、方便,比LVS和Nginx的配置要简单很多,首先,配置haproxy不需要在RS端做任何特殊配置 (只要对应服务开启就OK)就可以实现应用代理,其次,haproxy的配置语法和增加虚拟主机功能等也比lvs/nginx简单。并且和商业版的NS (Netscaler)、F5, A10等负载均衡硬件的使用方法和在架构中的位置一模一样。下面是haproxy的Layer4层应用代理的拓扑结构图:
说明:由于haproxy软件采用的是类NAT模式(本质不同)的应用代理,数据包来去都会经过haproxy,因此,在流量特别大的情况下(门户级别的流量),其效率和性能不如LVS的DR模式负载均衡。
在一般的中小型公司,建议采用haproxy做负载均衡,而不要使用LVS或Nginx。为什么强调中小型公司呢?换句话说,千万PV级别以下直接使用haproxy做负载均衡,会让我们负责维护的运维管理人员配置简单、快速、维护方便,出问题好排查。
haproxy L7负载均衡应用架构拓扑 haproxy软件的最大优势在于其7层的根据URL请求头应用过滤的功能以及sesson会话功能,在门户网站的高并发生产架构中,haproxy软件一般用在4层LVS负载均衡软件的下一层,或者像haproxy官方推荐的也可以挂在硬件负载均衡althon, NS, F5, A10下使用,其表现非常好。从2009年起taobao,京东商城的业务也大面积使用了haproxy作为7层CACHE应用代理。
安装haproxy 模拟真实环境
搭建合适的模拟环境是一个人学习能力的重要体现。例如:人类第一次上太空也没有真正的环境,但是想去太空就是要自己动手去搭建逼真的模拟环境。实验多了就是经验,自然就有解除生产环境的机会了。
名称 接口 IP 用途 MASTER eth0 10.0.0.7 外网管理IP用于WAN数据转发 eth1 172.16.1.7 内网管理IP,用于LAN数据转发 eth2 10.0.10.7 用于服务器间心跳连接(直连) VIP 10.0.0.17 用于提供应用程序A挂载服务 BACKUP eth0 10.0.0.8 外网管理IP,用于WAN数据转发 eth1 172.16.1.8 内网管理IP,用于LAN数据转发 eth2 10.0.10.8 用于服务器间心跳连接(直连) VIP 10.0.0.8 用于提供应用程序B挂载服务 下载安装haproxy 下载地址:http://www.haproxy.org/download/
文档地址:http://www.haproxy.org/download/1.7/doc/configuration.txt
编译haproxy bash 1 2 3 4 make TARGET=linux2628 ARCH=x86_64 # <==64位编译配置 make TARGET=linux2628 ARCH=i386 # <==32位编译配置 make PREFIX=/app/haproxy-1....