首页主机资讯CentOS FTP Server怎样实现负载均衡

CentOS FTP Server怎样实现负载均衡

时间2025-12-02 17:58:04发布访客分类主机资讯浏览1322
导读:CentOS FTP Server 负载均衡实现指南 一、架构与关键点 推荐将负载均衡器部署为对外统一入口,后端多台 vsftpd/ProFTPD/Pure-FTPd 组成集群,统一承载控制连接(21/TCP)与数据连接。为兼容负载均衡与...

CentOS FTP Server 负载均衡实现指南

一、架构与关键点

  • 推荐将负载均衡器部署为对外统一入口,后端多台 vsftpd/ProFTPD/Pure-FTPd 组成集群,统一承载控制连接(21/TCP)与数据连接。为兼容负载均衡与穿越防火墙,FTP 建议启用被动模式(PASV),并在负载均衡器或防火墙上开放一段被动端口范围,同时保证各后端返回一致的 PASV IP/端口 信息。若使用 FTPS(FTP over SSL/TLS),负载均衡器需支持 TLS 透传(SSL Passthrough),避免解密带来的证书与握手复杂性。

二、方案一 HAProxy TCP 四层转发(简单通用)

  • 安装与启用
    • 执行:sudo yum install haproxy -y & & sudo systemctl enable --now haproxy
  • 关键配置示例(/etc/haproxy/haproxy.cfg)
    • 全局与默认
      global
          log /dev/log local0
          log /dev/log local1 notice
          daemon
      defaults
          log global
          mode tcp
          option tcplog
          timeout connect 5000ms
          timeout client 50000ms
          timeout server 50000ms
      
    • 前端与后端
      frontend ftp_front
          bind *:21
          default_backend ftp_back
      
      backend ftp_back
          balance roundrobin
          server ftp1 192.168.1.101:21 check
          server ftp2 192.168.1.102:21 check
      
  • 防火墙放行
    • 放行控制端口:sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload
    • 如使用 PASV,还需放行你的被动端口范围(示例):sudo firewall-cmd --permanent --add-port=10090-10100/tcp & & sudo firewall-cmd --reload
  • 适用场景:快速上线、控制与数据均为 TCP 直连,对应用透明;FTPS 建议启用透传模式。

三、方案二 Nginx Stream 四层转发(轻量替代)

  • 安装与启用
    • 执行:sudo yum install nginx -y & & sudo systemctl enable --now nginx
  • 关键配置示例(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ftp.conf)
    stream {
    
        upstream ftp_servers {
        
            server 192.168.1.101:21;
        
            server 192.168.1.102:21;
    
        }
    
    
        server {
        
            listen 21;
        
            proxy_pass ftp_servers;
        
            proxy_timeout 1h;
        
            proxy_responses 1;
    
        }
    
    }
        
    
  • 说明:Nginx Stream 工作在四层,适合 FTP 控制通道分发;FTPS 同样建议采用透传方式。被动端口范围与防火墙策略需与方案一一致。

四、方案三 LVS + Keepalived(高性能与高可用)

  • 拓扑与思路
    • 使用 LVS 做四层负载均衡,Keepalived 提供 VRRP 主备与 VIP,对外呈现单一地址;后端为 FTP 服务器集群。为提升吞吐,优先选择 DR 模式(Director 不转发数据流量),并在 Real Server 上配置 lo:0 别名 VIPARP 抑制,避免响应绕过 Director。
  • 关键配置要点
    • LVS(DR 模式)示例(ipvsadm 脚本思路)
      ipvsadm -C
      ipvsadm -A -t 192.168.1.100:21 -s rr
      ipvsadm -a -t 192.168.1.100:21 -r 192.168.1.101:21 -g
      ipvsadm -a -t 192.168.1.100:21 -r 192.168.1.102:21 -g
      
    • Real Server(lo:0 与 ARP 抑制)
      ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 broadcast 192.168.1.100
      route add -host 192.168.1.100 dev lo:0
      echo 1 >
           /proc/sys/net/ipv4/conf/lo/arp_ignore
      echo 2 >
           /proc/sys/net/ipv4/conf/lo/arp_announce
      echo 1 >
           /proc/sys/net/ipv4/conf/all/arp_ignore
      echo 2 >
       /proc/sys/net/ipv4/conf/all/arp_announce
      
    • Keepalived(/etc/keepalived/keepalived.conf 片段)
      vrrp_instance VI_1 {
      
          state MASTER
          interface eth0
          virtual_router_id 51
          priority 100
          advert_int 1
          authentication {
           auth_type PASS;
       auth_pass 42 }
      
          virtual_ipaddress {
       192.168.1.100 }
      
      }
      
      virtual_server 192.168.1.100 21 {
      
          delay_loop 6
          lb_algo rr
          lb_kind DR
          protocol TCP
          real_server 192.168.1.101 21 {
           weight 1;
       TCP_CHECK {
           connect_timeout 10;
       }
       }
      
          real_server 192.168.1.102 21 {
           weight 1;
       TCP_CHECK {
           connect_timeout 10;
       }
       }
      
      }
          
      
  • 适用场景:大流量、高并发与高可用要求;需正确配置 PASV 端口范围返回 VIP 策略,避免数据连接回错路径。

五、后端 FTP 与防火墙配置要点

  • vsftpd 基础配置(/etc/vsftpd/vsftpd.conf,示例)
    listen=YES
    listen_ipv6=NO
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES
    pasv_enable=YES
    pasv_min_port=10090
    pasv_max_port=10100
    pasv_address=192.168.1.100   # 对外 VIP(LVS/HAProxy 地址);若直连后端,填各自内网地址
    
  • 防火墙与 SELinux
    • 放行控制与被动端口:sudo firewall-cmd --permanent --add-service=ftp
    • 放行被动端口范围:sudo firewall-cmd --permanent --add-port=10090-10100/tcp
    • 重载:sudo firewall-cmd --reload
    • SELinux(如启用):sudo setsebool -P ftp_home_dir on
  • FTPS 注意事项
    • 证书与协议:启用 ssl_enable=YESforce_local_data_ssl=YESforce_local_logins_ssl=YES,证书路径正确;FTPS 在负载均衡器上优先选择 SSL Passthrough,避免中间人解密与证书绑定问题。
  • 验证与运维
    • 连接测试:ftp < VIP> lftp < VIP> ,上传/下载大文件验证吞吐与稳定性
    • 日志排查:tail -f /var/log/vsftpd/vsftpd.logtail -f /var/log/haproxy.log
    • 监控建议:结合 Prometheus + Grafana 监控连接数、带宽与错误率,设置告警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS FTP Server怎样实现负载均衡
本文地址: https://pptw.com/jishu/761481.html
CentOS FTP Server怎样配置防火墙 CentOS FTP Server怎样设置带宽限制

游客 回复需填写必要信息