目录

        一、Haproxy概述

        1.1 概述

        1.2 Haproxy特性

        1.3 Haproxy常见负载均衡策略

        二、Haproxy环境搭建

        2.1 实验设备

        2.2 Haproxy服务器配置搭建

        2.3 web服务器搭建

         三、HAproxy日志问题

        3.1 问题原因

        3.2 解决办法


        一、Haproxy概述

        1.1 概述

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

        HAProxy是可提供高可用性、负载均衡以及基于TcP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HProxy非常适用于并发大(并发达1w以上) web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。

        1.2 Haproxy特性

        可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;

        最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;

        支持多达8种负载均衡算法,同时也支持会话保持;

        支持虚拟机主机功能,从而实现web负载均衡更加灵活;

        支持连接拒绝、全透明代理等独特的功能;

        拥有强大的ACL支持,用于访问控制;

        其独特的弹性二义树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条日的增加而速度有所下降;·支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;

        支持TCP加速,零复制功能,类似于mmap机制;

        支持响应池(response buffering) ;

        支持RDP协议;

        基于源的粘性,类似nginx的ip hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;·更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;

        详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;

        基于流量的健康评估机制;

        基于http认证;

        基于命令行的管理接口;

        日志分析器,可对日志进行分析

        1.3 Haproxy常见负载均衡策略

roundrobin

表示简单的轮询

static-rr

表示根据权重

leastconn

表示最少连接者先处理

source

表示根据请求源IP

uri

表示根据请求的URI,做cdn需使用

url param

表示根据请求的URl参数' balance url param’requires an URL parameter name

hdr(name)

表示根据HTTP请求头来锁定每一次HTTP请求

rdp-cookie (name)

表示根据据cookie(name)来锁定并哈希每一次TCP请求

        二、Haproxy环境搭建

        2.1 实验设备

        一台Haproxy服务器、两台http服务器

        2.2 Haproxy服务器配置搭建

##关闭防火墙
[root@lppdff ~]# systemctl stop firewalld
[root@lppdff ~]# setenforce 0
##下载安装编译包,放入安装包
[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
##解压安装包
[root@lppdff opt]# tar xzf haproxy-1.4.24.tar.gz

Haproxy性能抖动 haproxy 限速_服务器

 

##编译
[root@lppdff haproxy-1.4.24]# make TARGET=linux2628 ARCH=X86_64
[root@lppdff haproxy-1.4.24]# make install

Haproxy性能抖动 haproxy 限速_运维_02

 

##创建文件写入服务器记录
[root@lppdff haproxy-1.4.24]# mkdir /etc/haproxy
[root@lppdff haproxy-1.4.24]# cd examples/
##拷贝配置文件
[root@lppdff examples]# cp haproxy.cfg /etc/haproxy/
##写入服务器记录
[root@lppdff haproxy]# vim haproxy.cfg 
listen  webcluster 0.0.0.0:80
        option httpchk GET /test.html
        balance roundrobin
        server  inst1 192.168.162.111:80 check inter 2000 fall 3
        server  inst2 192.168.162.101:80 check inter 2000 fall 3

Haproxy性能抖动 haproxy 限速_负载均衡_03

##拷贝运行启动脚本放入
[root@lppdff examples]# cp haproxy.init /etc/init.d/haproxy
##给文件加入执行权限
[root@lppdff examples]# chmod +x /etc/init.d/haproxy
[root@lppdff examples]# chkconfig --add haproxy
##软链接放入全局配置下便于使用
[root@lppdff examples]# ln -s /usr/local/sbin/haproxy  /usr/sbin/

        2.3 web服务器搭建

##关闭防火墙,安装httpd服务
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y

##编写网页文件
[root@localhost ~]# vim /var/www/html/test.html
##开启http服务
[root@localhost ~]# systemctl start httpd

##过滤80端口的服务
[root@localhost ~]# ss -ntap |grep 80

Haproxy性能抖动 haproxy 限速_负载均衡_04

 

Haproxy性能抖动 haproxy 限速_Haproxy性能抖动_05

         模拟访问

Haproxy性能抖动 haproxy 限速_Haproxy性能抖动_06

         三、HAproxy日志问题

        3.1 问题原因

        HAproxy本身不记录客户端的访问日志.此外为减少服务器负载,一般生产中HAProxy不记录日志.也可以配置HAProxy利用rsyslog服务记录日志到指定日志文件中。

        3.2 解决办法

修改haproxy服务器中日志地址记录 

[root@lppdff haproxy]# vim haproxy.cfg

        

Haproxy性能抖动 haproxy 限速_vim_07

 

修改日志存放的web服务器1配置(如果存放在haproxy服务器本身的日志文件下需要在haproxy服务器修改此配置文件)

[root@localhost ~]# vim /etc/rsyslog.conf
[root@localhost ~]# systemctl restart rsyslog.service
##查看是否存在日志文件,如果未启动将提供服务的haproxy重新启动
[root@localhost log]# cat /var/log/haproxy.log

 

Haproxy性能抖动 haproxy 限速_vim_08

Haproxy性能抖动 haproxy 限速_Haproxy性能抖动_09

 验证

Haproxy性能抖动 haproxy 限速_Haproxy性能抖动_10