lvs+keepalived+vsftp實現主備負載均衡ftp集羣.txt

lvs+keepalived+vsftp實現主備負載均衡ftp集羣

 

2010-3-17

目錄

lvs+keepalived+vsftp實現主備負載均衡ftp集羣... 1

一、拓撲描述... 3

二、環境說明... 3

三、Lvs+keepalived安裝配置... 3

3.1負載均衡主服務器配置... 3

3.1.1下載軟件... 3

3.1.2軟件安裝... 3

3.1.3 keepalived配置... 5

3.2負載均衡備份服務器配置... 7

3.2.1軟件下載... 7

3.2.2軟件安裝... 7

3.2.3 keepalived配置... 7

3.3真實ftp服務器配置... 9

四、服務啓動... 10

附錄:vsftp配置... 11

一、拓撲描述

*負載均衡主服務器(master10.99.0.245VIP10.99.0.145

*負載均衡備份服務器(backup10.99.0.226VIP10.99.0.145

*真實ftp服務器110.99.0.246

*真實ftp服務器210.99.0.247

二、環境說明

本案例涉及到4臺服務器,操作系統均爲turbolinux11 64位操作系統,內核版本爲2.6.18-53ftp軟件爲vsftp

三、Lvs+keepalived安裝配置

3.1負載均衡主服務器配置

3.1.1下載軟件

需要安裝ipvsadm-1.24.tar.gzkeepalived-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.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.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配置

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

設置說明:只允許本地用戶(dx1lt1yd1)登錄,權限:只能上傳、不能下載、不能刪除

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

具體配置如下,包含vsftpd.confchroot_listuser_listftpusers四個配置文件

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

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

###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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章