linux ftp负载均衡,lvs+keepalived+vsftp实现主备负载均衡ftp集群.txt

2010-3-17

目录

spacer.gif负载均衡主服务器(master)10.99.0.245VIP:10.99.0.145

spacer.gif负载均衡备份服务器(backup)10.99.0.226VIP:10.99.0.145

spacer.gif真实ftp服务器110.99.0.246

spacer.gif真实ftp服务器210.99.0.247

本案例涉及到4台服务器,操作系统均为turbolinux11 64位操作系统,内核版本为2.6.18-53。ftp软件为vsftp。

3.1负载均衡主服务器配置

3.1.1下载软件

需要安装ipvsadm-1.24.tar.gz和keepalived-1.1.19.tar.gz两个软件,下载地址如下:

3.1.2软件安装

ipvsadm-1.24.tar.gz安装

将ipvsadm-1.24.tar.gz复制到/usr/src/目录下

对内核源码做个软连接,否则会报错,注意keepalived安装的时候,也是需要这个软连接的。

#ln –s /usr/src/kernels/2.6.18-53-x86_64 /usr/src/linux

解压程序包

# tar –zxvf ipvsadm-1.24.tar.gz

编译安装

# cd ipvsadm-1.24

# make

# make install

验证安装

# ipvsadm

显示如下:

**************************************************************

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:PortForward Weight ActiveConn InActConn

**************************************************************

# lsmod |grep ip_vs

显示如下

**************************************************************

ip_vs_*******1

ip_vs****** 3ip_vs_**

**************************************************************

keepalived-1.1.19.tar.gz安装

同样,将keepalived-1.1.19.tar.gz复制到/usr/src/目录下

解压、编译

# tar –zxvf keepalived-1.1.19.tar.gz

# cd keepalived-1.1.19

# ./configure --prefix=/usr/local/keepalived

注意,出现如下显示,则表示配置成功,红色的三行必须为YES

**************************************************************

Keepalived configuration

-----------------------------------------------

Keepalived version       : 1.1.19

Compiler                 : gcc

Compiler flags           : -g -O2

Extra Lib                : -lpopt -lssl -lcrypto

Use IPVS Framework       : Yes

IPVS sync daemon support : Yes

Use VRRP Framework       : Yes

Use LinkWatch            : No

Use Debug flags          : No

-------------------------------------------------

**************************************************************

# make

# make install

配置启动

#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

#mkdir /etc/keepalived

#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

#cp /usr/local/keepalived/sbin/keepalived /usr/sbin

#service keepalived start|stop(先不要启动)

3.1.3keepalived配置

Keepalived只有一个配置文件,及/etc/keepalived/keepalived.conf,文件内容如下:

************************************************************************

! Configuration File for keepalived

global_defs {

router_id LVS_DEVEL

}

vrrp_sync_group VGM {

group {

VI_CACHE

}

}

vrrp_instance VI_CACHE {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_typePASS

auth_pass 1111

}

virtual_ipaddress {

10.99.0.145

}

}

virtual_server 10.99.0.145 21 {

delay_loop 6

lb_algo wlc

lb_kind DR

persistence_timeout 50

protocol TCP

real_server 10.99.0.246 21 {

weight 1

MISC_CHECK {

misc_path "/usr/local/bin/check_ftpget.pl -H 10.99.0.246 -u dx1 -p 111111"

misc_timeout 10

}

}

real_server 10.99.0.247 21 {

weight 1

MISC_CHECK {

misc_path "/usr/local/bin/check_ftpget.pl -H 10.99.0.247 -u dx1 -p 111111"

misc_timeout 10

}

}

}

************************************************************************

配置文件中的红色部分,涉及到一个脚本,该脚本作用为检测ftp服务是否正常,文件内容如下:

************************************************************************

#!/usr/bin/perl -w

## Written 12/5/00 Jeremy Hanmer

# $Id: check_ftpget.pl,v 1.1 2000/12/07 14:40:44 karldebisschop Exp $

use strict;

use Net::FTP;

use Getopt::Std;

use vars qw($opt_H $opt_u $opt_p $opt_f);

getopts("H:u:p:f:");

my $host = $opt_H ||

die "usage: check_ftp.pl -h host [  ]\n";

my $username = $opt_u || 'anonymous';

my $pass = $opt_p || "$ENV{'LOGNAME'}\@$ENV{'HOSTNAME'}" ;

my $file = $opt_f;

my $status = 0;

my $problem;

my $output = "ftp ok";

my $ftp = Net::FTP->new("$host") ||

&crit("connect");

$ftp->login("$username", "$pass") ||

&crit("login");

$ftp->get($file) ||

&crit("get") if $file;

sub crit()

{

$problem = $_[0];

$status = 2;

if ( $problem eq 'connect' ) {

$output = "can't connect";

} elsif ( $problem eq 'login' ) {

$output = "can't log in";

} elsif ( $problem eq 'get' ) {

$output = "cant get $file";

}

}

print "$output\n";

exit $status;

************************************************************************

设置成自启动:vi /etc/rc.local //里面添加。

注意:此时负载均衡主服务器已配置完毕,ipvsadm是不用做任何配置的,只需要配置keepalived即可。Keepalived运行在ipvsadm之上,负责将配置加载到ipvsadm。

3.2负载均衡备份服务器配置

