一、概念
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
1、global:参数是进程级的,通常是和操作系统相关。这些参数一般只设置一次,如果配置无误,就不需要再 次进行修改
2、defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件
3、frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend
4、backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器
5、Listen Fronted和backend的组合体
二、安装
1.haproxy安装包 haproxy-1.3.28.tar.gz
2.上传并解压:
tar -zxvf haproxy-1.3.28.tar.gz
创建目录 mkdir /usr/local/haproxy/
3.安装
cd haproxy-1.3.28
make TARGET=linux26 PREFIX=/home/haproxy/haproxy
#将haproxy安装到/usr/local/haproxy ,TARGET是指定内核版本
make install PREFIX=/usr/local/haproxy
创建主配置文件目录/usr/local/haproxy/conf
cp /mnt/haproxy-1.3.28/examples/haproxy.cfg /usr/local/haproxy/conf/
三、配置
vim /usr/local/haproxy/conf/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
# redispatch
maxconn 2000
.......
listen appli5-backup 0.0.0.0:10005
option httpchk *
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
server inst3 192.168.114.57:80 backup check inter 2000 fall 3
capture cookie ASPSESSION len 32
srvtimeout 20000
option httpclose # disable keep-alive
option checkcache # block response if set-cookie & cacheable
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address
# errorloc 502 http://192.168.114.58/error502.html
# errorfile 503 /etc/haproxy/errors/503.http
listen test
bind 0.0.0.0:90
mode http
server server1 172.25.31.1:80 weight 1
server server2 172.25.31.2:80 weight 1
启动服务:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
四、测试
测试环境:
server1 172.25.31.1:90 配有haproxy http
server2 172.25.31.2:80/index.html server2 > index.html 配有http
1、打开server1的haproxy http 以及server2 的 http
2、分别在物理机浏览器上访问 172.25.31.1:90 以及 172.25.31.2:80/index.html
都会显示 server2
3、若关闭server1的haproxy