从网上下载了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.linuxidc.com/Linux/2012-06/61689p2.htm):
1. 配置haproxy
[root@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代表权重
分享到:
相关推荐
Windows环境下的最新的Haproxy1.4.22
Windows环境下的最新的Haproxy
该版本是博主根据cygwin64生成的haproxy文件,并配置cfg配置文件模板,在windows环境下亲测可用,支持Http的转发,下载后可根据需求直接对cfg文件内容进行修改配置,然后运行startup.bat即可实现负载均衡
已编译的windows环境haproxy文件 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要...
因项目需要使用windows环境的haproxy做SSL终端,但找到的资源都不支持HTTPS卸载,而且版本也比较早,只好自己用MSYS32重新编译目前最新版的1.8.17,使用OPENSSL 1.1.0,测试可用,分享给大家。 具体Haproxy的配置...
该资源包运行在windows64位机器上,内含otp_win64_22.0.exe、rabbitmq-server-3.7.16.exe、haproxy-1.8.14、haproxy.cfg配置样例以及集群操作步骤说明
在Windows平台下可运行的haproxy2.0版本,根据源码在cygwin64位环境下重新编译生成。解压后可直接运行(需根据需要进行准备配置文件)。
Tokaido是一个用于MacOS,Linux和Windows上的Drupal开发环境的自动化平台。 它简化了使用Docker创建,管理,保存和共享本地Drupal项目的过程。 使用Tokaido,您可以在短短5分钟内启动新的Drupal项目或为现有项目...
下面详细介绍如何使用Haproxy+etcd+confd构建一个高可用及自动发现的Docker基础架构。Docker的生态日趋成熟,开源社区也不断孵化出优秀的周边项目,覆盖网络、监控、维护、部署、开发等方面。帮助开发、运维人员快速...