一、Haproxy基础介绍

一、负载均衡介绍

1、什么是SLB

SLB(Server Load Balance)服务通过设置虚拟服务地址(IP),将位于同一地域(Region)的多台服务器资源虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到服务器池中。

SLB服务会检查服务器池中所有服务器的健康状态,自动隔离异常状态的服务器,从而解决了单台服务器的单点问题,同时提高了应用的整体服务能力。在标准的负载均衡功能之外,SLB服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力。

2、负载均衡的类型

无负载平衡:没有负载平衡的简单Web应用程序环境

 

用户直接通过域名访问Web服务器。如果单个Web服务器出现故障,用户将无法再访问您的Web服务器。此外,如果许多用户试图同时访问您的服务器并且无法处理负载,他们可能会遇到缓慢的体验,或者可能根本无法连接。

4层负载平衡

四层:IP+PORT转发

在四层负载设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置的选择web服 务器的规则选择对应的web服务器IP地址,这样client就可以直接跟此服务器建立TCP连接并发送数据。

 

将网络流量负载平衡到多个服务器的最简单方法是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP和端口转发。 用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。

7层负载平衡

七层:协议+内容交换

七层负载均衡服务器起了一个反向代理服务器的作用,服务器建立一次TCP连接要三次握手,而client要访问 webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七 层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然 后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;所以,七层负载均衡设 备起到了代理服务器的作用。

 

7层负载平衡是更复杂的负载均衡网络流量的方法是使用第7层(应用层)负载均衡。使用第7层允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许您在同一域和端口下运行多个Web应用程序服务器。

二、Haproxy

HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万 以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态 统计。

历史版本

历史版本更新功能:1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1-dev
1.8:多线程,HTTP/2缓存……
1.7:服务器动态配置,多类型证书……
1.6:DNS解析支持,HTTP连接多路复用……
1.5:开始支持SSL,IPV6,会话保持…

https://www.haproxy.com/ #企业版

http://www.haproxy.org/ #社区版

https://github.com/haproxy #github

三、HAProxy功能

HAProxy功能:

1)TCP和HTTP反向代理
2)SSL/TSL服务器
3)可以针对HTTP请求添加cookie,进行路由后端服务器
4)可平衡负载至后端服务器,并支持持久连接
5)支持所有主服务器故障切换至备用服务器
6)支持专用端口实现监控服务
7)支持不影响现有连接情况下停止接受新连接请求
8)可以在双向添加,修改或删除HTTP报文首部
9)响应报文压缩
10)支持基于pattern实现连接请求的访问控制
11)通过特定的URI为授权用户提供详细的状态信息

不具备的功能:

1)正向代理--squid,nginx
2)缓存代理--varnish
3)web服务--nginx、tengine、apache、php、tomcat
4)UDP--目前不支持UDP协议,2.1版本会支持UDP协议代理
5)单机性能--LVS
原文地址:https://www.cnblogs.com/yaokaka/p/14238175.html