Haproxy简单介绍及配置

Haproxy是一款开源的、高性能的、基于TCP第四层和HTTP(第七层)应用的负载均衡软件,Haproxy作为一款专业的负载均衡软件,他的显著优点如下:

  • 可靠性和稳定性很好,可以与硬件级的F5负载均衡设备相媲美。
  • 最高可以同时维护40000~50000个并发连接,单位使劲按内处理的最大请求数为20000个,最大数据处理能力可达10Gbit/s。
  • 支持多余8种负载均衡算法,同时也支持会话保持。
  • 支持虚拟主机功能,这样实现web负载均衡更加灵活
  • 从1.3版本之后开始支持连接拒绝、全透明代理等功能,这些功能是其他负载均衡器所不具备的。
  • Haproxy拥有一个功能强大的服务器监控页面,通过此页面可以实时了解系统的运行状况。
  • Haproxy拥有功能强大的ACL(访问控制)支持,能给使用带来很大方便

Haproxy是借助于操作系统的技术特性来实现性能最大化的,因此,在使用Haproxy时,对操作系统进行性能调优是非常重要的,在业务系统方面,Haproxy非常适用于并发量特别大且需要持久连接或7层处理机制的web系统,如门户网站或者电商网站等。另外,Haproxy也可以用于MySQL数据库(读操作)的负载均衡。

4层和7层负载均衡器的区别:

四层就是ISO参考模型中的第四层,四层负载均衡器也成为4层交换机,它主要通过分析IP层以及TCP/UDP层的流量实现基于IP加端口的负载均衡,基于4层的常见负载均衡有LVS、F5等。

以常见的TCP应用为例,负载均衡器在收到第一个来自客户端的SYN请求时,会通过设定的负载均衡算法选择一个最佳的后端服务器,同时将报文中的目标IP修改为后端服务器IP,然后直接转发给该后端服务器,这样一个负载均衡请求就完成了。从这个过程来看,一个TCP连接是客户端和服务器直接建立的,而负载均衡请求之不过完成了一个类似路由器的转发动作,在某些负载均衡策略中,为保证后端服务器返回的报文可以正确传递给负载均衡器,在转发报文的同时可能还会对报文原来的源地址进行修改。修改过程如下:
在这里插入图片描述

同理,7层负载均衡器也称为7层交换机,位于OSI的第七层,即应用层,此时负载均衡器支持多种应用协议,常见的有HTTP、FTP、SMTP等,7层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也成为“内容交换机”。比如,对于web服务器分别对应中英文两个网站,两个域名分别是A,B,要实现访问A域名时进入中文网站,访问B域名时 进入英文网站,这在4层负载均衡器中几乎是无法实现的,而7层负载均衡器可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理,常见的7层负载均衡有Haproxy、nginx等。

也以常见的TCP应用为例,由于负载均衡器要获取报文的内容,因此只能先代替后端服务器和客户端建立连接,接着,才能收到客户端发送过来的报文内容,然后再根据该报文中特定字段加上负载均衡器中设置的负载均衡算法来决定最终选择的内部服务器。整个过程,7层负载均衡器类似于一个代理服务器。
在这里插入图片描述

对比4层负载均衡器和7层负载均衡器整个运行过程,可以看出,再7层负载均衡器模式下,负载均衡器与客户端以及后端的服务器分别会建立一次TCP连接,而在4层负载均衡器模式下,仅建立一次TCP连接,由此可见,7层负载均衡器对负载均衡设备的要求更高,而7层负载均衡器的处理能力也必然低于4层模式的负载均衡器。

Haproxy和LVS的异同:

首先,两者都是软件负载均衡的产品,但是LVS是基于Linux操作系统实现的软负载均衡,而Haproxy是基于第三方应用实现的软负载均衡。

LVS是基于4层的IP负载均衡技术,而Haproxy是基于4层和7层技术可提供TCP和HTTP应用的负载均衡综合解决方案。

LVS工作在ISO模型的第四层,因此其状态检测功能单一,而Haproxy在状态监测方面功能强大,可支持端口、URL、脚本等多种状态监测方式。

Haproxy虽然功能强大,但是整体处理性能低于4层模式的LVS负载均衡器,而LVS拥有接近硬件设备的网络吞吐和连接负载能力。

配置Haproxy:

1、翻墙下载Haproxy压缩包

2、解压

[root@localhost ~]# tar -xf haproxy-2.1.1.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/haproxy-2.1.1/
[root@localhost haproxy-2.1.1]# ls
BRANCHES   CONTRIBUTING  examples  LICENSE      README     scripts  tests
CHANGELOG  doc           include   MAINTAINERS  reg-tests  src      VERDATE
contrib    ebtree        INSTALL   Makefile     ROADMAP    SUBVERS  VERSION

3、编译安装

注意:此处编译要使用Linux内核版本,6.X使用linux=26	7.X使用linux=3.1
[root@localhost haproxy-2.1.1]# yum install gcc gcc-c++
[root@localhost haproxy-2.1.1]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost haproxy-2.1.1]# make TARGET=linux31
[root@localhost haproxy-2.1.1]# make install PREFIX=/usr/local/src/Haproxy

4、查看文件

[root@localhost src]# ls
Haproxy  haproxy-2.1.1
[root@localhost src]# cd haproxy-2.1.1/
[root@localhost haproxy-2.1.1]# cd ../Haproxy/
[root@localhost Haproxy]# ls
doc  sbin  share
注意:发现没有配置文件,Haproxy默认不创建配置文件目录,要将源码包中的示例配置文件复制过来
[root@localhost Haproxy]# mkdir /usr/local/src/Haproxy/conf
[root@localhost Haproxy]# cp ../haprox
y-2.1.1/examples/option-http_proxy.cfg ./conf/haproxy.cfg
[root@localhost conf]# vim haproxy.cfg
frontend test-proxy
        bind            192.168.15.164:9090
将这一行修改为本机地址,并且修改监听端口
[root@localhost conf]# /usr/local/src/Haproxy/sbin/haproxy -f /usr/local/src/Haproxy/conf/haproxy.cfg
[ALERT] 350/091802 (2279) : [/usr/local/src/Haproxy/sbin/haproxy.main()] FD limit (16384) too low for maxconn=20000/maxsock=40014. Please raise 'ulimit-n' to 40014 or more to avoid any trouble.This will fail in >= v2.3
发现还是报错,大概分析一下看出来是最大连接数太大了,修改小一点。
[root@localhost conf]# vim haproxy.cfg
global
        maxconn         20
[root@localhost conf]# /usr/local/src/Haproxy/sbin/haproxy -f /usr/local/src/Haproxy/conf/haproxy.cfg
[root@localhost conf]# netstat -nltup |grep 9090
tcp        0      0 192.168.15.164:9090     0.0.0.0:*               LISTEN      2286/haproxy
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值