CentOS FTP Server怎样实现负载均衡
导读:CentOS FTP Server 负载均衡实现指南 一、架构与关键点 推荐将负载均衡器部署为对外统一入口,后端多台 vsftpd/ProFTPD/Pure-FTPd 组成集群,统一承载控制连接(21/TCP)与数据连接。为兼容负载均衡与...
CentOS FTP Server 负载均衡实现指南
一、架构与关键点
- 推荐将负载均衡器部署为对外统一入口,后端多台 vsftpd/ProFTPD/Pure-FTPd 组成集群,统一承载控制连接(21/TCP)与数据连接。为兼容负载均衡与穿越防火墙,FTP 建议启用被动模式(PASV),并在负载均衡器或防火墙上开放一段被动端口范围,同时保证各后端返回一致的 PASV IP/端口 信息。若使用 FTPS(FTP over SSL/TLS),负载均衡器需支持 TLS 透传(SSL Passthrough),避免解密带来的证书与握手复杂性。
二、方案一 HAProxy TCP 四层转发(简单通用)
- 安装与启用
- 执行:
sudo yum install haproxy -y & & 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 - 前端与后端
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
- 全局与默认
- 防火墙放行
- 放行控制端口:
sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload - 如使用 PASV,还需放行你的被动端口范围(示例):
sudo firewall-cmd --permanent --add-port=10090-10100/tcp & & sudo firewall-cmd --reload
- 放行控制端口:
- 适用场景:快速上线、控制与数据均为 TCP 直连,对应用透明;FTPS 建议启用透传模式。
三、方案二 Nginx Stream 四层转发(轻量替代)
- 安装与启用
- 执行:
sudo yum install nginx -y & & sudo systemctl enable --now nginx
- 执行:
- 关键配置示例(/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ftp.conf)
stream { upstream ftp_servers { server 192.168.1.101:21; server 192.168.1.102:21; } server { listen 21; proxy_pass ftp_servers; proxy_timeout 1h; proxy_responses 1; } } - 说明:Nginx Stream 工作在四层,适合 FTP 控制通道分发;FTPS 同样建议采用透传方式。被动端口范围与防火墙策略需与方案一一致。
四、方案三 LVS + Keepalived(高性能与高可用)
- 拓扑与思路
- 使用 LVS 做四层负载均衡,Keepalived 提供 VRRP 主备与 VIP,对外呈现单一地址;后端为 FTP 服务器集群。为提升吞吐,优先选择 DR 模式(Director 不转发数据流量),并在 Real Server 上配置 lo:0 别名 VIP 与 ARP 抑制,避免响应绕过 Director。
- 关键配置要点
- LVS(DR 模式)示例(ipvsadm 脚本思路)
ipvsadm -C ipvsadm -A -t 192.168.1.100:21 -s rr ipvsadm -a -t 192.168.1.100:21 -r 192.168.1.101:21 -g ipvsadm -a -t 192.168.1.100:21 -r 192.168.1.102:21 -g - Real Server(lo:0 与 ARP 抑制)
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 broadcast 192.168.1.100 route add -host 192.168.1.100 dev lo:0 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 - Keepalived(/etc/keepalived/keepalived.conf 片段)
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS; auth_pass 42 } virtual_ipaddress { 192.168.1.100 } } virtual_server 192.168.1.100 21 { delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.1.101 21 { weight 1; TCP_CHECK { connect_timeout 10; } } real_server 192.168.1.102 21 { weight 1; TCP_CHECK { connect_timeout 10; } } }
- LVS(DR 模式)示例(ipvsadm 脚本思路)
- 适用场景:大流量、高并发与高可用要求;需正确配置 PASV 端口范围 与 返回 VIP 策略,避免数据连接回错路径。
五、后端 FTP 与防火墙配置要点
- 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=192.168.1.100 # 对外 VIP(LVS/HAProxy 地址);若直连后端,填各自内网地址 - 防火墙与 SELinux
- 放行控制与被动端口:
sudo firewall-cmd --permanent --add-service=ftp - 放行被动端口范围:
sudo firewall-cmd --permanent --add-port=10090-10100/tcp - 重载:
sudo firewall-cmd --reload - SELinux(如启用):
sudo setsebool -P ftp_home_dir on
- 放行控制与被动端口:
- FTPS 注意事项
- 证书与协议:启用
ssl_enable=YES、force_local_data_ssl=YES、force_local_logins_ssl=YES,证书路径正确;FTPS 在负载均衡器上优先选择 SSL Passthrough,避免中间人解密与证书绑定问题。
- 证书与协议:启用
- 验证与运维
- 连接测试:
ftp < VIP>或lftp < VIP>,上传/下载大文件验证吞吐与稳定性 - 日志排查:
tail -f /var/log/vsftpd/vsftpd.log、tail -f /var/log/haproxy.log - 监控建议:结合 Prometheus + Grafana 监控连接数、带宽与错误率,设置告警。
- 连接测试:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS FTP Server怎样实现负载均衡
本文地址: https://pptw.com/jishu/761481.html
