加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

haproxy http和tcp代理详解

(2015-04-30 11:47:22)
标签:

运维

it

haproxy

负载均衡

四层代理

分类: haproxy

global:全局配置参数,进程级的,用来控制Haproxy启动前的一些进程及系统设置 
defaults:配置一些默认的参数,可以被frontend,backend,listen段继承使用 
frontend:用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理 ,我将其理解为server
backend:定义后端服务器集群,以及对后端服务器的一些权重、队列、连接数等选项的设置,我将其理解为Nginx中的upstream块 
listen:我将其理解为frontend和backend的组合体
  

acl(关键字) 定义acl(名称)  方法          -i (忽略大小写)  [匹配的路径或文件]
                          hdr_beg(host) 主机头
                          hdr_reg(host) 主机结尾
                          path_beg url 目录 
                          path_end url 结尾文件 

global
  log     127.0.0.1 local2  定义全局日志服务器
  chroot   /usr/local/haproxy  修改haproxy的工作目录到制定的目录,提高安全性
  pidfile   /var/run/haproxy.pid pid文件位置
  maxconn   4000      最大连接数
  user    haproxy     服务运行时的身份,也可以用uid来表示
  group    haproxy     服务运行时的身份所属的组,可以用gid来表示
  Daemon           服务以守护进程的身份运行
  nbproc #进程数

defaults
  mode  http      为http服务代理,http为7层协议,tcp4层
  log   global     全局日志
  option httplog      日志类别为http日志格式
  option dontlognull   不记录健康查询的日志
  option httpclose   关闭超时的http连接
  option http-server-close  每次请求完后主动关闭http通道,支持客户端长连接
  option forwardfor  except 127.0.0.0/8 如果后端服务器需要获得客户端真实ip需要配置的参数,可以从http header中获得客户端ip
  option  redispatch   #serverid对应的服务器挂掉后,强制定向到其他健康的服务器
  retries        #3次连接失败就认为服务不可用,也可以通过后面设置
  timeout http-request 10s 请求超时间
  timeout queue  1m   排队超时
  timeout connect 5000ms   连接超时
  timeout client  30000ms  客户端超时
  timeout server  30000ms   服务器端超时
  timeout http-keep-alive 10s 保持连接超时
  timeout check  10s    健康检测超时
  maxconn    3000   每个进程最大连接数,可以在global中配置



frontend http_80_in 
       bind 0.0.0.0:80
       mode http 
       log global 
       option httplog 
       option httpclose #每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式 
       option forwardfor #如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP 
       ########acl策略配置############# 
       acl itnihao_web hdr_reg(host) -i ^(www.itnihao.cn|ww1.itnihao.cn)$ 
       #如果请求的域名满足正则表达式中的2个域名返回true -i是忽略大小写 
       acl itnihao_blog hdr_dom(host) -i blog.itnihao.cn 
       #如果请求的域名满足www.itnihao.cn返回true -i是忽略大小写 


 ########acl策略匹配相应############# 
       use_backend server_web if itnihao_web 
       #当满足itnihao_web的策略时使用server_web的backend 
       use_backend server_blog if itnihao_blog 
       #当满足itnihao_blog的策略时使用server_blog的backend 
       default_backend server_bbs 
       #以上都不满足的时候使用默认server_bbs的backend 


#########tcp代理########
frontend yqd-front
       bind *:3307
       mode tcp
       default_backend yqd-back

 
 
##########backend的设置############## 
#下面我将设置三组服务器 server_web,server_blog,server_bbs
##################backend server_web####################
backend server_web 
       mode http #http的7层模式 
       balance roundrobin #负载均衡的方式,roundrobin平均方式 
       cookie SERVERID #允许插入serverid到cookie中,serverid后面可以定义 
       option httpchk GET /index.html #心跳检测的文件 
       server web1 192.168.16.2:80 cookie web1 check inter 1500 rise fall weight 
       #服务器定义,cookie 1表示serverid为web1,check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用, 
       #fall 3是3次失败认为服务器不可用,weight代表权重 
       server web2 192.168.16.3:80 cookie web2 check inter 1500 rise fall weight 

###################backend server_blog######################
backend server_blog 
       mode http #http的7层模式 
       balance roundrobin #负载均衡的方式,roundrobin平均方式 
       cookie SERVERID #允许插入serverid到cookie中,serverid后面可以定义 
       option httpchk GET /index.html #心跳检测的文件 
       server blog1 192.168.16.2:80 cookie blog1 check inter 1500 rise fall weight 
       server blog2 192.168.16.3:80 cookie blog2 check inter 1500 rise fall weight 

##################backend server_bbs######################## 
backend server_bbs 
       mode http #http的7层模式 
       balance roundrobin #负载均衡的方式,roundrobin平均方式 
       cookie SERVERID #允许插入serverid到cookie中,serverid后面可以定义 
       option httpchk GET /index.html #心跳检测的文件 
       server bbs1 192.168.16.2:80 cookie bbs1 check inter 1500 rise fall weight 
       server bbs2 192.168.16.3:80 cookie bbs2 check inter 1500 rise fall weight 
##################backend yqd-back######################## 

backend yqd-back
       mode tcp
       balance leastconn
       option httpchk
       server percona-node1 192.168.1.243:3306 check port 9200 inter 12000 rise fall 3
       server percona-node2 192.168.1.233:3306 check port 9200 inter 12000 rise fall 3
       server percona-node3 192.168.1.244:3306 check port 9200 inter 12000 rise fall 3

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有