在 Debian 下使用 vsftpd 做“负载”,通常指的是 并发、带宽或高可用负载分担。vsftpd 本身不支持集群模式,但可以通过 系统层 + 架构层 来实现。下面按常见场景给你一套可落地的方案,从简单到专业。
✅ 推荐方案
❌ 不推荐
# /etc/vsftpd.conf
max_clients=200
max_per_ip=10
含义:
max_clients:同时最多 200 个 FTP 连接max_per_ip:单个 IP 最多 10 个连接⚠️ 实际能撑多少,取决于:
local_max_rate=1048576 # 1MB/s
anon_max_rate=524288 # 512KB/s
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
ufw allow 30000:31000/tcp
用户
↓
负载均衡(LVS / HAProxy / Nginx Stream)
↓
Debian Server A (vsftpd)
Debian Server B (vsftpd)
↓
共享存储(NFS / Ceph / MinIO)
apt update
apt install haproxy
listen ftp
bind 0.0.0.0:21
mode tcp
balance roundrobin
server ftp1 192.168.1.10:21 check
server ftp2 192.168.1.11:21 check
⚠️ 注意
stream {
upstream ftp_backend {
server 192.168.1.10:21;
server 192.168.1.11:21;
}
server {
listen 21;
proxy_pass ftp_backend;
}
}
如果不共享存储,负载均衡就没有意义。
| 场景 | 推荐 |
|---|---|
| 小文件 | NFS |
| 大文件 | CephFS |
| 对象存储 | MinIO |
| 云环境 | S3 / OSS |
apt install nfs-kernel-server
# /etc/exports
/data/ftp *(rw,sync,no_subtree_check)
后端挂载:
mount -t nfs 192.168.1.100:/data/ftp /data/ftp
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=ftpuser
virtual_use_local_privs=YES
apt install keepalived
VIP 漂移,客户端无感知。
⚠️ 强烈建议
| 需求 | 推荐 |
|---|---|
| 文件传输 | ✅ SFTP |
| 高并发 | ✅ SFTP |
| 安全 | ✅ SFTP |
| 自动化 | ✅ SFTP / API |
vsftpd 在现代架构中已偏老旧。
你可以直接告诉我:
我可以帮你:
要不要我直接按你的实际使用场景给你一套最合适方案?