在 CentOS 上做 FTPServer 集群,常见目标有两种:
FTP 比较特殊(有 控制端口 21 + 数据端口,还有 主动/被动模式),所以集群方案要特别注意。
下面给你几种 实战可行方案,从简单到复杂。
Client
|
Load Balancer (LVS / HAProxy / Nginx Stream)
|
FTP Server1 FTP Server2 FTP Server3
|
共享存储 (NFS / GlusterFS / Ceph / 对象存储挂载)
✅ 必须使用 被动模式(PASV)
✅ 所有 FTP 服务器 配置相同的 PASV 端口范围
✅ 文件必须放在 共享存储
yum install -y vsftpd
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=VIP或LB地址
mount -t nfs 192.168.1.100:/ftpdata /data/ftp
所有节点:
chown -R ftp:ftp /data/ftp
示例(HAProxy TCP 模式):
listen ftp
bind *:21
mode tcp
server ftp1 192.168.1.11:21 check
server ftp2 192.168.1.12:21 check
⚠️ 数据端口也要转发(30000-31000)
适合:不允许数据不一致
VIP (Keepalived)
|
FTP Master <-> FTP Backup
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
192.168.1.200
}
}
✅ 优点:简单
❌ 缺点:浪费一台机器
如果 不是必须用 FTP,强烈建议:
✅ SFTP(SSH) ✅ 更好集群 ✅ 更安全
主动模式(PORT):
Server -> Client
负载均衡基本不支持
✅ 必须用 PASV
如果是 本地用户:
建议:
LDAP + vsftpd
| 需求 | 推荐 |
|---|---|
| 简单高可用 | Keepalived + NFS |
| 高性能 | LVS + PASV + NFS |
| 新系统 | SFTP |
| 云环境 | 对象存储 + SFTP |
如果你愿意,可以告诉我:
我可以直接给你一套 可落地的配置。