1. 程式人生 > >LVS實現FTP的上傳流量的負載均衡

LVS實現FTP的上傳流量的負載均衡

負載均衡 LVS 文件上傳

工作中遇到上百臺機器向一個集群環境(大約10臺機器)上傳文件的場景,想到了使用LVS來做ftp服務器的負載均衡。

但是NAT模式下請求、響應報文都要經過Director Server,在高負載的場景下Director Server的就會成為瓶頸。而雖然DR模式和TUN模式下響應報文是不經過Director Server的,但是對應大數據量的文件上傳任務來說主要,瓶頸主要在於請求報文帶來的大流量,怎麽能將請求報文中的大流量分散到集群各節點?

想到使用FTP被動模式下的數據鏈路ip地址跳轉功能,對於vsftp來說對應參數pasv_address。將該地址配置為LVS集群的real server的ip地址(ftp服務器的本機地址)。這樣ftp客戶端通過21端口經過LVS的Director Server連通控制鏈路後,會使用real server的ip地址連通數據鏈路。

因為數據鏈路不經過LVS的Director Server,而是直接通過數據鏈路鏈接各個集群的節點的FTP服務器,所以不論執行上傳下載任務都可以實現負載均衡的目的。

註意點:因為vsftp對於數據鏈接和控制鏈路中報文中目的IP地址不一致的情況校驗,會直接向FTP客戶端返回RST消息終止數據鏈路的連接,對這種情況可以通過iptables修改數據鏈路中到達real server的報文中的目的IP為Director Server,以實現躲避校驗的目的:

            iptables -t nat -A PREROUTING -p tcp -dport ${pasv_min_port}:${pasv_max_port} -j DNAT --to_destination ${VIP}

LVS實現FTP的上傳流量的負載均衡