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.19.tar.gz
命令:
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.19.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"); };
log { source(my_src); filter(f_local0); destination(d_haproxy); };
#log { source(my_src); filter(custom); destination(d_haproxy); }; # OK, work too
注:这里指定了日志输出到/var/log目录下,工作正常,若指定输出到/home等其他子目录下却会失败,具体原因不详,待查。另,haproxy的日志也可通过此方法将其发送到某个日志服务器用于统一处理,具体可查看syslog-ng的相关文档。
III. 重启syslog服务,使用如下命令:
service syslog restart
IV. 编辑haproxy的配置文件,假定名为haproxy.cfg
在所需要做日志记录的模块(比如,global, default等)添加如下代码:
# 使用系统的syslog记录日志(通过udp,默认端口号为514)
log 127.0.0.1 local0
注:local0 在两个配置文件中的一致。
这会查看日志基本上就OK了。
tail -f /var/log/haproxy.log
注:其他须解决的日志相关问题
a. haproxy当前的日志全部记录在一个文件中,考虑按日期将其分段成不同文件存储;
b. 日志不能输出到除/var/log/外的其他目录
2). 一些常用配置选项的说明
如下是我使用的一个配置文件,常用的选项说明都已经注释了,需要更全面的描述请查阅configuration.txt文件。
#########################################################################
# HAProxy 配置文件
#########################################################################
global
# 使用系统的syslog记录日志(通过udp,默认端口号为514)
log 127.0.0.1 local0 # info [err warning info debug]
chroot /home/bmc/haproxy
#限制单个进程的最大连接数
maxconn 65535
# 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D
# daemon
# 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式
# nbproc 1
# 设置debug模式运行,与daemon模式只能互斥,等同于在命令行添加参数 -d
# debug
pidfile /home/bmc/haproxy/logs/haproxy.pid # not work
defaults
# 在连接失败或断开的情况下,允许当前会话被重新分发
option redispatch
# 设置在一个服务器上链接失败后的重连次数
retries 2
# 设置服务器分配算法
balance roundrobin
# 不记录空连接
option dontlognull
# 设置等待连接到服务器成功的最大时间
timeout connect 5000ms
# 设置客户端的最大超时时间
timeout client 1800000ms
# 设置服务器端的最大超时时间
timeout server 1800000ms
# Enable the sending of TCP keepalive packets on both sides, clients and servers
# NOTE: 在服务器CPU强劲的情况下,最好不要开启保活,这样可减少资源消耗
#option tcpka
##############################统计页面配置##################################
listen admin_stat
# 监听端口
bind *:8011
# http的7层模式
mode http
option httplog
log global
# 统计页面自动刷新时间
stats refresh 30s
# 统计页面URL
stats uri /admin?stats
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:admin
# 隐藏统计页面上HAProxy的版本信息
stats hide-version
###########################TCP连接的监听配置################################
listen tcp-in
bind *:8012
mode tcp
# 日志记录选项
option tcplog
log global
# 后台服务器
# weight -- 调节服务器的负重
# check -- 允许对该服务器进行健康检查
# inter -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
# fall -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
# maxconn -- 指定可被发送到该服务器的最大并发连接数
server localhost 0.0.0.0:9999 weight 3 check inter 2000 rise 2 fall 3
server 211.100.66.6 211.100.66.6:9999 weight 3 check inter 2000 rise 2 fall 3
server hyb 203.86.46.51:9999 weight 3 check inter 2000 rise 2 fall 3
#########################HTTP连接的监听配置################################
listen http-in
bind *:8013
mode http
option httplog
log global
# 设置健康检查模式
#option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#option smtpchk
# 后台服务器
server localhost 0.0.0.0:9998 weight 3 check inter 2000 rise 2 fall 3
server 211.100.66.6 211.100.66.6:9998 weight 3 check inter 2000 rise 2 fall 3
server hyb 203.86.46.51:9998 weight 3 check inter 2000 rise 2 fall 3
在这个配置文件中,使用了listen块,而没有用frontend和backend。listen块定义了一个完整的代理过程,同时包含了前端的 监听套接字和后台的服务器描述,从这个层面考虑,使用frontend和backend,似乎显得条理要清楚点。不过测试发现使用listen块的时候, 输出的日志会记录下后台服务器的健康状况,而使用frontend和backend则不会。
对于健康检查,推荐开开启比较好,否则当后台服务器当掉的时候,haproxy将不会将连接重定向到下一个可用的服务器上。
关于属性
pidfile /home/bmc/haproxy/logs/haproxy.pid
暂且还不能正常工作,原因待查。
相关推荐
HAProxy安装与部署 HAProxy 是一种高性能的反向代理服务器软件,提供高可用性、负载均衡和基于 TCP 和 HTTP 应用的代理,支持虚拟主机。HAProxy 是一种免费、快速并且可靠的一种解决方案,特别适用于那些负载特大的...
### HAProxy的安装与部署详解...HAProxy的安装和部署虽然涉及多个步骤,但其配置的灵活性和强大的负载均衡能力使其成为企业级Web应用的理想选择。通过遵循上述指南,可以有效利用HAProxy提高服务器集群的可用性和性能。
这个二进制安装包为CentOS 7.9用户提供了便捷的部署方式,确保在本地环境中快速启动和管理Haproxy服务。在实际使用中,务必根据业务需求调整配置,并持续监控Haproxy的运行状态,以确保服务的高效和可靠。
haproxy版本:haproxy-2.9.4.tar.gz
标题中的“利用ansible安装keepalived和haproxy集群”是指使用自动化运维工具Ansible来部署高可用性负载均衡解决方案,其中包括Keepalived和HAProxy两个关键组件。在这个过程中,我们将探讨如何通过Ansible剧本...
标题中的“haproxy的安装”意味着我们将讨论的是如何在操作系统上部署和配置HAProxy,一个流行的开源负载均衡器和反向代理服务器。HAProxy被广泛用于提高网站和应用程序的可用性和性能,通过将流入的网络请求分配到...
HAProxy的安装和部署 考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统,HAProxy的配置和使用还是比较简单的。 下面是自己安装和部署haproxy的记录,比较重要的一点是...
本篇文章十分详细地记录了Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)的部署全过程,可作为线上实操手册。特在此分享,希望能帮助到有用到的朋友。
kubeadm部署高可用k8s集群,haproxy+keepalived-版本k8s1.20.4,详细笔记总结文档
MES服务器等多种应用架构为用户直接连接服务模式,这种模式存在以下缺陷。...为了解决这些问题,合理利用资源并尽可能的节约成本,我们尝试使用并测试Keepalived+ Haproxy这种架构进行优化现有服务模式。
4. **编译和安装**:使用`make`命令编译源代码,然后用`sudo make install`进行安装。这将把haproxy二进制文件安装到之前配置的路径。 5. **配置文件**:haproxy的配置文件通常是`/etc/haproxy/haproxy.cfg`。你...
Haproxy2.0.31源码
haproxy作为高性能的负载均衡软件,在此场景下用于分配和调度MySQL服务器的负载请求,以优化数据库性能和可靠性。本文涉及的内容包括haproxy的安装、配置以及如何管理MySQL数据库实例。 详细知识点解析: 1. 安装...
### MySQL高可用架构集群——MyCat集群部署HAProxy+MyCat #### 一、概览 在当前的大数据时代背景下,随着业务规模的不断扩大和技术需求的日益增长,数据库的高可用性和性能优化变得尤为重要。本篇文章将围绕如何...
Haproxy高可用代理一键部署脚本 使用yum的方式,交互式部署Haproxy高可用代理平台 亲测有效!
1. **规划与设计**:根据业务规模和需求,确定HAProxy的部署架构,例如单机、主备或集群模式。 2. **安装与配置**:在选定的服务器上安装HAProxy,并编写符合业务需求的配置文件。 3. **健康检查与监控**:设置...
### HAProxy部署手册知识点解析 #### 一、HAProxy简介 **1.1 HAProxy概述** HAProxy(High Availability Proxy)是一款提供高可用性、负载均衡功能的代理软件,主要针对TCP(第四层)和HTTP(第七层)应用。这款...
linux rabbitmq+haproxy分布式负载均衡生产环境部署完成 技术:rabbitmq集群 linux haproxy负载均衡 说明包含: rabbitmq安装程序 MQ集群负载均衡部署帮助文档 MQ集群负载均衡使用帮助文档 MQ集群负载均衡遇到...
例如,haproxy role负责安装和配置HAproxy负载均衡器,mysql role负责安装和配置Mysql数据库等。 三、HAproxy负载均衡 HAproxy是一种开源的负载均衡器,可以将流量分配到多个服务器上,以提高系统的可用性和性能。...