CentOS HAProxy安装与配置详解
HAProxy简介
HAProxy是一款使用C语言编写的自由及开放源代码软件,主要用于提供高可用性、负载均衡以及基于TCP和HTTP的应用程序代理功能,它特别适用于那些负载特大的Web站点,这些站点通常需要会话保持或七层处理,HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接,并且其运行模式使得它可以很简单安全的整合进现有的架构中,同时可以保护Web服务器不被暴露到网络上。

安装HAProxy
1. 准备工作
在安装HAProxy之前,请确保系统环境满足以下要求:
操作系统:支持多种Linux发行版,如CentOS、Ubuntu等。
必要的依赖包:如make、gcc、pcredevel、bzip2devel、openssldevel等。
关闭防火墙和SELinux(或设置为Permissive模式):以避免安全策略干扰HAProxy的正常运行。
2. 安装步骤(以CentOS 7为例)

(1)安装必要的依赖包
- sudo yum y install make gcc pcredevel bzip2devel openssldevel
(2)下载并编译安装HAProxy
可以从HAProxy的官方网站下载最新版本的源码包,或者使用包管理器直接安装(如果可用),以下是通过源码包安装的方法:
- wget http://www.haproxy.org/download/1.7/src/haproxy1.7.2.tar.gz
- tar xzf haproxy1.7.2.tar.gz
- cd haproxy1.7.2
- make TARGET=linux2628 USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1
- sudo make install PREFIX=/home/ha/haproxy
注意:TARGET根据当前操作系统内核版本指定,USE_OPENSSL、USE_PCRE、USE_SYSTEMD等选项根据实际需求和系统环境进行选择,PREFIX为指定的安装路径。
(3)创建软连接(可选)
为了方便使用,可以将HAProxy的可执行文件添加到系统的PATH中:

- sudo ln s /home/ha/haproxy/sbin/* /usr/sbin/
配置HAProxy
1. 配置文件结构
HAProxy的配置文件通常位于/etc/haproxy/
目录下,文件名为haproxy.cfg
,配置文件由多个部分组成,包括global、defaults、frontend、backend和listen等。
global:用于设置全局配置参数,属于进程级的配置,通常和操作系统配置相关。
defaults:默认参数的配置部分,在此部分设置的参数值,默认会自动被引用到下面的frontend、backend和listen部分中。
frontend:用于设置接收用户请求的前端虚拟节点,frontend可以根据ACL规则直接指定要使用的后端backend。
backend:用于设置集群后端服务集群的配置,也就是用来添加一组真实服务器,以处理前端用户的请求。
listen:此部分是frontend和backend部分的结合体,在HAProxy 1.3版本之前,所有的配置选项都在这个部分中设置,为了保持兼容性,新的版本仍然保留了listen组件的配置方式。
2. 示例配置
以下是一个基本的HAProxy配置文件示例,用于配置RabbitMQ集群的负载均衡:
- global
- log 127.0.0.1 local0 info
- maxconn 10240
- daemon
- defaults
- log global
- mode http
- timeout connect 5000
- timeout client 5000
- timeout server 5000
- timeout check 2000
- listen http_front #haproxy的客户页面
- bind 192.168.72.128:8888
- mode http
- option httplog
- stats uri /haproxy
- stats auth admin:123456
- stats refresh 5s
- stats enable
- listen haproxy #负载均衡的名字
- bind 0.0.0.0:5666 #对外提供的虚拟的端口
- option tcplog
- mode tcp
- balance roundrobin
- server rabbit1 192.168.72.128:5672 check inter 5000 rise 2 fall 2
- server rabbit2 192.168.72.128:5673 check inter 5000 rise 2 fall 2
- server rabbit3 192.168.72.128:5674 check inter 5000 rise 2 fall 2
3. 启动与验证
将HAProxy注册为系统服务,并启动:
- vi /etc/init.d/haproxy
添加以下内容:
#!/bin/bash
chkconfig: 2345 80 90
description: Haproxy is an Open Source load balancing solution that offers high \
performance, high availability, and scalability.
processname: haproxy
config: /etc/haproxy/haproxy.cfg
configtest shell command to test haproxy configuration syntax
prereq:
rpm q perl bindutils procpsysvinit sysvrcconf
case "$1" in
start)
echo n "Starting haproxy: "
/home/ha/haproxy/sbin/haproxy f /home/ha/haproxy/conf/haproxy.cfg p /var/run/haproxy.pid
;;
stop)
echo n "Stopping haproxy: "
kill- cat /var/run/haproxy.pid
;;
restart)
echo n "Restarting haproxy: "
kill- cat /var/run/haproxy.pid
/home/ha/haproxy/sbin/haproxy f /home/ha/haproxy/conf/haproxy.cfg p /var/run/haproxy.pid
;;
status)
echo n "Checking haproxy status: "
ps aux | grep haproxy | grep v grep > /dev/null
if [ $? eq 0 ]; then
echo "running"
else
echo "stopped"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
赋予执行权限并启动服务:
- chmod +x /etc/init.d/haproxy
- service haproxy start
验证是否启动成功:
- lsof i:8888
如果看到HAProxy正在监听指定的端口,则说明启动成功。
FAQs
Q1: 如何在CentOS上更改HAProxy的最大连接数?
A1: 要更改HAProxy的最大连接数,可以在配置文件的global
部分设置maxconn
参数,要将最大连接数设置为20480,可以在haproxy.cfg
文件中添加或修改以下行:
- maxconn 20480
然后重启HAProxy服务使配置生效。
Q2: 如果HAProxy配置文件有误,如何检查配置文件语法是否正确?
A2: 可以使用haproxy f /path/to/your/haproxy.cfg c
命令来检查HAProxy配置文件的语法是否正确,该命令不会实际启动HAProxy,只是检查配置文件是否有语法错误,如果有错误,它会输出错误信息;如果没有错误,它会输出“Configuration file is valid”。