http反向代理之haproxy详解

大纲

一、前言

二、haproxy 简介

三、haproxy 版本特性

四、haproxy 支持的平台及OS

五、haproxy 性能特点

六、负载均衡器的性能评估因素

七、haproxy 配置文件详解

八、安装与配置haproxy

九、haproxy 案例演示

十、haproxy 配置文件中的关键字参考

十一、haproxy 监控功能详解

十二、haproxy 负载均衡MySQL服务的配置示例

 

一、前言

在上几篇博客中我们主要讲解了nginx的相关知识,有nginx作为Web服务器的配置讲解,作为反向代理、负载均衡服务器的讲解,在这一节中我们主要讲解有haproxy知识,haproxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。下面我们就来详细的说一说haproxy。

二、haproxy 简介

HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。

  • 免费开源,稳定性也是非常好,这个可通过一些项目可以看出来,单Haproxy也跑得不错,稳定性可以与硬件级的F5相媲美;
  • 根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom’s 10GbE NICs (Myri-10G PCI-Express),这个数值作为软件级负载均衡器是相当惊人的。官方测试的性能情况如下图,
  • 2033581_13788648464GcB

  • HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
  • HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
  • HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡。
  • 自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一
  • HAProxy支持虚拟主机。
  • HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

2033581_1378864846kx36

注,在功能上,能以proxy反向代理方式实现Web均衡负载,这样的产品有很多。包括lvs,Nginx,ApacheProxy,lighttpd等。国内生产环境上使用Haproxy的公司很多,例如淘宝的CDN系统,

2033581_1378864847O4cN

三、haproxy 版本特性

HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。

1.HAProxy目前主要有两个版本:

  • 1.4——提供较好的弹性:衍生于1.2版本,并提供了额外的新特性,其中大多数是期待已久的。
  • 1.3——内容交换和超强负载:衍生于1.2版本,并提供了额外的新特性。

2.haproxy 1.4 版本特性

  • 客户端的长连接(client-side keep-alive)
  • TCP加速(TCP speedups)
  • 响应池(response buffering)
  • RDP协议
  • 基于源的粘性(source-based stickiness)
  • 更好的统计数据接口(a much better stats interfaces)
  • 更详细的健康状态检测机制(more verbose health checks)
  • 基于流量的健康评估机制(traffic-based health)
  • 支持HTTP认证
  • 服务器管理命令行接口(server management from the CLI)
  • 基于ACL的持久性(ACL-based persistence)
  • 日志分析器

注,更多特性请查看官方文档:http://haproxy.1wt.eu/#news

3.haproxy 1.3 版本特性

  • 内容交换(content switching):基于任何请求标准挑选服务器池
  • ACL:编写内容交换规则
  • 负载均衡算法(load-balancing algorithms):更多的算法支持
  • 内容探测(content inspection):阻止非授权协议
  • 透明代理(transparent proxy):在Linux系统上允许使用客户端IP直接连入服务器
  • 内核TCP拼接(kernel TCP splicing):无copy方式在客户端和服务端之间转发数据以实现数G级别的数据速率
  • 分层设计(layered design):分别实现套接字、TCP、HTTP处理以提供更好的健壮性、更快的处理机制及便捷的演进能力
  • 快速、公平调度器(fast and fair scheduler):为某些任务指定优先级可实现理好的QoS
  • 会话速率限制(session rate limiting):适用于托管环境

注,一般企业中用的较多的还是haproxy 1.4,但应用还是得看实际情况。

四、haproxy 支持的平台及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平台上的Solari