CentOS 7 系统下安装与配置 HAProxy 负载均衡器
环境准备
在开始安装 HAProxy 前,需确保 CentOS 7 系统满足以下条件:
- 系统版本:CentOS 7.x(64 位)
- 网络配置:服务器具备公网 IP 或局域网内可访问的 IP 地址
- 依赖包:确保
gcc
、make
等编译工具已安装(若通过源码编译)。
可通过以下命令检查系统版本及更新软件源:
cat /etc/redhat-release # 查看系统版本 yum update -y # 更新系统软件包
HAProxy 的安装方式
HAProxy 支持两种安装方式:YUM 包管理器(推荐)和源码编译,以下分别介绍操作步骤。
(一)通过 YUM 安装(简单快捷)
添加 EPEL 仓库:
HAProxy 在 CentOS 官方仓库中不可用,需先启用 EPEL(Extra Packages for Enterprise Linux)仓库:yum install epel-release -y
安装 HAProxy:
执行以下命令即可完成安装:yum install haproxy -y
验证安装:
安装完成后,可通过查看版本号确认是否成功:haproxy -v # 输出示例:HAProxy version 1.8.27-1.el7 (2019/11/25)
(二)通过源码编译安装(自定义功能)
若需使用最新版本或特定模块(如 SSL 支持),可选择源码编译:
下载源码包:
访问 HAProxy 官方网站 下载最新稳定版源码(以haproxy-2.6.0.tar.gz
为例):wget https://www.haproxy.org/download/2.6/src/haproxy-2.6.0.tar.gz tar zxvf haproxy-2.6.0.tar.gz cd haproxy-2.6.0
编译与安装:
配置编译参数(开启 SSL/TLS 支持)后执行编译:make TARGET=linux-glibc USE_OPENSSL=1 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy
注:
PREFIX
指定安装目录,可根据需求调整。创建软链接(可选):
为方便使用,可将 HAProxy 可执行文件加入系统 PATH:ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/
HAProxy 基础配置
安装完成后,需编辑配置文件 /etc/haproxy/haproxy.cfg
(YUM 安装路径)或 /usr/local/haproxy/haproxy.cfg
(源码安装路径),核心配置项如下:
(一)全局配置段(Global Section)
定义进程级参数,如用户权限、日志设置等:
global log 127.0.0.1 local2 # 日志记录到本地 syslog chroot /var/lib/haproxy # 安全沙箱目录 pidfile /var/run/haproxy.pid # PID 文件路径 user haproxy # 运行用户 group haproxy # 运行组 daemon # 后台运行模式 maxconn 4000 # 最大连接数 ssl-default-bind-ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256
(二)默认配置段(Defaults Section)
设置默认参数,作用于所有 frontend 和 backend:
defaults mode http # 协议类型(http/tcp) log global # 继承全局日志设置 option dontlognull # 不记录空连接 timeout connect 5000ms # 连接超时时间 timeout client 50000ms # 客户端超时时间 timeout server 50000ms # 服务端超时时间
(三)前端配置(Frontend Section)
监听客户端请求,并根据规则分发至后端服务器:
frontend main bind *:80 # 监听端口(HTTP) bind *:443 ssl crt /etc/haproxy/certs/example.com.pem # HTTPS 监听(需证书) default_backend webservers
(四)后端配置(Backend Section)
定义后端服务器池,包含健康检查与负载均衡算法:
backend webservers balance roundrobin # 负载均衡算法(轮询/加权轮询等) server web1 192.168.1.10:80 check # 后端服务器1 server web2 192.168.1.11:80 check # 后端服务器2 server web3 192.168.1.12:80 check backup # 备份服务器
注:check
表示启用健康检查;backup
表示备用服务器。
(五)配置示例表
配置段 | 关键参数 | 说明 |
---|---|---|
Global | user haproxy | 运行用户 |
maxconn 4000 | 最大并发连接数 | |
Defaults | timeout client 50s | 客户端超时时间 |
Frontend | bind *:80 | HTTP 监听端口 |
Backend | balance roundrobin | 轮询负载均衡算法 |
server web1 ... check | 启用健康检查的后端服务器 |
启动与管理 HAProxy
配置完成后,需启动服务并进行状态检查:
启动服务:
systemctl start haproxy
设置开机自启:
systemctl enable haproxy
查看服务状态:
systemctl status haproxy
重新加载配置(无需重启服务):
修改配置文件后,执行以下命令使更改生效:systemctl reload haproxy
常见问题排查
若遇到连接异常或服务无法启动,可参考以下方法排查:
端口占用检查:
确认 80/443 端口未被其他程序占用:netstat -tuln | grep ':80|:443'
防火墙规则:
开放 HAProxy 所需端口(如 HTTP/HTTPS):firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
配置语法校验:
使用-c
参数检查配置文件语法:haproxy -f /etc/haproxy/haproxy.cfg -c
相关问答 FAQs
Q1:如何为 HAProxy 配置 HTTPS?
A:需先生成 SSL 证书(可使用 Let’s Encrypt 免费证书),然后在 frontend 中添加 ssl
参数并指定证书路径:
frontend main bind *:443 ssl crt /etc/haproxy/certs/example.com.pem ...
证书生成示例(Let’s Encrypt):
certbot certonly --standalone -d example.com ln -s /etc/letsencrypt/live/example.com/fullchain.pem /etc/haproxy/certs/example.com.pem ln -s /etc/letsencrypt/live/example.com/privkey.pem /etc/haproxy/certs/example.com.key
Q2:HAProxy 如何实现会话保持(Session Persistence)?
A:可通过 stick-table
功能实现基于 Cookie 或 IP 的会话粘滞,基于 Cookie 的配置:
frontend main ... cookie SERVERID insert indirect nocache backend webservers ... stick-table type ip size 200k expire 30m stick on src
此配置会将客户端 IP 与后端服务器绑定,确保同一 IP 的请求始终路由至相同后端实例。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复