HAProxy(High Availability Proxy)是一个开源的负载均衡和反向代理解决方案,广泛用于提高Web应用的可用性和性能。它能够智能地将客户端请求分发到多个后端服务器,支持多种负载均衡算法,并具备主动健康检查、SSL/TLS终止、灵活的配置选项以及高吞吐量和低延迟的特点。HAProxy被广泛应用于各种场景,如Web应用、API网关和数据库负载均衡,是确保应用稳定性和响应速度的理想选择。
- 参考:基础配置
-
下载HAProxy源码
wget http://www.haproxy.org/download/3.0/src/haproxy-3.0.5.tar.gz
-
解压源码
tar -zxvf haproxy-3.0.5.tar.gz cd haproxy-3.0.5 -
安装编译软件
sudo dnf -y install make gcc openssl-devel zlib-devel
-
编译HAProxy(包含常见的编译选项)
-
我们可以使用以下命令来编译HAProxy,并启用SSL/TLS、gzip压缩和Systemd支持:
make -j$(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 -
编译选项说明:
TARGET=linux-glibc:适用于大多数Linux系统。USE_OPENSSL=1:启用SSL/TLS支持,需要系统中安装OpenSSL。USE_ZLIB=1:启用对gzip压缩的支持。USE_SYSTEMD=1:与Systemd集成,方便使用Systemd管理HAProxy服务。
-
-
安装HAProxy
sudo make PREFIX=/usr/local/software/haproxy install
- 这会将HAProxy安装到
/usr/local/software/haproxy。
配置环境变量
sudo tee /etc/profile.d/00-haproxy.sh <<"EOF" export HAPROXY_HOME=/usr/local/software/haproxy export PATH=$PATH:$HAPROXY_HOME/sbin EOF source /etc/profile查看版本
haproxy -v - 这会将HAProxy安装到
-
配置HAProxy
-
创建目录:
sudo mkdir -p /etc/haproxy /data/service/haproxy
-
编辑
/etc/haproxy/haproxy.cfg文件,根据需求配置负载均衡规则。sudo tee /etc/haproxy/haproxy.cfg <<"EOF" # 全局配置 global log stdout format raw local0 chroot /data/service/haproxy stats timeout 30s user root group root daemon # 默认的SSL/TLS配置(可选) # tune.ssl.default-dh-param 2048 # 默认配置 defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms retries 3 # 错误页面配置 option redispatch maxconn 2000 timeout http-request 10s timeout queue 1m timeout http-keep-alive 10s # 监听统计页面配置 listen stats bind :8080 mode http stats enable stats uri /stats stats refresh 10s stats realm HAProxy\ Statistics stats auth admin:Admin@123 # 访问统计页面的用户名和密码 EOF
-
-
创建Systemd服务文件
- 创建
/etc/systemd/system/haproxy.service文件,并添加以下内容:sudo tee /etc/systemd/system/haproxy.service <<"EOF" [Unit] Description=HAProxy Load Balancer After=network.target [Service] ExecStart=/usr/local/software/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -db -Ws ExecReload=/bin/kill -USR2 $MAINPID KillMode=mixed Restart=always RestartSec=5s LimitNOFILE=100000 TimeoutStopSec=10s [Install] WantedBy=multi-user.target EOF
- 创建
-
启用并启动HAProxy服务
sudo systemctl daemon-reload sudo systemctl enable haproxy sudo systemctl start haproxy -
测试HAProxy配置文件
- 启动或重载HAProxy之前,测试配置文件的正确性:
/usr/local/software/haproxy/sbin/haproxy -c -f /etc/haproxy/haproxy.cfg
- 启动或重载HAProxy之前,测试配置文件的正确性:
-
访问HAProxy服务监控页面
URL: http://192.168.1.113:8080/stats Username: admin Password: Admin@123
编辑配置文件
编辑/etc/haproxy/haproxy.cfg添加以下内容:
# 前端配置
frontend http_front
bind *:19000
default_backend http_back
# 后端配置
backend http_back
balance roundrobin
option tcp-check
server http1 192.168.1.112:9000 check
server http2 192.168.1.113:9000 check重启服务
sudo systemctl reload haproxy