温馨提示×

如何确保CentOS SFTP的高可用性

小樊
52
2025-12-31 05:34:25
栏目: 智能运维

CentOS SFTP高可用落地方案

一、总体架构与原则

  • 使用VIP + Keepalived提供对外统一地址,避免单点故障;两台或多台 CentOS 节点运行 OpenSSHSFTP 子系统(internal-sftp),通过 VIP 对外提供接入。
  • 数据面采用主备数据同步(如 rsync + inotify 实时同步)或共享存储(如 NFS/块存储)保证多节点间数据一致;应用侧使用重试与退避策略容忍短暂切换。
  • 安全面仅开放 TCP/22,结合防火墙/安全组白名单、最小权限与审计日志。
  • 监控面覆盖 VIP 漂移、sshd 进程、磁盘空间、同步延迟 等关键指标,并配置告警。

二、基础SFTP与权限加固

  • 安装与版本:确保 OpenSSH 版本 ≥ 4.8p1(SFTP 为 SSH 子系统,无需额外 FTP 服务)。
  • 启用 internal-sftp 并限制仅 SFTP:
    • 编辑 /etc/ssh/sshd_config
      • 设置:Subsystem sftp internal-sftp
      • 对目标用户组(如 sftp)添加:
        • Match Group sftp
        • ChrootDirectory /data/sftp/%u(%u 为用户名,Chroot 根必须不可写)
        • ForceCommand internal-sftp
        • AllowTcpForwarding noX11Forwarding no
  • 用户与目录权限(示例用户 mysftp):
    • 创建用户:useradd -g sftp -s /bin/false mysftp && passwd mysftp
    • 目录结构:/data/sftp/mysftp(Chroot 根,属主 root:sftp,权限 755),可写目录 /data/sftp/mysftp/upload(属主 mysftp:sftp,权限 755
  • 启动与验证:systemctl restart sshd,使用 sftp mysftp@VIP 测试登录与上传。

三、高可用实现步骤

  • 网络与VIP:两台节点(示例 172.16.51.191/192)配置同一网段 VIP 172.16.51.193;部署 Keepalived 实现主机健康检查与 VIP 漂移(VRRP)。
  • 数据一致性(主备):
    • 方案A(推荐):主节点 /data/sftp 实时推送到备节点,使用 rsync + inotify 触发同步;备节点以只读方式承载业务或仅在切换后短暂写入。
    • 方案B:挂载共享存储(如 NFS/云盘)到 /data/sftp,避免多节点写入冲突。
  • 服务自愈:为 sshd 配置 systemd 自恢复(如 Restart=always),减少进程级故障导致的不可用窗口。
  • 连接收敛:对外仅发布 VIP:22,由负载均衡或上游防火墙/NAT 将 22 端口转发到 VIP,避免直连节点 IP。

四、并发与稳定性优化

  • 提升并发能力(按负载调整):
    • MaxStartups 1000:30:1200(并发未认证连接上限与速率限制)
    • MaxSessions 1000(单用户最大会话数)
    • ClientAliveInterval 300(每 5 分钟保活探测,减少空闲断开)
  • 调优后执行:systemctl reload sshd 使配置生效。

五、上线验证与运维要点

  • 验证清单:
    • VIP 漂移演练(停掉主机 Keepalived/sshd,确认 VIP 切换SFTP 不断链/可重连)。
    • 上传/下载/断点续传与权限校验(仅 upload 可写,根目录不可写)。
    • 同步链路验证(主备数据一致性与延迟告警)。
  • 安全与合规:
    • 仅放行 22/TCP,限制来源 IP;禁用不必要模块与转发。
    • 建议启用 日志审计监控告警(进程存活、磁盘、连接数、同步状态)。
  • 风险提示:
    • 多节点并发写同一目录易产生时序与锁问题;优先采用“主备 + 同步”或“共享存储”模型,避免同时写入。
    • 生产环境不建议直接关闭 SELinux,应通过策略放行所需访问(如目录/端口),以降低系统风险。

0