3.2.1软件下载

同上

3.2.2软件安装

同上

3.2.3keepalived配置

Keepalived配置文件,与主服务器略有不同,红色部分标识(两处),内容如下:

************************************************************************

! Configuration File for keepalived

global_defs {

router_id LVS_DEVEL

}

vrrp_sync_group VGM {

group {

VI_CACHE

}

}

vrrp_instance VI_CACHE {

state BACKUP

interface eth0

virtual_router_id 51

priority 99

advert_int 1

authentication {

auth_typePASS

auth_pass 1111

}

virtual_ipaddress {

10.99.0.145

}

}

virtual_server 10.99.0.145 21 {

delay_loop 6

lb_algo wlc

lb_kind DR

persistence_timeout 50

protocol TCP

real_server 10.99.0.246 21 {

weight 1

MISC_CHECK {

misc_path "/usr/local/bin/check_ftpget.pl -H 10.99.0.246 -u dx1 -p 111111"

misc_timeout 10

}

}

real_server 10.99.0.247 21 {

weight 1

MISC_CHECK {

misc_path "/usr/local/bin/check_ftpget.pl -H 10.99.0.247 -u dx1 -p 111111"

misc_timeout 10

}

}

}

************************************************************************

同时需要check_ftpget.pl这个文件,内容与主服务器相同。

设置成自启动:vi /etc/rc.local //里面添加。

3.3真实ftp服务器配置

真实ftp服务器不用安装任何软件,有ftp服务即可,只需做如下操作。

编写脚本/etc/rc.d/init.d/lvs_realserver.sh,内容如下:

************************************************************************

#!/bin/bash

#description:start realserver

VIP1=10.99.0.145

/etc/rc.d/init.d/functions

case "$1" in

start)

echo " start LVS of RealServer"

/sbin/ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up

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

;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVS Directorserver"

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 "Usage: $0 {start|stop}"

exit 1

esac

# shell end

************************************************************************‘

将该脚本添加到/etc/rc.d/rc.local以开机自启动

/etc/rc.d/init.d/lvs_realserver.sh start&

负载均衡主服务器、负载均衡备份服务器,在/etc/rc.d/rc.local添加一行,内容为“service keepalived start”。真实ftp服务器,在/etc/rc.d/rc.local添加一行,内容为“/etc/rc.d/init.d/lvs_realserver.sh start&”。当然真实服务器ftp服务必须能自启动,可以在setup中配置。

负载均衡主服务器验证

# ipvsadm显示如下:

spacer.gif

# ip addr显示如下

spacer.gif

负载均衡备份服务器验证

# ipvsadm显示如下:

spacer.gif

# ip addr显示如下

spacer.gif

*****************************************************************************

设置说明:只允许本地用户(dx1、lt1、yd1)登录,权限:只能上传、不能下载、不能删除

*****************************************************************************

具体配置如下,包含vsftpd.conf、chroot_list、user_list、ftpusers四个配置文件

*******************************************************************************

####################################

###vsftpd.conf###

####################################

#/etc/vsftpd/vsftpd.conf

#host

#是否使用服务器本地时间,YES为是

use_localtime=YES

#用户是否有写权限

write_enable=YES

#用户是否可以下载,设置为NO,即限制用户下载

download_enable=NO

dirmessage_enable=YES

#用户可以使用的ftp命令,此处没有DELE,即限制用户删除

cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST

#是否开启上传下载日志

xferlog_enable=YES

#日志文件

xferlog_file=/var/log/vsftpd.log

#data_connection_timeout=60

#idle_session_timeout=600

#服务器最大用户连接数

max_clients=50

#每个ip最大连接数

max_per_ip=5

ascii_upload_enable=NO

ascii_download_enable=NO

connect_from_port_20=YES

pasv_enable=YES

pasv_min_port=65400

pasv_max_port=65420

pam_service_name=vsftpd

tcp_wrappers=YES

listen_port=21

listen=YES

#anonymous

#是否开启匿名用户

anonymous_enable=NO

#real user

#是否开启本地用户

local_enable=YES

#文件上传后的权限 022相当于 -rw-r--r--

local_umask=022

#是否将用户锁定在用户家目录下

chroot_list_enable=YES

#需要锁定家目录的用户列表文件

chroot_list_file=/etc/vsftpd/chroot_list

#是否使用用户限制列表

userlist_deny=YES

#用户限制列表文件

userlist_file=/etc/vsftpd/user_list

#文件传输最大速度

local_max_rate=900000

*******************************************************************************

####################################

###chroot_list###

####################################

#/etc/vsftpd/chroot_list注:需要事先建好以下三个系统用户、并设置好密码(#adduser dx1)

dx1

lt1

yd1

*******************************************************************************

####################################

###user_list###

####################################

#/etc/vsftpd/user_list

#视本地用户目录而定

root

rpc

rpcuser

rpm

sabayon

shutdown

smmsp

squid

sshd

sync

tomcat

uucp

vcsa

webalizer

xfs

yhx

*******************************************************************************

####################################

###ftpusers###

####################################

#/etc/vsftpd/ftpusers

#视本地用户目录而定

root

rpc

rpcuser

rpm

sabayon

shutdown

smmsp

squid

sshd

sync

tomcat

uucp

vcsa

webalizer

xfs

yhx

*******************************************************************************

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值