HAProxy介绍

HAProxy介绍

HAProxy

	HAProxy: 是法国人Willy Tarreau 开发的一个开源软件,是一 款应对客户端10000 以上的同时连接的高性能的TCP和HTTP 负载均衡器。 
	其功能是用来提供基于cookie的持久性,基于内容的交换,过载保护的高级流量管制,自动故障切换,以正则表达式为基础的标题控制运行时间,基于Web 的报表,高级日志记录以帮助排除故障的应用或网络及其他功能。
	 LB Cluster:
		四层:lvs, nginx(stream) ,haproxy(mode tcp)
		七层:http: nginx(http), haproxy(mode http), httpd...
	 HAProxy :http://www.haproxy.org
	 文档:https://cbonte.github.io/haproxy-dconv/
	软件负载均衡一般通过两种方式来实现:
		基于操作系统的软负载实现和基于第三方应用的软负载实现。
		LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。
	HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件。
	HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。

HAProxy支持两种主要的代理模式

	TCP  即4层 (大多用于邮件服务器、内部协议通信服务器等),在4层模式下,HAProxy仅在客户端和服务器之间转发双向流量。
		它主要是通过分析IP层及TCP/UDP层的流量实现的基于IP加端口的负载均衡。
		仅建立一次TCP连接。
	HTTP 即7层模式,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或删除请求 (request)或者回应(response)里指定内容来控制协议,
      七层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。
		负载均衡器与客户端及后端的服务器会分别建立一次TCP连接
	七层负载均衡对负载均衡设备的要求更高,而七层负载均 衡的处理能力也必然低于四层模式的负载均衡。

HAProxy负载均衡策略非常多

	HAProxy的负载均衡算法现在具体有如下8种:
	roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
	static-rr,表示根据权重,建议关注;
	leastconn,表示最少连接者先处理,建议关注;
	source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
	ri,表示根据请求的URI;
	rl_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name;
	hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
	rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

HAProxy优缺点

	HAProxy的优点
	  1、HAProxy是支持虚拟主机的,通过frontend指令来实现
	  2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
	  3、支持url检测后端的服务器出问题的检测会有很好的帮助。
	  4、它跟LVS一样,本身仅仅就只是一款负载均衡软件,单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
	  5、HAProxy支持TCP协议的负载均衡转发,可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS
	  6、能对请求的url和header中的信息做匹配,有比LVS有更好的7层实现
	       7、自带强大的监控服务器状态的页面。
	HAProyx的缺点
		1、重载配置的功能需要重启进程,虽然也是 soft restart,但没有 Nginx 的 reaload 更为平滑和友好。
		2、多进程模式支持不够好。
		3、不支持 HTTP cache 功能,现在不少开源的 lb 项目,都或多或少具备 HTTP cache 功能。

HAProxy功能

	HAProxy 是TCP / HTTP 反向代理服务器,尤其适合于高可用性环境。
		可以针对HTTP 请求添加cookie,进行路由后端服务器
		可平衡负载至后端服务器,并支持持久连接
		支持基于cookie 进行调度
		支持所有主服务器故障切换至备用服务器
		支持专用端口实现监控服务
		支持不影响现有连接情况下停止接受新连接请求
		可以在双向添加,修改或删除HTTP 报文首部
		支持基于pattern 实现连接请求的访问控制
		通过特定的URI 为授权用户提供详细的状态信息
		支持http 反向代理
		支持动态程序的反向代理
		支持基于数据库的反向代理
		
	

HAProxy 组成

	程序环境:
		yum install  haproxy
		rpm -ql haproxy
			/etc/haproxy
			/etc/haproxy/haproxy.cfg
			/etc/logrotate.d/haproxy
			/etc/rc.d/init.d/haproxy
			/etc/sysconfig/haproxy
			/usr/bin/halog
			/usr/bin/iprange
			/usr/sbin/haproxy
			/usr/share/doc/haproxy-1.5.18
			/usr/share/haproxy
			/var/lib/haproxy
		主程序:/usr/sbin/haproxy
		配置文件:/etc/haproxy/haproxy.cfg
		Unit file :/usr/lib/systemd/system/haproxy.service
	配置段:
		global :全局配置段
			进程及安全配置相关的参数
			性能调整相关参数
			Debug 参数
		proxies :代理配置段
			defaults :为frontend, backend, listen 提供默认配置
			fronted :前端,相当于nginx, server {}
			backend :后端,相当于nginx, upstream {}
			listen :同时拥有前端和后端,
	
	简单的配置示例:
		frontend web
			bind *:80
			default_backend websrvs
		backend websrvs
			balance roundrobin
			server srv1 172.16.0.6:80 check
			server srv2 172.16.0.7:80 check
posted @ 2018-02-23 21:33  shenxm  阅读(935)  评论(0编辑  收藏  举报