一、HAproxy简介
HAproxy是高性能的代理服务器,其可以提供Lay4、Lay7代理,具有Healthcheck,负载均衡,访问控制特性,完全可以支持数以万计的并发连接,性能卓越。而且HAproxy的运行模式使得它可以很简单安全的整合进当前的架构中,同时可以保护后台的web服务器不被暴露到网络上。
二、实验环境及配置
1.环境
系统环境:centos6.4-i386
haproxy:1.4.22-3-i686
安装:yum-yinstallhaproxy
2.配置文件
global #全局段
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults #默认配置(全局有效)
mode http # 基于那种模式工作(http 、tcp、health)
log global #定义日志
option httplog #详细记录http日志
option dontlognull #不记录健康检查的日志信息
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch #ServerID对应的服务器宕机后,强制定向到其他运行正常的服务器
retries 3 #三次连接服务失败认为服务不可用
timeout http-request 10s #回复报文超时时间
timeout queue 1m #排超队超时时间
timeout connect 10s #连接超时时间
timeout client 1m #客户端超时时间
timeout server 1m #服务器端超时时间
timeout http-keep-alive 10s #长连接超时时间
timeout check 10s #健康检测超时时间
maxconn 3000 #最大连接数
frontend webserver #前端配置
backend appservers #后端服务器
listen stats #listen段(可以单独使用,相当于frontend+backend)
三、反向代理
全局配置和默认配置同上
frontend webserver #定义前端服务
bind *:80
default_backend appserver
backend appserver#定义后端服务
server yxm23 172.16.15.23:80 check #服务名 IP:PORT 健康检测
使用listen段实现反向代理
listen webserver
bind *:80
server yxm23 172.16.15.23:80 check
定义两组服务(listen和frontend、backend混合使用)bind端口不能相同
访问:172.16.15.18:8080安装haproxy服务器的IP
frontend webserver
bind *:80
default_backend appserver
backend appserver
server yxm23 172.16.15.23:80 check
listen staticserver
bind *:8080
server yxm14 172.16.15.14:80 check
四、提供状态页面
listen stats
bind *:8088(定义任意端口)
stats enable #启动状态页面 默认路径http://172.16.15.18:8080/haproxy?stats
stats hide-version #隐藏版本号(B(backend) D(defaults) L(listen))
stats realm Haproxy\ yxm #提供认证(要访问需要提供用户密码)B D L
stats auth yxm:yxm #认证用户名密码 B D L
stats admin if TRUE #提供管理功能(前提是需要先通过认证)L B
stats url /hyxm 修改默认路径 D L B
五、实现负载均衡
1.调度算法
roundrobin:加权轮调
static-rr:轮调,静态调度算法
sourceuri
hash-type:map-based静态
hash-type:consistent动态
2.动态调度算法支持的特性
<1>权重在服务运行时调整
<2>支持慢速启动
静态调度算法实现负载均衡
frontend webserver
bind *:80
default_backend appservers
backend appservers
server yxm23 172.16.15.23:80 check #后端两台服务
server yxm14 172.16.15.14:80 check
动态调度算法实现负载均衡
backend appservers
balance source #调度算法 (source、 uri:适用于缓存服务器)
hash-type consistent #哈希类型,一致性哈希算法
server yxm23 172.16.15.23:80 check weight 2 #默认服务,服务宕掉后,后续服务启动,服务修复后重新夺回服务
server yxm14 172.16.15.14:80 check weight 3 #
六、使用ACL实web动静分离
1.ACL语法解析
ACL(fronedlistenbackend)使用范围
语法acl<aclname><criterior>[flags][operator]<value>
aclacl名称标准标志位操作符值
标志位:-i:忽略字符大小写
值类型:ranges:范围、数字1024:65535#端口1024到65535
operators:ge、eq、lt、le、gt
strings字符串
regularexpression正则表达式
IPaddressesandnetworksIP地址或者网络地址
Criterior:标准
dst<IP>、dst_port、src、src_port
path:访问路径
path_beg:路径以#####开头
eg:aclstaticpath_end.html以.html结尾
path_end:路径以#####结尾
path_reg:匹配正则表达式(与字符串匹配相比速度较慢)
Url、url_beg、url_end
hdr_beg(host):主机名以#####开头
2.web动静分离
frontend webserver
bind *:80
acl static path_beg -i /static /p_w_picpaths /javascript /stylesheets
acl static path_end -i .jpg .png .jpeg .gif .swf .css .js
use_backend staticserve if static
default_backend appservers
backend static
banlance roundrobin
server yxm14 172.16.15.14:80 check weight 1 maxconn 2000#后端服务器
server yxm18 127.0.0.1 check weight 1 backup #本地主机作为备用主机
backend appservers
banlance roundrobin
server yxm23 172.16.15.23:80 check weight 1 maxconn 1000#后端服务器
server yxm18 127.0.0.1 check weight 1 backup #本地主机作为备用主机
转载于:https://blog.51cto.com/dreamwolf/1303972




















