温馨提示×

ubuntu ftpserver如何做负载均衡

小樊
47
2026-10-02 14:22:59
栏目: 云计算

在 Ubuntu 上搭建 FTP 服务器的负载均衡,需要先明确一个关键问题:

FTP 是“有状态 + 双端口”协议(21 控制端口 + 20 或随机数据端口),不能像 HTTP 那样简单用 Nginx/LVS 直接反代。

下面按可行方案从易到难说明。


一、最推荐:使用支持 FTP 的负载均衡设备 / 软件

1️⃣ HAProxy(支持 FTP 模式)

HAProxy 可以代理 FTP,但必须走“透传模式”

示例(主动/被动 FTP)

frontend ftp_front
    bind *:21
    mode tcp
    default_backend ftp_back

backend ftp_back
    mode tcp
    balance roundrobin
    server ftp1 192.168.1.11:21 check
    server ftp2 192.168.1.12:21 check

⚠ 限制:

  • 只能负载 控制连接
  • 数据端口(被动模式)必须:
    • 每台 FTP Server 暴露相同被动端口范围
    • 防火墙放行

✅ 适合:只读下载、简单分发


2️⃣ LVS(DR / NAT 模式)

Linux 原生负载均衡,对 FTP 非常友好

# 示例:LVS NAT
ipvsadm -A -t 192.168.1.100:21 -s rr
ipvsadm -a -t 192.168.1.100:21 -r 192.168.1.11:21 -m
ipvsadm -a -t 192.168.1.100:21 -r 192.168.1.12:21 -m

✅ 优点:

  • 性能极高
  • 支持 FTP 数据连接

❌ 缺点:

  • 配置复杂
  • 需要内核支持

二、FTP Server 层方案(更常用)

3️⃣ vsftpd + 多机共享存储(最稳)

架构:

Client
  ↓
Load Balancer (LVS / HAProxy)
  ↓
vsftpd (多台 Ubuntu)
  ↓
NFS / Ceph / GlusterFS

vsftpd 配置要点

listen=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

所有 FTP Server:

  • 相同用户
  • 相同目录
  • 相同被动端口范围

✅ 企业最常用方案


4️⃣ ProFTPD + 集群模块

ProFTPD 支持:

  • 共享 SQL 用户
  • 共享存储
  • 多节点部署
<IfModule mod_radius.c>
...
</IfModule>

适合:

  • 大用户量
  • 多租户

三、不推荐但可行的方案

5️⃣ DNS 轮询(极不稳定)

ftp IN A 192.168.1.11
ftp IN A 192.168.1.12

❌ 问题:

  • 数据连接会断
  • 无健康检查

四、方案选择建议

场景 推荐方案
简单分发 HAProxy TCP
高性能 LVS
企业级 vsftpd + 共享存储
多租户 ProFTPD + DB

五、我可以继续帮你

你可以告诉我:

  1. 用 vsftpd 还是 ProFTPD
  2. 被动还是主动模式
  3. 是否同一存储
  4. 并发量大概多少

我可以直接给你 完整配置示例。

0 踩