Haproxy配置文件详解

Haproxy是一款免费、稳定、高效的轻量级负载均衡软件,现将其配置文件参数作如下说明:

global #全局配置参数

global #全局配置参数
        log 127.0.0.1 local3 info  #日志级别
        maxconn 4096
        user haproxy
        group haproxy
        daemon                     #设置为后台进程
        pidfile /usr/local/haproxy/haproxy.pid  #进程的pid文件 

     

2 defaults #默认配置,被frontend,backend,listen段继承使用

        log global                #继承global日志
        mode http                 #Haproxy工作模式,四层工作模式为TCP
        option httplog            #记载http日志 
        option  dontlognull       #不记录空日志
        option forwardfor  except 127.0.0.0/8    #使后端服务器获取客户端的真实IP
        option redispatch         #如果cookie中写入ServerID而客户端不会刷新Cookie,那么当ServerID对应的服务器宕机后,将强制定向到其它健康的服务器上
        option abortonclose       #当服务器负载过高时,将自动关闭队列中处理时间较长的连接请求
        option http-server-close  #每次请求完毕后主动关闭http通道
        cookie SERVERID           #允许向cookie中插入SERVERID,服务器的SERVERID在后端使用cookie关键字定义
        retries 3                 #服务器连接失败后的重试次数
        maxconn 2000              #每个进程的最大连接数        
        timeout queue             #等待最大时长
        timeout http-request 10s  #http请求超时时间,在客户端建立连接但不请求数据时,关闭客户端连接
        timeout connect 5000      #连接最大超时时间,默认毫秒
        timeout client 30000      #客户端最大超时时间
        timeout server 30000      #服务端超时时间
        timeout http-keep-alive 30s #会话保持时间
        timeout check         10s #健康状态监测时的超时时间,过短会误判,过长资源消耗
        stats   refresh 30s       #状态刷新频率

3 自定义监控

listen admin_stats                  # 配置段通过关联“前端”和“后端”定义了一个完整的代理,通常只对TCP流量有用
    bind 0.0.0.0:1080               # 监听端口  
    mode http                       # http的7层模式  
    option httplog                  # 采用http日志格式 
    maxconn 10
    stats refresh 30s               # 统计页面自动刷新时间
    stats uri /stats                # 统计页面url  
    stats realm yooCloud Haproxy    # 统计页面密码框上提示文本  
    stats auth admin:admin          # 统计页面用户名和密码设置
    stats hide-version              # 隐藏统计页面上HAProxy的版本信息

4 普通前端后端代理

#前端代理
frontend www_hellozz_com
	bind *:80                                 #绑定主机和端口
	stats uri /haproxy?stats                  #uri状态
	default_backend backend_www_hellozz_com   #转发到对应的后端主机组
#后端代理
backend backend_www_hellozz_com               #自定义头部信息获取客户端真实IP	
	option forwardfor header X-REAL-IP        #自定义option健康检查
	option httpchk GET /index.html            #负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
	balance roundrobin	
	server node1 10.10.100.151:80 check inter 2000 rise 3  fall 3 weight 1  #真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重

5 基于ACL前端后端代理

#前端代理
frontend www_hellozz_com 	
	bind *:80                                                         #绑定主机和端口
	stats uri /haproxy?stats                                          #uri状态	
	default_backend backend_www_hellozz_com                           #转发到对应的后端主机组	
	acl is_backend_app_hellozz_com hdr_end(host) app.hellozz.com      #设置ACL 如果是访问到指定的域名则去匹配相应制定的backend use_backend是关键字,如果不设置,则使用默认的
	use_backend backend_app_hellozz_com if is_backend_app_hellozz_com  
#后端代理
backend backend_www_hellozz_com	
	option forwardfor header X-REAL-IP                                #自定义头部信息获取客户端真实IP	
	option httpchk GET /index.html                                    #自定义option健康检查	
	balance roundrobin                                                #负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID	
	server node1 10.10.100.151:80 check inter 2000 rise 3  fall 3 weight 1 #真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重

backend backend_app_hellozz_com       
        option forwardfor header X-REAL-IP                           #自定义头部信息获取客户端真实IP       
        option httpchk GET /index.html                               #自定义option健康检查      
        balance roundrobin                                           #负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID       
        server node2 10.10.100.152:80 check inter 2000 rise 3  fall 3 weight 1  #真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重

