在 Linux 上搭建 FTP Server(如 vsftpd / proftpd) 的容灾,核心目标通常是:
下面从 架构层面 到 具体实现方案 系统说明。
FTP 容灾一般分三层:
避免数据同步问题
架构:
FTP Server A ─┐
├── 共享存储(同一份数据)
FTP Server B ─┘
✅ 优点
❌ 缺点
rsync -az --delete /ftpdata/ backup:/ftpdata/
配合:
inotifywait -m -r -e modify,create,delete /ftpdata
✅ 简单
❌ 有秒级延迟,可能丢文件
基于 rsync + inotify
yum install lsyncd
settings {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd.status"
}
sync {
default.rsync,
source = "/ftpdata",
target = "backup::ftpdata"
}
✅ 近实时
✅ 稳定
✅ 文件级无感知
❌ 运维复杂
Client → VIP(10.0.0.10)
↓
FTP Master / Backup
Keepalived 配置要点
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
10.0.0.10
}
}
✅ FTP 无感知切换
✅ 支持主动/被动模式(需配置 pasv_address)
⚠ 注意 FTP 被动端口范围要一致
❌ FTP 控制+数据双连接,容易出问题
/etc/vsftpd//etc/passwd, /etc/shadow(如系统用户)✅ 建议用 Git / Ansible 管理配置
vsftpd + lsyncd + keepalived
vsftpd + 共享存储(Ceph/NFS) + keepalived
云 FTP + 云盘快照 + 跨可用区复制
即使有容灾,也要有备份:
如果你愿意,可以告诉我:
我可以直接给你一套可落地的配置示例。