CentOS 上实现 vsftpd 负载均衡的可落地方案
架构选型与总体思路
方案一 HAProxy TCP 转发
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
方案二 Nginx Stream 四层转发
stream {
upstream ftp_servers {
server 192.168.1.101:21;
server 192.168.1.102:21;
}
server {
listen 21;
proxy_pass ftp_servers;
}
}
方案三 LVS IPVS + Keepalived(高可用与高性能)
iptables -t mangle -A PREROUTING -p tcp --dport 20:21 -j MARK --set-mark 99
iptables -t mangle -A PREROUTING -p tcp --dport 50000:50010 -j MARK --set-mark 99
ipvsadm -A -f 99 -s rr -p 400
ipvsadm -a -f 99 -r 192.168.2.49 -m -w 2
ipvsadm -a -f 99 -r 192.168.2.59 -m -w 2
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50010
pasv_address=<VIP 或 公网出口地址>
vsftpd 与系统关键配置
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
xferlog_enable=YES
connect_from_port_20=YES
验证与运维要点