Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具备不少,如LVS和Nginx。相比较而言,LVS性能最好,可是搭建相对复杂,Nginx的upstream模块支持群集功能,可是相对群集节点健康检查功能不强,性能没有Haproxy好,更多的是应用在企业内网环境中。html
HAProxy虽然名字前有HA,但它并非一款高可用软件,而是一款用于实现负载均衡的软件,可实现四层与七层的负载均衡。web
上述几个web群集调度器属于软件类型的,还有不少硬件群集调度器,硬件通常使用比较多的是F5,也有不少公司使用国产的一些产品,如梭子鱼、绿盟等。硬件群集调度器有一些比较显而易见的缺点,若是说出问题了,还要须要厂家的技术支持,厂家维护时还须要咱们的错误日志,在出现问题到问题解决这段时间,可能一个月的时间都过去了。如果使用软件型的群集调度器,那么只要咱们运维人员技术过硬,发现问题到解决问题,很快的。redis
关于haproxy的经常使用调度算法,能够参考博文:Haproxy支持的调度算法。算法
haproxy的详细配置过程和配置日志记录,能够参考博文:keepalived+Haproxy搭建高可用Web群集。centos
这篇博文不谈如何配置haproxy,主要来聊一下它的配置文件说明以及生产环境中的参数调优。bash
haproxy的配置文件一般分为三个部分:global、defaults和listen。依次为全局配置、默服务器
认配置、应用组件配置。app
global配置:负载均衡
global log 127.0.0.1 local #配置日志记录,local0为日志设备,默认存放到系统日志 log 127.0.0.1 local1 notice #notice为日志级别,一般有24个级别 #log loghost local0 info maxconn 4096 #最大链接数 chroot /usr/share/haproxy #该服务自设置的根目录,通常需将此行注释掉 uid 99 #用户UID gid 99 #用户GID daemon #守护进程模式
defaults配置项配置默认参数,通常会被应用组件继承,若是在应用组件中没有特别的声明,将安装默认配置参数:运维
defaults log global #定义日志为global配置中的日志定义 mode http #模式为http option httplog #采用http日志格式记录日志 option dontlognull retries 3 #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用 redispatch #当服务器负载很高时,自动结束当前队列处理比较久的链接 maxconn 2000 #最大链接数 contimeout 5000 #链接超时时间 clitimeout 50000 #客户端超时时间 srvtimeout 50000 #服务器超时时间
listen配置项通常配置应用模块参数:
listen appli4-backup 0.0.0.0:10004 #定义一个名为appli4-backup的应用 option httpchk /index.html #检查服务器的index.html文件 option persist #强制将请求发送到已经down掉的服务器,通常禁用此选项。 balance roundrobin #负载均衡调度算法使用轮询算法 server inst1 192.168.114.56:80 check inter 2000 fall 3 #定义在线节点 server inst2 192.168.114.56:81 check inter 2000 fall 3 backup #定义备份节点#注意:在以上定义备份节点的参数中,#“check inter 2000”表示haproxy服务器和节点之间的一个心跳频率,#“fall 3”表示连续三次检测不到心跳频率则认为该节点失效。#节点配置后带有“ backup”表示该节点只是个备份节点,只有主节点失效该节点才会上。#去除backup,表示为主节点,和其余主节点共同提供服务。
haproxy的参数调优: