您的位置:首页 > 编程语言 > PHP开发

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

2013-06-03 16:54 453 查看
lvs+keepalived+vsftp实现主备负载均衡ftp集群 2010-3-17目录lvs+keepalived+vsftp实现主备负载均衡ftp集群... 1
一、拓扑描述... 3
二、环境说明... 3
三、Lvs+keepalived安装配置... 3
3.1负载均衡主服务器配置... 33.1.1下载软件... 33.1.2软件安装... 33.1.3 keepalived配置... 53.2负载均衡备份服务器配置... 73.2.1软件下载... 73.2.2软件安装... 73.2.3 keepalived配置... 73.3真实ftp服务器配置... 9四、服务启动... 10
附录:vsftp配置... 11

一、拓扑描述


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

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

真实ftp服务器110.99.0.246

真实ftp服务器210.99.0.247

二、环境说明

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

三、Lvs+keepalived安装配置

3.1负载均衡主服务器配置

3.1.1下载软件

需要安装ipvsadm-1.24.tar.gz和keepalived-1.1.19.tar.gz两个软件,下载地址如下:
http://www.linuxvirtualserver.org/software/ipvs.html
http://www.keepalived.org/software/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.19Compiler : gccCompiler flags : -g -O2Extra Lib : -lpopt -lssl -lcrypto Use IPVS Framework : YesIPVS sync daemon support : YesUse VRRP Framework : YesUse LinkWatch : NoUse 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.3 keepalived配置

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 [<-u user> <-p pass> <-f file>]\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.3 keepalived配置

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显示如下:


# ip addr显示如下



负载均衡备份服务器验证# ipvsadm显示如下:


# ip addr显示如下


附录:vsftp配置

*****************************************************************************
设置说明:只允许本地用户(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
*******************************************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lvs