操作系統:CentOS6.5_x64 問題描述 使用lvs實現ftp的負載均衡 為了使模型足夠簡單,這裡只實現了loadblance,HA並未實現,可以藉助keepalived實現。 具體實現 hostA : 192.168.1.21 hostB : 192.168.1.22 hostC : 192 ...
操作系統:CentOS6.5_x64
問題描述
使用lvs實現ftp的負載均衡
為了使模型足夠簡單,這裡只實現了loadblance,HA並未實現,可以藉助keepalived實現。
具體實現
hostA : 192.168.1.21
hostB : 192.168.1.22
hostC : 192.168.1.23
虛擬ip地址: 192.168.1.20
hostA為負載均衡器
hostB和hostC為ftp伺服器
轉發模式:DR
調度演算法:rr
hostA配置
安裝ipvsadm:
yum install ipvsadm -y
從源碼安裝:
yum install -y gcc gcc-c++ make pcre pcre-devel kernel-devel openssl-devel yum install libnl* popt* wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz tar zxvf ipvsadm-1.26.tar.gz cd ipvsadm-1.26 make && make install
開啟ip轉發功能:
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p
關閉防火牆:
/etc/init.d/iptables stop
配置ipvs(start.sh) :
#! /bin/sh # DR Mode ipvsadm -C ipvsadm -A -t 192.168.1.20:21 -s rr -p ipvsadm -a -t 192.168.1.20:21 -r 192.168.1.22:21 -g ipvsadm -a -t 192.168.1.20:21 -r 192.168.1.23:21 -g ipvsadm save ipvsadm -ln ifconfig eth0:0 192.168.1.20 netmask 255.255.255.0
hostB配置
配置虛擬ip:
[root@host22 test]# cat /etc/init.d/realserver.sh #!/bin/bash SNS_VIP=192.168.1.20 . /etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP /sbin/route add -host $SNS_VIP 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 sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" ;; stop) ifconfig lo:0 down route del $SNS_VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0 [root@host22 test]# sh /etc/init.d/realserver.sh start SIOCADDRT: File exists RealServer Start OK
開啟ftp服務
安裝vsftpd :
yum install vsftpd
修改配置:
為了方便開啟匿名用戶操作ftp的各種許可權。
chmod a+w /var/ftp/pub/ # 開啟文件夾寫許可權 vim /etc/vsftpd/vsftpd.conf anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES # 開啟匿名用戶刪除功能
配置selinux:
getsebool -a | grep ftp setsebool -P allow_ftpd_anon_write 1 setsebool -P allow_ftpd_full_access 1
啟動ftp:
/etc/init.d/vsftpd start
配置開機啟動:
chkconfig vsftpd on
關閉防火牆:
/etc/init.d/iptables stop
chkconfig iptables off
hostC配置
配置同hostB
討論
這裡只是用lvs實現了ftp負載均衡的模型,其它具體問題請參考lvs相關文檔。
這裡附上測試腳本,ftp寫文件腳本:
#! /usr/bin/env python #-*- coding:utf-8 -*- import ftplib,os,time ftp = ftplib.FTP("192.168.1.20") ftp.login() ftp.cwd("/pub") i = 0 while True : filename = "ftptest1_%d.txt" % i print filename i += 1 with open(filename,"w") as fout : fout.write(str(time.time())) myfile = open(filename, 'r') try : ftp.storlines('STOR ' + filename, myfile) except : ftp.login() ftp.cwd("/pub") myfile.close() os.remove(filename) time.sleep(10)
好,就這些了,希望對你有幫助。
本文github地址:
https://github.com/mike-zhang/mikeBlogEssays/blob/master/2017/20170623_使用lvs實現ftp的負載均衡.rst
歡迎補充