您的位置:首页 > 其它

Haproxy配置详解

2014-02-20 16:28 706 查看
详细讲解:http://freeloda.blog.51cto.com/2033581/1294094HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。
拓扑介绍:前端两台服务器提供高可用和haproxy,,后端有动态和静态服务器组,haproxy将动态和静态页面请求分发到不同的服务器上;在测试情况下有异常发生,当跟踪的脚本失败后,没有按照预定的动作执行;但有一点是可以肯定的,当一台服务器宕机后,服务可以正常提供;由MASTER上的keepalived提供VIP和后端服务器的网关;(在本例中用不到后端服务器网关,因为后端服务器只需与代理服务器交互,它们是在同一个网段的,不需要网关。本例中给出配置,以备不时之需)



一、keepalived配置:(配置选项含义请参考上篇)
二、Haproxy配置分析:

效果如下:

登录成功后:

调度算法:动态算法:支持动态调整权重,可以在运行中调整而不用重启服务;支持慢速启动(在刚开机时不起作用);roundrobin 轮调leastconn 最少连接sourcehash-type : consistent 一致性哈希算法,静态算法:支持权重,不支持动态调整,调整后需重启服务;static-rrsourcehash-type :map-based:将source IP进行hash后,对后端服务器的个数取余算法;uri 根据uri分配服务器,适用于后端是缓存服务器;也支持2种hash-type;同source算法;还支持参数,len # 和depth # ,用法如下balance uri [len <len>][depth <depth>]
URL syntax:<scheme>://<user>:<password>@<host>:<port>/path;<params>?<query>#<frag>url_param常用于跟踪用户id,将具有特定的用户标示的GET请求发往特定的服务器;默认是静态算法,用hash-type修改;用法如下;balance url_param <param>[check_post [<max_wait>]]balance url_paramuserid
balance url_param session_id check_post 64hdr,根据请求头部中的字段进行调度;balancehdr(User-Agent)
balance hdr(host)
balance hdr(Host) use_domain_only
自定义日志输出位置:
Haproxy中ACL的使用:acl <aclname> <criterion> [flags] [operator] <value> ...
server和default-server options:
backup :当后端服务器都发生故障时,由backup服务器发送错误页面:在haproxy服务器上启动http服务以apache为例,监听在127.0.0.1的某个端口:
在stats页面中将后端服务器禁用

结果就是:


fall:<count> 检测失效的次数;inter <delay> 检测的间隔disabled 手动禁用服务器maxconn <count>最大连接数observe <mode> “layer4”“layer7”观察模式redir <prefix> 只能重定向HEAD和GET# server node4.magedu.com 192.168.10.4:80 check weight 1 redir http://www.afwing.com



rise <count>检测多少次才算是成功;slowstart 支持慢启动,第一次启动时不算;weight 权重
monitor-uri,通过访问monitor-uri显示集群总体状况,
下图所示,当后端主机少于2台时的状况。(可以通过手动disable后端一台主机查看情况)

当后端主机大于2台时:


更多信息请参考官方主站:http://cbonte.github.io/haproxy-dconv/configuration-1.4.html我的配置:

global
#log 127.0.0.1 local0
log 127.0.0.1 local3
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy
uid nobody
gid nobody
daemon
#debug
#quiet
nbproc 2
pidfile /usr/local/haproxy/run/haproxy.pid
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

listen http_80_in 0.0.0.0:80
mode http
option httpchk GET /index.html HTTP/1.0\n\nHost:10.0.2.90
# appli1-rewrite 0.0.0.0:10001
#cookie SERVERID rewrite
balance roundrobin
server app1_1 10.0.2.203:80 check inter 2000 rise 2 fall 5
server app1_2 10.0.2.202:80 check inter 2000 rise 2 fall 5
#server app1_3 10.0.2.202:8080 cookie app1inst3 check inter 2000 rise 2 fall 5
#server app1_4 10.0.2.202:8080 cookie app1inst4 check inter 2000 rise 2 fall 5

listen stats 0.0.0.0:1080
mode http
transparent
stats uri / haproxy-admin
stats realm Haproxy \ statistic
stats auth test:123456
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息