6 基于后缀匹配backend匹配

#前端代理
frontend www_hellozz_com 
	#绑定主机和端口
	bind *:80 
	#uri状态
	stats uri /haproxy?stats
	#转发到对应的后端主机组
	default_backend backend_www_hellozz_com
	#根据后缀匹配下面两种写法都可以
	acl is_static_reg url_reg /*.(css|jpg|png|js|gif)$
	#acl is-static_path path_end .gif .png .js .css .jpg
 	use_backend backend_app_hellozz_com if is_static_reg 
#后端代理
backend backend_www_hellozz_com
	#自定义头部信息获取客户端真实IP
	option forwardfor header X-REAL-IP
	#自定义option健康检查
	option httpchk GET /index.html
	#负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
	balance roundrobin
	#真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重
	server node1 10.10.100.151:80 check inter 2000 rise 3  fall 3 weight 1

backend backend_app_hellozz_com
        #自定义头部信息获取客户端真实IP
        option forwardfor header X-REAL-IP
        #自定义option健康检查
        option httpchk GET /index.html
        #负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
        balance roundrobin
        #真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重
        server node2 10.10.100.152:80 check inter 2000 rise 3  fall 3 weight 1

7  基于URL匹配

#前端代理
frontend www_hellozz_com 
	#绑定主机和端口
	bind *:80 
	#uri状态
	stats uri /haproxy?stats
	#转发到对应的后端主机组
	default_backend backend_www_hellozz_com
	#基于URL匹配
	acl is_do_path url_reg /api.do
	use_backend backend_app_hellozz_com if is_do_path 
#后端代理
backend backend_www_hellozz_com
	#自定义头部信息获取客户端真实IP
	option forwardfor header X-REAL-IP
	#自定义option健康检查
	option httpchk GET /index.html
	#负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
	balance roundrobin
	#真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重
	server node1 10.10.100.151:80 check inter 2000 rise 3  fall 3 weight 1

backend backend_app_hellozz_com
        #自定义头部信息获取客户端真实IP
        option forwardfor header X-REAL-IP
        #自定义option健康检查
        option httpchk GET /index.html
        #负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
        balance roundrobin
        #真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重
        server node2 10.10.100.152:80 check inter 2000 rise 3  fall 3 weight 1

8 基于基于 ua匹配

#前端代理
frontend www_hellozz_com 
	#绑定主机和端口
	bind *:80 
	#uri状态
	stats uri /haproxy?stats
	#转发到对应的后端主机组
	default_backend backend_www_hellozz_com
#基于UA 匹配
	acl is_ua_path hdr_reg(User-Agent) -i android
	use_backend backend_app_hellozz_com if is_ua_path

#后端代理
backend backend_www_hellozz_com
	#自定义头部信息获取客户端真实IP
	option forwardfor header X-REAL-IP
	#自定义option健康检查
	option httpchk GET /index.html
	#负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
	balance roundrobin
	#真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重
	server node1 10.10.100.151:80 check inter 2000 rise 3  fall 3 weight 1

backend backend_app_hellozz_com
        #自定义头部信息获取客户端真实IP
        option forwardfor header X-REAL-IP
        #自定义option健康检查
        option httpchk GET /index.html
        #负载均衡方式 roundrobin 轮询,source like iphash,cookie,SERVERID
        balance roundrobin
        #真实Server   check 支持url健康检测 inter 时间间隔默认为毫秒,rise 检查次数, fall 失败次数 weight 权重
        server node2 10.10.100.152:80 check inter 2000 rise 3  fall 3 weight 1

9 haproxy 调优

1  不设置进程
2  网卡速率
3  端口可能会用尽 更改内核参数增加算口方位  cat /proc/sys/net/ipv4/ip_local_port_range
	设置tcp端口复用 cat /proc/sys/net/ipv4/tcp_tw_reuse  数字为 1 
	缩短端口占用时间:cat /proc/sys/net/ipv4/tcp_fin_timeout 
	使用多IP

 

转载于:https://my.oschina.net/54188zz/blog/3026111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值