Debian/Ubuntu安装haproxy端口转发工具及优化配置、使用教程

HAProxy,全称是 High Availability Proxy,是一款开源的负载均衡代理软件。它主要用于提高服务器应用的可用性和性能,可以在 TCP 和 HTTP 应用层上分配客户机请求到多个数据中心或服务器。由于其高可靠性、高性能、丰富的功能和简单的配置,HAProxy 广泛应用于提供高可用性、负载均衡和代理服务器方案。

以下是一些 HAProxy 的关键特性:

1. 负载均衡:

  • HAProxy 能够将入站流量分配到多个后端服务器上,支持多种负载均衡算法,如轮询(round-robin)、最小连接数(least connections)和源地址哈希(source hashing)等。

2. 高可用性:

  • 能够检测后端服务器的健康状态,并自动从加载均衡池中剔除失效服务器,保证高可用性。
  • 支持热配置和平滑重载,无需停机就可以应用新配置。
  • 支持多种高可用性解决方案,如 Linux 的 Keepalived,用于故障转移(failover)和虚拟IP管理。

3. TCP 和 HTTP 的应用层协议支持:

  • 不仅能处理传统的 TCP 流量,也能够理解和优化 HTTP 流量,包括针对 HTTP 请求和响应的操作。

4. 安全性:

  • 提供了数据传输过程中的SSL/TLS终端支持,能进行加密和解密,从而保护数据传输的安全。
  • 支持 ACL(访问控制列表),能够基于多种条件(例如 IP 地址、URL 或者其他请求标头等)做出转发决策。

5. 性能优化:

  • 针对 HTTP 应用,支持内容压缩和缓存来减轻服务器负担和提升性能。
  • 能够有效地处理数十万同时连接,适用于高流量网站和应用。

6. 监控与统计:

  • 提供一个统计报告页面,用于实时监控 HAProxy 的状态和性能。
  • 通过日志、统计套接字和第三方集成(如 Datadog、Prometheus)等工具,可以集成到更广泛的监控解决方案中。

由于这些特性,HAProxy 被广泛应用于数据中心,用于企业级的网站和服务,如 GitHub、Stack Overflow、Reddit 以及其他需要高可靠性和负载均衡的应用场景中。

 

以上是haproxy介绍,接下来我以debian11为例,安装haproxy以及一下一些优化好的配置分享给大家:

安装:

apt install haproxy -y
以上安装的是debian的默认haproxy版本我安装后的是2.2版,如果需要其他版本请前往官网获取apt源:https://haproxy.debian.net

 

设置开机自启动:

systemctl enable haproxy

配置haproxy:

 

cd /etc/haproxy
mv haproxy.cfg haproxy.cfg.bak
vim haproxy.cfg

 然后输入下面的配置:wd保存:

 

global
    ulimit-n 100000                    # 设置操作系统限制,允许HAProxy打开更多的文件描述符
    log /dev/log local0                # 设置日志记录到本地系统日志设施0
    log /dev/log local1 notice         # 设置日志记录级别到通知,仅限于本地系统日志设施1
    chroot /var/lib/haproxy            # 出于安全原因,锁定进程到指定的目录
    pidfile /var/run/haproxy.pid       # 指定进程ID文件路径
    user haproxy                       # 指定运行用户为haproxy
    group haproxy                      # 指定运行用户组为haproxy
    daemon                             # 以守护进程方式运行HAProxy
    maxconn 40000                      # 设置每个进程的最大并发连接数
    tune.bufsize 32768                 # 增加每个会话的缓冲区大小,以适应大型请求和响应
    tune.maxrewrite 1024               # 增加用于重写请求和响应的缓冲区大小
    tune.rcvbuf.client 0               # 设置客户端接收缓冲区大小为系统默认
    tune.rcvbuf.server 0               # 设置服务器接收缓冲区大小为系统默认
    tune.sndbuf.client 0               # 设置客户端发送缓冲区大小为系统默认
    tune.sndbuf.server 0               # 设置服务器发送缓冲区大小为系统默认
    stats socket /var/lib/haproxy/stats level admin # 设置统计信息UNIX套接字路径,只有管理员才能访问

defaults
    log global                         # 使用全局配置的日志设置
    mode tcp                           # 设置工作模式为TCP
    option dontlognull                 # 不记录健康检查产生的空连接
    timeout connect 3000               # 设置连接超时时间为3秒
    timeout client 50000               # 设置客户端连接超时为50秒(根据实际流量调整)
    timeout server 50000               # 设置服务器连接超时为50秒(根据实际流量调整)
    maxconn 40000                      # 设置每个进程允许的最大并发连接数

    # 如果工作模式是HTTP,打开下面的配置
    # option http-server-close        # 开启HTTP连接关闭模式,以减少连接数和提升性能
    # option forwardfor               # 添加X-Forwarded-For头部,用于记录原始IP地址
    # compression algo gzip           # 启用GZIP压缩
    # compression type text/html text/plain text/css application/javascript application/json

listen stats
    bind :9000                      # 监听端口,用于统计信息页面
    mode http                          # 模式设置为HTTP,用于统计信息页面
    stats enable                       # 启用统计报告页面
    stats uri /status                 # 设置统计页面的访问URI
    stats hide-version                 # 隐藏HAProxy版本信息以提高安全性
    stats auth admin:admin            # 设置访问统计页面的用户名和密码,应更换复杂密码

frontend novel                         #前端
    bind *:25565 tfo                   # 在所有网络接口的25565端口上监听,并启用TCP快速打开特性
    default_backend novel              # 指定默认的后端服务器组

backend novel                          #后端
    balance leastconn                  # 设置负载均衡算法为最少连接,帮助均匀分配连接
    option tcp-check                   # 启用TCP级别的健康检查,帮助检测服务器是否在线
    server n1 IP地址:端口 check maxconn 20480 # 指定后端服务器,并设置健康检查和最大并发连接数

 最后检测配置是否有错误再重启haproxy:

haproxy -c -f /etc/haproxy  #检测配置
systemctl restart haproxy.service  #重启haproxy

 

好了,教程到此结束。

THE END