温馨提示×

ubuntu ftpserver如何做集群

小樊
43
2026-09-11 11:23:54
栏目: 智能运维

在 Ubuntu 上做 FTP Server 集群,通常不会像 Web 服务那样“无状态横向扩展”那么简单,因为 FTP 是有状态协议(控制连接 + 数据连接),而且数据连接可能走主动/被动模式。下面给你一套常见、可落地的方案思路,从简单到复杂。


一、先明确:你要的“集群”是哪种?

  1. 负载均衡(高并发)
    • 多台 FTP 服务器
    • 客户端无感知
  2. 高可用(HA)
    • 一台挂了,另一台接管
  3. 统一存储(数据一致性)
    • 多台 FTP 看到的是同一份文件

✅ 实际生产里:FTP 集群 = 负载均衡 + 共享存储 + 高可用


二、推荐架构(最常用)

Client
   |
Load Balancer (L4 / LVS / HAProxy)
   |
+-----------+-----------+
|           |           |
FTP Node1  FTP Node2  FTP Node3
   |
Shared Storage (NFS / Ceph / GlusterFS)

三、FTP 软件选择(Ubuntu)

推荐:

  • vsftpd(稳定、简单)
  • ProFTPD(功能强,支持集群配置)

❌ 不推荐 Windows 风格 FTP 集群方案


四、关键问题:FTP 被动模式 & 负载均衡

1. FTP 模式问题

  • 主动模式(PORT):难做负载均衡
  • ✅ 被动模式(PASV):必须统一 PASV 端口范围

vsftpd 示例

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=公网IP或LB IP

五、共享存储(最重要)

方案 1:NFS(最简单)

apt install nfs-kernel-server
/data/ftp *(rw,sync,no_root_squash)

所有 FTP 节点挂载:

mount -t nfs nfs-server:/data/ftp /srv/ftp

✅ 适合中小规模
❌ NFS 是单点(可加 HA NFS)


方案 2:GlusterFS(推荐)

  • 多节点
  • 无单点
  • 文件自动同步
apt install glusterfs-server

适合 真正集群


方案 3:对象存储 + FTP 网关(进阶)

  • Ceph
  • MinIO + FTP Gateway

六、负载均衡方案

方案 1:HAProxy(TCP 模式)

listen ftp
    bind *:21
    mode tcp
    balance roundrobin
    server ftp1 10.0.0.1:21 check
    server ftp2 10.0.0.2:21 check

⚠️ PASV 端口也要转发(30000-31000)


方案 2:LVS(性能最好)

  • 内核级
  • 适合大流量

七、高可用(防止 LB 挂)

Keepalived + VIP

apt install keepalived
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    virtual_ipaddress {
        192.168.1.100
    }
}

八、用户和权限统一

方案

  • LDAP
  • 或 NFS + 统一 uid/gid
  • 或数据库用户(ProFTPD + MySQL)

九、最简可落地方案(中小公司)

✅ 2 台 Ubuntu

  • vsftpd
  • NFS 共享目录
  • HAProxy + Keepalived
  • PASV 固定端口

十、如果你愿意,我可以帮你

你可以告诉我:

  1. FTP 用户量(几十 / 几千?)
  2. 数据量(GB / TB?)
  3. 公有云 / 私有化?
  4. 是否必须 FTP(还是可以用 SFTP?)

我可以直接给你 一套可执行的配置模板。

0 踩