分类:
2010-07-07 11:28:10
Haproxy安装配置
一. 安装和基本部署 官方网站:haproxy.1wt.eu
安装:修改Makefile 指定到安装位置。例如
#### Installation options. DESTDIR = PREFIX = /usr/local/haproxy SBINDIR = $(PREFIX)/sbin MANDIR = $(PREFIX)/share/man DOCDIR = $(PREFIX)/doc/haproxy |
# make TARGET=linux26
#make install
可选设置:让vim彩色显示haproxy.cfg中关键字和语法
建立目录$HOME/.vim/syntax/,把haproxy.vim复制其中
修改$HOME/.vimrc (没有的话复制/etc/vimrc)加入:
au BufRead,BufNewFile haproxy.cfg set ft=haproxy |
注意:其中haproxy.cfg是我指定到这一个文件。默认为haproxy*
这样会让所有非配置文件的haproxy.*包括启动脚本等文件找不到语法颜色
配置文件:examples 下的有很多范例根据acl,proxy等功能侧重展开的配置,可参考。
定义好log级别,和chroot目录权限是否为haproxy.cfg中指定的uid和gid
global log localhost local0 log localhost local0 notice uid 71 gid 71 chroot /usr/local/haproxy/chroot (注意权限) pidfile /usr/local/haproxy/chroot/haproxy.pid |
Log设置: /etc/syslog.conf新加
local0.* /var/log/haproxy.log |
/etc/sysconfig/syslog增加
SYSLOGD_OPTIONS="-m 0 -r" |
重启日志服务# /etc/init.d/syslog restart
启动脚本:examples 下的 haproxy.init 可以使用,如果有需要的话,需要修改其中的相应内容等
注意:重启脚本里默认的stop和status选项无法关闭haproxy,提示Faild
需要修改为:(具体参考/etc/init.d/functions中的各项用法,可能因系统而不同)
killproc -p /usr/local/haproxy/chroot/haproxy.pid haproxy |
status -p /usr/local/haproxy/chroot/haproxy.pid |
排除故障:当一切修改完毕后,执行/etc/init.d/haproxy无任何响应,可能是配置文件中的运行账户权限或着日志等配置错误,并非启动脚本错误!
马上就可以正式启动了! System V 脚本工作正常,start stop status 等各项可以正常使用 !
并且正常返回 [OK] !
----------------------------------------------------------------------------------------------
附haproxy.cfg配置文件 (提供给tomcat集群做前段负载均衡)
---------------
##---------------------Haproxy for huodong -------------------------#
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 65536
chroot /web/Haproxy/chroot
uid 99
gid 99
pidfile /web/Haproxy/logs/haproxy.pid
stats socket /var/run/haproxy.stat mode 600
daemon
defaults
mode http
log global
option httplog
retries 3
option redispatch
option abortonclose
maxconn 65536
contimeout 5000
clitimeout 30000
srvtimeout 30000
timeout check 2000
option dontlognull
frontend haproxy
bind 0.0.0.0:80
mode http
option httplog
option httpclose
option forwardfor
maxconn 65536
clitimeout 30000
capture request header Host len 20
capture request header User-Agent len 16
capture request header Content-Length len 10
capture request header Referer len 20
capture response header Content-Length len 10
# allow other syntactically valid requests, and block any other method
acl valid_method method GET HEAD POST OPTIONS
block if !valid_method
block if HTTP_URL_STAR !METH_OPTIONS
block if !HTTP_URL_SLASH !HTTP_URL_STAR !HTTP_URL_ABS
# ... some HTTP content smugling and other various things
acl forbidden_hdrs hdr_cnt(host) gt 1
acl forbidden_hdrs hdr_cnt(content-length) gt 1
acl forbidden_hdrs hdr_val(content-length) lt 0
acl forbidden_hdrs hdr_cnt(proxy-authorization) gt 0
block if forbidden_hdrs
# block annoying worms that fill the logs...
acl forbidden_uris url_reg -i .*(\.|%2e)(\.|%2e)(%2f|%5c|/|\\\\)
acl forbidden_uris url_sub -i %00