怎样实现CentOS FTPServer负载均衡
导读:实现思路与关键点 在 CentOS 上,FTP 的控制通道使用 21/TCP,数据通道在 主动模式 由服务器主动连客户端(端口随机),在 被动模式 由服务器开放一段端口范围供客户端连接。负载均衡器必须支持 FTP ALG(应用层网关)或改...
实现思路与关键点
- 在 CentOS 上,FTP 的控制通道使用 21/TCP,数据通道在 主动模式 由服务器主动连客户端(端口随机),在 被动模式 由服务器开放一段端口范围供客户端连接。负载均衡器必须支持 FTP ALG(应用层网关)或改为 L4 直连 并让后端返回可被客户端访问的地址。为简化与通用性,建议将 FTP 服务器配置为 被动模式(PASV) 并在负载均衡器上发布统一的 PASV 地址与端口范围。若使用 FTPS(FTP over SSL/TLS),多数传统 ALG 无法解密控制通道,通常更稳妥的做法是采用 L4 直连 或选择支持 FTP/TLS 的专用方案。
方案一 HAProxy TCP 模式负载均衡(通用、易维护)
- 适用:需要快速上线、同时承载 FTP 与 FTPS,或后端为 PASV 并统一发布地址的场景。
- 安装与启用
- 安装:sudo yum install -y haproxy
- 启用:sudo systemctl enable --now haproxy
- 关键配置示例(/etc/haproxy/haproxy.cfg)
- 全局与默认
- global
- log /dev/log local0
- log /dev/log local1 notice
- daemon
- defaults
- log global
- mode tcp
- option tcplog
- timeout connect 5000ms
- timeout client 50000ms
- timeout server 50000ms
- global
- 前端与后端
- frontend ftp_front
- bind *:21
- default_backend ftp_back
- backend ftp_back
- balance roundrobin
- server ftp1 192.168.1.101:21 check
- server ftp2 192.168.1.102:21 check
- frontend ftp_front
- 全局与默认
- 防火墙放行
- 放行控制端口:sudo firewall-cmd --permanent --add-port=21/tcp & & sudo firewall-cmd --reload
- 若使用 PASV,还需放行你在后端 vsftpd 配置的 PASV 端口范围(例如 10090–10100):sudo firewall-cmd --permanent --add-port=10090-10100/tcp & & sudo firewall-cmd --reload
- 说明
- 此模式为 L4,不解析 FTP 协议;对 FTPS 友好(不解密)。
- 若客户端在内网、后端在公网,需在后端 vsftpd 的 pasv_address 中填写 负载均衡器的公网 IP,并确保 PASV 端口范围在负载均衡器与后端均放行。
方案二 LVS DR 模式负载均衡(高性能、需内核支持)
- 适用:高并发、对性能要求高的场景;通常与 Keepalived 配合实现高可用。
- 架构要点
- 负载均衡器(Director)对外提供 VIP:21,使用 DR(Direct Routing) 模式;后端 RealServer 不经由 Director 转发数据流量,性能接近直连。
- Director 配置要点
- 开启转发:net.ipv4.ip_forward=1
- 安装工具:sudo yum install -y ipvsadm
- 配置 LVS(示例)
- ipvsadm -A -t VIP:21 -s rr
- ipvsadm -a -t VIP:21 -r 192.168.1.101:21 -g
- ipvsadm -a -t VIP:21 -r 192.168.1.102:21 -g
- RealServer 配置要点(每台后端)
- 在回环接口配置 VIP(lo:0),并抑制 ARP 响应,确保客户端 ARP 解析到 Director 的 VIP:
- ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP
- echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
- echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
- echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
- 在回环接口配置 VIP(lo:0),并抑制 ARP 响应,确保客户端 ARP 解析到 Director 的 VIP:
- 防火墙与端口
- 放行 21/TCP 与 PASV 端口范围(同方案一)。
- 高可用
- 使用 Keepalived 管理 VIP 与 LVS 规则,实现主备自动切换。
后端 FTP 服务器与防火墙配置要点
- 安装与基础
- 安装:sudo yum install -y vsftpd
- 启用:sudo systemctl enable --now vsftpd
- 建议的 vsftpd 关键配置(/etc/vsftpd/vsftpd.conf)
- 基础
- listen=YES
- listen_ipv6=NO
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- chroot_local_user=YES
- allow_writeable_chroot=YES
- 被动模式
- pasv_enable=YES
- pasv_min_port=10090
- pasv_max_port=10100
- pasv_address=负载均衡器对外IP(客户端用来连 PASV 的地址)
- 基础
- SELinux 与防火墙
- SELinux(如启用):setsebool -P allow_ftpd_full_access 1
- 防火墙:放行 21/TCP 与 10090–10100/TCP(或你设定的 PASV 范围)。
测试与运维建议
- 功能测试
- 连接测试:ftp 负载均衡器IP
- 上传/下载大文件,验证 PASV 端口 是否可达、速率是否正常、是否出现中断。
- 多客户端并发测试,观察负载是否按预期分发。
- 日志与监控
- 查看 HAProxy:tail -f /var/log/haproxy.log
- 查看 vsftpd:tail -f /var/log/vsftpd/vsftpd.log
- 建议接入 监控/告警(如 Prometheus + Grafana)与 健康检查,及时发现后端异常。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样实现CentOS FTPServer负载均衡
本文地址: https://pptw.com/jishu/785533.html
