HAProxy配置使用说明
发布:倪海涛
来自:BudiChina.com
更新:2010-04-01 00:19:13
转帖:http://docs.google.com/Doc?docid=0ActkiVDkvyOuZGhiNHI2cGhfNjNjbTVkczlncg&hl=zh_CN
摘要:HAProxy - 可靠、高性能的TCP/HTTP 负载均衡器. 这个是必学的.
++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++
简介:
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。
HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式下,HAproxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求(request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。
详情可以在HAProxy官方网站(http://haproxy.1wt.eu)可以下载配置说明文档(configuration.txt)和架构文件(architecture.txt)作为参考。
1. HAProxy的安装
在“http://haproxy.1wt.eu/#down”下载HAProxy的源码包。这里以1.3.20版本,安装在目录/home/admin/haproxy为例
解压下载的源码包
tar -xzvf haproxy-1.3.20.tar.gz
2.编译安装
进入解压后的源码目录
make TARGET=linux26 PREFIX=/home/admin/haproxy install
(注意,TARGET后面根据本机操作系统内核版本来填写,PREFIX是要安装到的目录)
安装完成后会在安装目录下生成doc ,sbin ,share三个文件夹。解压的源码文件也可以删除掉。
3.创建配置文件
在安装目录下建立配置文件目录
mkdir conf
在新创建的目录下创建配置文件
vi haproxy.cfg
在创建的haproxy.cfg文件中填入
global
log 127.0.0.1 local0 info #[err warning info debug]
maxconn 4096
user admin
group admin
daemon
nbproc 1
pidfile /home/admin/haproxy/logs/haproxy.pid
defaults
maxconn 2000
contimeout 5000
clitimeout 30000
srvtimeout 30000
listen admin_stats
bind 0.0.0.0:1080
mode http
log 127.0.0.1 local0 err
stats uri /admin?stats
这个配置是能让HAProxy工作起来的最小配置
4.启动HAProxy
进入安装目录下的sbin目录
启动HAProxy
./haproxy -f ../conf/haproxy.cfg
通过浏览器访问“http://xxx.xxx.xxx.xxx:1080/admin?stats“(xxx为IP),看到管理页面
5.修改haproxy启动文件权限
(如果你是用ROOT用户启动HAProxy,这步可以省略,这个步骤是为了能让非ROOT用户也能通过HAProxy监听80端口,因为LIUNX的80端口一定要使用ROOT账户启动)
使用root账户进入sbin目录
更改haproxy的所有者为root
chown root:root haproxy
给haproxy增加S权限
chmod u+s haproxy
6.配置日志
创建日志目录
使用非root账户这里是admin账户创建日志文件
mkdir /home/admin/haproxy/logs
修改操作系统的日志配置
HAProxy可以收集本机及其他后端服务器日志,但是需要在HAProxy和操作系统上作一些配置。
使用root账户首先修改/etc/sysconfig/syslog文件,将SYSLOGD_OPTIONS="-m 0” 修改为SYSLOGD_OPTIONS="-m 0 -r -x",支持收集远程服务器日志。
然后修改/etc/syslog.conf,增加如下语句:
local0.* /home/admin/haproxy/logs/haproxy.log // haproxy.log地址代表了需要存储日志的地址,其中local0这个级别要和haproxy.cfg配置的log级别一样
执行service syslog restart,重新启动系统日志器
更改日志文件用户
chown admin:admin /home/admin/haproxy/logs/haproxy.log
7.创建启动/停止脚本(如果你认为现在的启动脚本已经够方便了,这步可以省略)
为了方便以后启动或停止,所以编写一个启动脚本
在sbin目录下创建hactl.sh
vi hactl.sh
填入一下内容
#!/bin/sh#
cd `dirname $0`/..
BASE_DIR="`pwd`"
ARGV="$@"
start()
{
echo "START HAPoxy SERVERS"
$BASE_DIR/sbin/haproxy -f $BASE_DIR/conf/haproxy.cfg
}
stop()
{
#haproxy.pid的路径是haproxy.cfg文件中配置的
echo "STOP HAPoxy Listen"
kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)
echo "STOP HAPoxy process"
kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)
}
case $ARGV in
start)
start
ERROR=$?
;;
stop)
stop
ERROR=$?
;;
restart)
stop
start
ERROR=$?
;;
*)
echo "hactl.sh [start|restart|stop]"
esac
exit $ERROR
保存后,给hactl.sh增加可执行权限
chmod 755 hactl.sh
这样就可以使用./ hactl.sh [start|restart|stop] 的方式启动,关闭,重启了,如果你使用的目录和例子中不一样的话,需要自己对应的修改下以上脚本的目录地址
经过以上1-6步骤以后HAProxy的安装已经结束,之后就是详细的配置下haproxy.cfg文件了