一、HAProxy介绍
1)HAProxy是由C语言编的自由且开源一款软件,主要是提供负载均衡功能以及TCP层和HTTP应用层的代理软件程序,它支持虚拟主机,HAProxy是一款专业的负载均衡代理软件,它特别适合用于负载量特别大的web站点,而这些站点通常需要对用户的会话需要做保持或者做七层的处理。HAProxy对硬件的要求性并不高,优化得当的话,完成可以支持数以万计的并发连接。而且它的运行模式可以使得它很简单的安全的整合于当前的网站架构中,同时可以保护后端服务器不暴露于网络上,提高了网站的安全性。
2)HAProxy实现了一种事件驱动、单一进行的工作模型,默认只启动一个进程工作,此种工作模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
3)HAProxy还支持ACL(访问控制),可以拒绝指定的主机请求,防止其恶意攻击行为,也可以根据设定规则,使得不同的资源调度到不同的后端服务器上。
4)HAProxy之所以代理能力强大,得益于在于它的工作性能的和设计模式,HAProxy是单进程的、时间驱动模型,这样就降低了进程上下文切换的开销及内存占用;而且HAProxy具有事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测。HAProxy的作者专门为其工作开发出了弹性二叉树数据结构,实现了以O(log(N))的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列。
二、HAProxy的安装与配置参数
主机环境说明:
角色 | 地址 |
---|---|
调度器 | 192.168.126.141 |
后端服务器1 | 192.168.126.128 |
后端服务器2 | 192.168.126.138 |
安装方式:基于rpm软件包安装即可
[root@master ~]# yum install haproxy -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
配置文件参数:
haproxy的配置文件主要由两部分组成:全局设定和对代理的设定,共分为五段:global(全局配置段)、default(默认配置段)、fronte(前端服务器配置段)、backend(后端服务器配置段)、listen(默认监听配置段)
global //全局配置段
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2 //指明haproxy的日志记录方式,此处为记录为自定义的rsyslog中的local2中;
chroot /var/lib/haproxy //修改haproxy的工作目录至指定的目录;
pidfile /var/run/haproxy.pid //指明haproxy的工作进程文件;
maxconn 4000 //指明haproxy的最大并发连接数;
user haproxy //指明以哪个用户运行haproxy进程;
group haproxy //指明以哪个组运行haproxy进程;
daemon //让haproxy以守护进程的模式工作于系统后台;
# turn on stats unix socket
stats socket /var/lib/haproxy/stats //指明haproxy的socket文件位置;
defaults //默认配置段
mode http //haproxy的工作模式,此处指明基于http七层代理的方式工作;
log global //指明日志应用全局配置段的配置
option httplog //使用的日志格式
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s //http的请求超时时长;
timeout queue