温馨提示×

linux ftpserver如何做容灾

小樊
42
2026-09-17 09:56:47
栏目: 智能运维

在 Linux 上搭建 FTP Server(如 vsftpd / proftpd) 的容灾,核心目标通常是:

  • 数据不丢(RPO 小)
  • 服务中断时间短(RTO 小)
  • 配置可快速恢复
  • 避免单点故障

下面从 架构层面具体实现方案 系统说明。


一、FTP 容灾总体思路

FTP 容灾一般分三层:

  1. 数据容灾(文件存储)
  2. 服务容灾(FTP 进程 / 端口)
  3. 配置容灾(用户、权限、参数)

二、数据层容灾(最关键)

方案 1:共享存储(推荐)

避免数据同步问题

  • NFS
  • iSCSI
  • 分布式存储(Ceph / GlusterFS)
  • 云盘(EBS / 云硬盘)

架构:

FTP Server A ─┐
              ├── 共享存储(同一份数据)
FTP Server B ─┘

✅ 优点

  • 无数据不一致
  • 切换快

❌ 缺点

  • 存储本身是单点(需存储自身高可用)

方案 2:实时文件同步(无共享存储时)

rsync + inotify(准实时)

rsync -az --delete /ftpdata/ backup:/ftpdata/

配合:

inotifywait -m -r -e modify,create,delete /ftpdata

✅ 简单
❌ 有秒级延迟,可能丢文件


lsyncd(推荐)

基于 rsync + inotify

yum install lsyncd
settings {
  logfile = "/var/log/lsyncd.log",
  statusFile = "/var/log/lsyncd.status"
}

sync {
  default.rsync,
  source = "/ftpdata",
  target = "backup::ftpdata"
}

✅ 近实时
✅ 稳定


方案 3:底层块复制(强一致)

  • DRBD(Linux 软 RAID 远程镜像)
  • 云厂商磁盘异步/同步复制

✅ 文件级无感知
❌ 运维复杂


三、服务层容灾(FTP 高可用)

方案 1:Keepalived + VIP(最常见)

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 被动端口范围要一致


方案 2:负载均衡(不推荐主用)

  • HAProxy(FTP 支持有限)
  • LVS(四层,可用但复杂)

❌ FTP 控制+数据双连接,容易出问题


四、配置容灾(常被忽略)

必须备份的内容

  • /etc/vsftpd/
  • /etc/passwd, /etc/shadow(如系统用户)
  • 虚拟用户数据库(db4 / mysql)
  • 防火墙规则
  • PASV 端口范围

✅ 建议用 Git / Ansible 管理配置


五、典型生产级方案(示例)

中小规模

vsftpd + lsyncd + keepalived

大规模

vsftpd + 共享存储(Ceph/NFS) + keepalived

云环境

云 FTP + 云盘快照 + 跨可用区复制

六、备份与恢复(底线)

即使有容灾,也要有备份:

  • 每日全量 + 增量
  • 异地备份
  • 定期恢复演练

七、常见坑提醒

  1. 被动模式 PASV 地址必须正确
  2. 防火墙必须放行 PASV 端口
  3. SELinux 会影响 FTP
  4. 不要用 root 跑 FTP
  5. 虚拟化迁移 ≠ 容灾

如果你愿意,可以告诉我:

  • 用的是 vsftpd 还是 proftpd
  • 是否 云 / 物理机
  • 容灾级别(同城 / 异地)

我可以直接给你一套可落地的配置示例

0