HAProxy的安装部署详细
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HAProxy的安装和部署
考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统,HAProxy的配置和使用还是比较简单的。
下面是自己安装和部署haproxy的记录,比较重要的一点是解决了haproxy + syslog-ng的日志输出问题。
PS: 这个问题费了我好大神:-|
PLATFORM: SUSE Linux Enterprise Server 11 (x86_64)
1. haproxy的编译安装
获取haproxy的源代码
官方地址:http://haproxy.1wt.eu/
目前最新的版本:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
命令:
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
考虑到版本的更新,具体的安装属性可能会稍有改变,建议在安装前可以大致浏览下haproxy目录下的README和Makefile两个文件。
编译haproxy
进入解压后的haproxy的目录,用下列命令进行编译:
make TARGET=os ARCH=arch CPU=cpu USE_xxx=1 ...
这里着重说明几个常用的选项。
TARGET
指定对目标操作系统在编译的时候进行优化,可选择如下值之一:
Generic, linux22, linux24, linux24e, linux26, solaris, freebsd, openbsd,
Cygwin, custom。
如果不确定目标系统,可以保留默认值generic。
CPU
指定对特定的CPU进行优化,可选择如下值之一:generic, i586, i686, ultrasparc, custom。默认值为generic。
ARCH
指定ARCH值可强制编译生成针对一个特定系统架构的程序。通常用于在一个系统架构的平台上生成针对另一个不同架构平台的程序,比如在一个64位架构的目标系统上编译生成一个32位的程序。
当前可选的值有:x86_64, i386, i486, i586, i686。
注:若选择上述其中的一个值,”-m32”或”-m64”会被添加到CFLAGS和LDFLAGS选
项中。
DEBUG
指定生成调试信息,可通过指定DEBUG=-DDEBUG_xxx对特定的代码部分生成调试信息。
当前定义的DEBUG宏有:DEBUG_FULL, DEBUG_MEMORY, DEBUG_FSM, DEBUG_HASH和
DEBUG_AUTH。
USE_PCRE, USE_STATIC_PCRE 选项可通过指定”USE_xxx=1”表示使用,指定”USE_xxx=”表示禁用。
指定是否使用libpcre库中的正则表达式实现来代替系统的libc库中的实现,考虑到使用libpcre库的效率要比libc高,因此推荐使用此选项。
注:
因libpcre还没有广泛普及,因此在动态链接的时候,需确保目标系统安装有libpcre的动态库。因libpcre还没有广泛普及,因此在动态链接的时候,需确保目标系统安装有libpcre的动态库。针对上面的问题,可以使用USE_STATIC_PCRE,指定静态链接libpcre。
使用libpcre库编译时,需先确保系统已安装libpcre库。若不使用libpcre,则默认使用系统libc库中的标准正则表达式实现。强烈推荐使用static_pcre。
PREFIX
指定安装目录,默认为/usr/local,其他诸如文档之类的文件将会在PREFIX指定的相应目录下。
DESTDIR
指定安装目录,默认没有设置,如果想将haproxy安装一个沙盒中则可以指定该属性。
考虑到我们的系统为Linux,内核2.6+版本的,CPU为x86_64的,可以使用如下命令编译:
make TARGET=linux26 USE_STATIC_PCRE=1
安装 HAProxy
可以直接将生成的haproxy程序拷贝到你想安装到的目录。或者执行命令安装到之前指定或默认的目录:
sudo make install
2. 配置 HAProxy
Doc/目录下提供了一些文档,具体的配置说明可以参考在configuration.txt文件。
下面主要说明下配置过程中日志输出问题和一些需要注意的配置选项。
1). 日志的输出问题。
根据说明,haproxy的日志输出使用了系统的日志程序,比如syslogd, syslog-ng。这两个日志系统使用上其主要的区别就是其配置文件的格式不同,考虑syslog-ng算是syslog的一个升级版,在性能和功能性上都要优于syslogd,因此这里主要介绍的是配置syslog-ng来实现haproxy的日志输出。
我的机器环境,一如既往:SUSE Linux Enterprise Server 11 (x86_64),
日志程序默认是syslog-ng。
I. 编辑系统日志服务的配置文件/etc/sysconfig/syslog,查看SYSLOG_DAEMON的值,这个值指定了所要使用的日志服务程序,默认为空,表示自动检测,如果不确定,可以显式指定SYSLOG_DAEMON = “syslog-ng”。
II. 编辑syslog-ng的配置文件/etc/syslog-ng/syslog-ng.conf,在末尾添加如下代码:
# for supporting the logging of "HAProxy"
source my_src {
#
# process log messages from network:
#
udp(ip("0.0.0.0") port(514));
};
filter f_local0 { facility(local0); };
filter custom { program("haproxy"); };
destination d_haproxy { file("/var/log/haproxy.log"); };