Haproxy及相关配置案例
前言LB Cluster中可以分为四层调度和七层调度。前面学的LVS、nginx(stream模块)都属于四层调度,七层调度有nginx(http模块)等。HAProxy是一款应对客户端10000以上的同时连接的高性能的TCP和HTTP负载均衡器。就是说四层和七层都可以调度,这就是为什么HAProxy是一款专业的调度器。简单说它的功能是用来提供基于cookie的持久性,基于内容的交换,过载保护的高级流量管制,自动故障切换,以正则表达式为基础的控制运行时间,基于Web的报表,高级日志记录以帮助排除故障的应用或网络及其他功能。
HAProxy功能
1、支持TCP / HTTP反向代理服务器,尤其适合于高可用性环境
2、支持http反向代理
3、支持动态程序的反向代理
4、支持基于数据库的反向代理
HAProxy配置文件结构
1、global:全局配置段
进程及安全配置相关的参数
性能调整相关参数
Debug参数
2、proxies:代理配置段
defaults:为frontend, backend, listen提供默认配置
frontend:前端,相当于nginx中的server {}
backend:后端,相当于nginx中的upstream {}
listen:同时拥有前端和后端,适用于一对一环
简单的轮询调度
frontend http
bind 172.18.32.118:80
default_backend websrvs
backend websrvs
balance roundrobin
server srv1 192.168.32.9:80 check
server srv2 192.168.32.10:80 check 或者一对一的写法也可以,灵活性不高
listen http
bind :80,:8080
balance roundrobin
server srv1 192.168.32.9:80 check
server srv2 192.168.32.10:80 check 记录日志:默认配置文件中已经定义了日志记录,但是还需要去日志配置文件中打开通道,并配置。也可以记录在另外的日志服务器中。
]#cat /etc/haproxy/haproxy.cfg
log 127.0.0.1 local2
]#vim /etc/rsyslog.conf
$ModLoad imudp 这两行默认注销的,需打开
$UDPServerRun 514
local2.* /var/log/haproxy.log 基于uri的调度和hash环的一致性配置
backend websrvs
balance uri
hash-type consistent
... 因为HAProxy是应用层的调度,还可以根据http首部来进行调度
backend websrvs
balance hdr(host)
... 定义sorry server,当后端服务器都宕机的情况下使用,注意端口不要冲突
backend websrvs
server sorryserver 192.168.32.101:8080 backup
... 健康状态检查,检测的地址和提供服务的地址分开
addr:检测时使用的IP地址
port :针对此端口进行检测
inter :检测之间的时间间隔,默认为2000ms
rise :连续多少次检测结果为“成功”才标记服务器为可用;默认为2
fall :连续多少次检测结果为“失败”才标记服务器为不可用;默认为3
backend websrvs
balance roundrobin
server srv1 192.168.32.9:80 check weight 1 addr 192.168.32.101 prot 80 inter 3000 rise 3 fall 3
... 如果有服务器需要维护,可以设置disabled,标记为不可用,就不会往这个服务器上调度了。
server srv1 192.168.32.9:80 disabled 重定向到另一个地址
server srv1 192.168.32.9:80 redir http://www.baidu.com 基于cookie的的session sticky的调度
backend websrvs
cookie SRV insert nocache
server srv1 192.168.32.9:80 weight 2 check cookie srv1
server srv2 192.168.32.10:80 check cookie srv2
... 启用web管理界面
listen admin 192.168.32.101:8080
stats enable
页:
[1]