基于lvs的ftp集群

集群架构图

 

具体实现

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:

1
yum install ipvsadm -y

开启ip转发功能:

1
2
3
4
5
vim /etc/sysctl.conf
 
net.ipv4.ip_forward = 1
 
sysctl -p

关闭防火墙:

1
/etc/init.d/iptables stop

配置ipvs(start.sh)

1
2
3
4
5
6
7
8
9
10
11
#! /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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@hostB 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@hostB test]# sh /etc/init.d/realserver.sh start
SIOCADDRT: File exists
RealServer Start OK

 安装ftp

1
yum install vsftpd -y

 修改配置

    为了方便开启匿名用户操作ftp的各种权限。

1
2
3
4
5
6
7
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:

1
2
3
getsebool -a | grep ftp
setsebool -P allow_ftpd_anon_write 1
setsebool -P allow_ftpd_full_access 1

启动ftp:

1
/etc/init.d/vsftpd start

配置开机启动:

1
chkconfig vsftpd on

关闭防火墙:

1
2
/etc/init.d/iptables stop
chkconfig iptables off

  

hostC配置

配置同hostB

 

测试脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#! /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)

  

 

 

关闭防火墙:

posted @   NAVYSUMMER  阅读(452)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2018-02-19 Template基础
2018-02-19 Django Views(视图函数)
2018-02-19 Django URL (路由系统)
2018-02-19 Django的配置文件(settings)
2018-02-19 django的流程和命令行工具
2018-02-19 MVC和MTV模式
2018-02-19 Do a web framework ourselves
交流群 编程书籍
点击右上角即可分享
微信分享提示