一、CentOS下HAProxy的安装与配置
HAProxy(High Availability Proxy)是一款使用C语言编写的高性能开源负载均衡器和代理服务器软件,它可以运行在大多数主流的Linux操作系统上,包括CentOS,以下是在CentOS系统下安装和配置HAProxy的详细步骤:

1、安装必要依赖包:
在安装HAProxy之前,请确保您的系统环境满足以下要求:支持多种Linux发行版,如CentOS、Ubuntu等;必要的依赖包,如make、gcc、pcredevel、bzip2devel、openssldevel等。
关闭防火墙和SELinux(或设置为Permissive模式),以避免安全策略干扰HAProxy的正常运行。
2、下载并编译安装HAProxy:
从HAProxy的官方网站下载最新版本的源码包,对于CentOS 7系统,可以下载haproxy1.7.2版本:
wget http://www.haproxy.org/download/1.7/src/haproxy1.7.2.tar.gz解压下载的源码包:

tar xzf haproxy1.7.2.tar.gz 进入解压后的目录,并执行编译安装命令,这里以编译安装到用户ha的家目录为例:
cd haproxy1.7.2
make TARGET=linux2628 USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1 PREFIX=/home/ha/haproxy
sudo make install PREFIX=/home/ha/haproxy为了方便使用,可以将HAProxy的可执行文件添加到系统的PATH中:
sudo ln s /home/ha/haproxy/sbin/* /usr/sbin/3、创建配置文件:
HAProxy的配置文件通常位于/etc/haproxy/ 目录下,文件名为haproxy.cfg,但这里我们将自己创建一个配置文件,创建配置文件目录和文件:
mkdir p /home/ha/haproxy/conf
vi /home/ha/haproxy/conf/haproxy.cfg编辑配置文件,添加以下内容作为一个简单的示例:
global
daemon
maxconn 256
pidfile /home/ha/haproxy/conf/haproxy.pid
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend httpin
bind *:8080
default_backend servers
backend servers
server server1 127.0.0.1:8000 maxconn 32上述配置文件包含以下部分:

global:全局属性,如以守护进程方式运行、最大连接数等。
defaults:默认参数,如模式为HTTP、各种超时时间等。
frontend:前端配置,用于定义监听的端口和请求转发规则。
backend:后端配置,用于定义实际处理请求的服务器列表。
4、注册为系统服务并启动:
在/etc/init.d 目录下添加HAProxy服务的启动和停止脚本:
vi /etc/init.d/haproxy编辑脚本内容,添加以下内容:
#!/bin/sh
### BEGIN INIT INFO
# Provides: haproxy
# RequiredStart: $local_fs $remote_fs $network $syslog
# RequiredStop: $local_fs $remote_fs $network $syslog
# DefaultStart: 2 3 4 5
# DefaultStop: 0 1 6
# ShortDescription: Starts haproxy
# Description: HAProxy is a TCP/HTTP reverse cipher and load balancer.
### END INIT INFO
PROGDIR=/home/ha/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/conf/$PROGNAME.cfg
PIDFILE=$PROGDIR/conf/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
set e
[ x $DAEMON ] || exit 0
if [ f $CONFIG ]; then
. $CONFIG
fi
case "$1" in
start)
echo n "Starting $DESC: "
$DAEMON f $CONFIG p $PIDFILE sf $PIDFILE
;;
stop)
echo n "Stopping $DESC: "
kill TERMcat $PIDFILE
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 3
;;
esac保存并关闭脚本后,给予执行权限:
chmod +x /etc/init.d/haproxy将HAProxy注册为系统服务,并启动它:
systemctl enable haproxy
systemctl start haproxy5、测试配置:
使用浏览器或其他工具访问配置的前端端口(如http://<服务器IP>:8080),检查是否能够正常访问后端服务器,如果一切正常,您应该能够在浏览器中看到后端服务器的响应内容。
二、FAQs
1、如何检查HAProxy的配置是否正确?
可以使用以下命令检查HAProxy配置文件的语法是否正确:
haproxy c f /etc/haproxy/haproxy.cfg如果配置文件有语法错误,该命令会输出相应的错误信息,帮助您定位问题所在。
2、如何查看HAProxy的运行状态和统计信息?
可以通过以下命令查看HAProxy的运行状态和统计信息:
haproxy vv 或者,如果您在配置文件中启用了统计页面(如上面配置文件中的stats 部分),可以通过浏览器访问统计页面的URL(如http://<服务器IP>:1080/stats)来查看详细的统计信息。
3、如何调整HAProxy的负载均衡算法?
在backend 部分的balance 指令后面指定您想要使用的负载均衡算法,HAProxy支持多种负载均衡算法,如roundrobin(轮询)、staticrr(静态轮询)、leastconn(最少连接)、first(第一个可用服务器)、hash(基于哈希)、source(基于源IP)、uri(基于URI)、url_param(基于URL参数)、hdr(<name>)(基于请求头)和random(随机选择)等,根据实际需求选择合适的算法即可。
