haproxy -f <配置文件> [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p <pid文件>] [-s] [-l] [-dk]
[-ds] [-de] [-dp] [-db] [-m <内存限制M>] [{-sf|-st} pidlist...]
-d 前台,debug模式
-D daemon模式启动
-q 安静模式
-V 罗嗦模式
-c 对配置文件进行语法检查
-s 显示统计数据
-l 显示详细统计数据
-dk 不使用kqueue
-ds 不使用speculative epoll
-de 不使用epoll
-dp 不使用poll
-db 禁用后台模式,程序跑在前台
-sf <pidlist>
程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
-st <pidlist>
程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后让haproxy记日志,改syslog配置时候花了些时间,因为对这个东西不是很熟悉,只有个概念。没仔细看脚本,改了启动脚本里的参数,却没看上面几行脚本是从sysconfig下读配置的。折腾了一会儿。
ha的配置如下,负载均衡到两台varnish上。
syslog.conf里加一行
local3.* /var/log/haproxy.log
以下日志是我在写这个BLOG时候的,BLOG程序自动保存草稿的请求,先是两个后端varnish轮流,然后我关掉一台,haproxy检测到goingdown,此后就只向活着的那台转发了。
Dec 18 17:20:36 test1 haproxy[14373]: 61.XXX.XXX.XXX:3384 [18/Dec/2007:17:19:46.059] appli1 appli1/app1_2 0/0/0/75/50078 200 660 - - cDNN 0/0/0/0 0/0 "POST /guanli/c_autosaverjs.asp HTTP/1.1"
Dec 18 17:21:36 test1 haproxy[14373]: 61.XXX.XXX.XXX:3385 [18/Dec/2007:17:20:46.051] appli1 appli1/app1_1 0/0/0/75/50079 200 660 - - cDNN 0/0/0/0 0/0 "POST /guanli/c_autosaverjs.asp HTTP/1.1"
Dec 18 17:22:37 test1 haproxy[14373]: 61.XXX.XXX.XXX:3386 [18/Dec/2007:17:21:46.041] appli1 appli1/app1_2 0/0/0/1451/51454 200 660 - - cDNN 0/0/0/0 0/0 "POST /guanli/c_autosaverjs.asp HTTP/1.1"
Dec 18 17:23:21 test1 haproxy[14373]: 61.XXX.XXX.XXX:3387 [18/Dec/2007:17:22:46.040] appli1 appli1/app1_1 7/0/1/62/35065 200 660 - - CDNN 0/0/0/0 0/0 "POST /guanli/c_autosaverjs.asp HTTP/1.1"
Dec 18 17:23:25 test1 haproxy[14373]: Server appli1/app1_1 is DOWN. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
Dec 18 17:24:36 test1 haproxy[14373]: 61.XXX.XXX.XXX:3388 [18/Dec/2007:17:23:46.029] appli1 appli1/app1_2 0/0/0/72/50074 200 660 - - cDNN 0/0/0/0 0/0 "POST /guanli/c_autosaverjs.asp HTTP/1.1"
Dec 18 17:25:36 test1 haproxy[14373]: 61.XXX.XXX.XXX:3389 [18/Dec/2007:17:24:46.060] appli1 appli1/app1_2 0/0/0/79/50082 200 660 - - cDNN 0/0/0/0 0/0 "POST /guanli/c_autosaverjs.asp HTTP/1.1"
global
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen appli1 0.0.0.0:80
mode http
option httplog
option dontlognull
log 127.0.0.1 local3
cookie SERVERID rewrite
balance roundrobin
option httpchk
stats uri /hastat
server app1_1 192.168.0.11:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server app1_2 192.168.0.12:80 cookie app1inst2 check inter 2000 rise 2 fall 5