设为首页 收藏本站
查看: 2060|回复: 0

[经验分享] haproxy windows环境使用

[复制链接]

尚未签到

发表于 2016-5-24 08:10:24 | 显示全部楼层 |阅读模式
从网上下载了haproxy for windows,学习了下,整理如下:         
1. 把haproxy整个包放到某个目录下

2. 配置haproxy.cfg文件,其中这几个地方需要着重修改
1) pidfile d:/haproxy/haproxy.pid   #在d盘相对路径必须有此文件,否则启动失败
  
2) stats uri /ha?status  #haproxy运行状态查看 自定义uri,1080对应监听端口 如http://10.0.32.138:1080/ha?status,这样在ie直接就能观察到后台程序的健康情况了
       contimeout      500
         clitimeout      5000
         srvtimeout      5000
   
  listen  web_proxy 0.0.0.0:1080   #监听端口  
  3 )配置健康检查的时间间隔:
listen test1
bind 0.0.0.0:8999
mode tcp
balance roundrobin
server s1 127.0.0.1:8001 weight 1 maxconn 1000 check inter 10s

3. 在d盘建立haproxy.pid,内容随便写一个数字

4. 建一个run.bat,内容如下:
title haproxy-run
haproxy.exe -f haproxy.cfg -d
其中, -d会在窗口运行, -D则是后台程序,只能在任务管理器中看到

5. haproxy-test目录为临时写的测试代码

Findings:
   HaServer1和HaServer2作为服务端,HaClient作为客户端(客户端连的是haproxy的ip与端口)。
1. 刚开始时,启动多个客户端,客户端请求haproxy会均衡到2个服务端中,当HaServer2断开,haproxy在一段时间内,还是会均衡到HaServer2的,并且显示客户端写成功,但实际是不成功的。一段时间后,就全部会均衡到HaServer1中。此处“一段时间与”“check inter 10s”有关
2.  然后是客户端与HaServer2如果是长连接,当HaServer断开时,socket是不会自动连接到HaServer1的,而是报连接错误之类的;
3.  Haproxy关闭的话,当然就是客户端包连不上了。


附网上搜索信息(http://www.iyunv.com/Linux/2012-06/61689p2.htm):
1. 配置haproxy
[iyunv@node0 conf]#vim /usr/local/haproxy/conf/haproxy.conf   
#源目录haproxy-1.4.19的子目录examples下有各种配置实例,可参照实例配置.
#参数、选项、架构等说明可参看/usr/local/haproxy/doc下各文件(configuration.txt、architecture.txt等)


# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
        log 127.0.0.1   local0 info
        #全局的日志配置,使用本机的syslog来记录log,请使用/dev/log,其中日志级别是[err warning info debug].local0 是日志设备(/etc/syslog/conf中所定义),
        #必须为如下24种标准syslog设备的一种:
        #kern   user   mail   daemon auth   syslog lpr    news   
        #uucp   cron   auth2  ftp    ntp    audit  alert  cron2   
        #local0 local1 local2 local3 local4 local5 local6 local7   
        maxconn 65536      #最大连接数
        ulimit-n 131087   #必须是maxconn的两倍以上     
        chroot /usr/local/haproxy  #适用于chroot环境,为了安全      
        uid 99              #haproxy运行的用户和组
        gid 99
        daemon              #后台运行      
        nbproc  4           #设置4个并发进程,在做debug时建议设置为1
        pidfile /usr/local/haproxy/logs/haproxy.pid  #PID文件所在地
        option nolinger     #在连接关闭时立即清理连接,减少处于FIN_WAIT1状态的连接
        #debug
        #quiet


defaults
        log     global
        mode    http         #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
        option  httplog      #启用http请求log
        option  dontlognull
        option  http-server-close
        option  abortonclose       #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
        option  allbackups             #但设置了backup的时候,默认第一个backup会优先,设置option allbackups后所有备份服务器权重一样
        option  forwardfor             #如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP
        option  redispatch             #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
        stats   uri /admin/status      #监控haproxy状态的页面,可以使用http://IP/admin/status查看
        stats   auth admin:admin@123   #登录监控页面的用户名密码
        stats   refresh 60s            #监控页面的刷新时间
        retries 3                      #三次连接失败就认为是服务器不可用,也可以通过后面设置
        maxconn 65536                  #默认的最大连接数
        contimeout      5000           #连接超时
        clitimeout      50000          #客户端超时
        srvtimeout      50000          #服务器超时


frontend web_nginx                     #定义前端服务器,相当于F5里的VIP的概念
        mode http
        maxconn 65536
        bind 192.168.32.30:80         #设定vip的监听端口
        bind-process 4                #针对多核处理,启用处理器数量


        acl php_nginx path_end  .php      #判断文件后缀名是不是.php,如果是返回true
        acl html_nginx path_end .html     #判断文件后缀名是不是.html,如果是返回true


        use_backend php_backend if php_nginx   #当满足php_nginx策略时使用php_backend的backend
        use_backend html_backend if html_nginx #当满足html_nginx策略时使用html_backend的backend


backend php_backend
        mode http
        fullconn  4096        #设置最大连接
        balance roundrobin    #负载均衡的方式,roundrobin平均方式
        option  httpchk HEAD /check.php HTTP/1.0   
        #心跳检查Haproxy会判断你的后端web的根上存在check.txt没有,以此作为haproxy-status的监控状态依据,将它#掉即可;
        #如果是生产环境,你可将check.php改为index.jsp或index.php即可。
        #一般的健康检查可以采用HEAD方法来做,而不是才采用GET方法,用于HEAD方法没有数据返回,仅检查Response的HEAD是不是200。相对来说,更快,而且更简单
        server node1  192.168.32.31:80 check inter 2s minconn 64 maxconn 2048 slowstart 10s weight 100
        server node2  192.168.32.32:80 check inter 2s minconn 64 maxconn 2048 slowstart 10s weight 100
        #服务器定义/ip/check inter启用健康检查,检测心跳频率/minconn最小连接数/maxconn最大连接数/slowstart至全速缓冲时间/weight
        
backend html_backend
        mode http
        fullconn 4096
        balance roundrobin
        cookie SERVERID       #允许插入serverid到cookie中,serverid后面可以定义
        option  httpchk HEAD /check.html HTTP/1.0
        server node2  192.168.32.32:80 cookie 2 check inter 2s rise 3 fall 3 weight 100
        server node3  192.168.32.33:80 cookie 3 check inter 2s rise 3 fall 3 weight 100
        #服务器定义,cookie 1表示serverid为1,check inter 2s 是检测心跳频率
        #rise 3是3次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-220848-1-1.html 上篇帖子: (C/C++)Windows Data Type 下篇帖子: k哥的android开发笔记(更新至2012.05.03)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表