`

lvs+keepalived+vsftp配置FTP服务器负载均衡

 
阅读更多

 

STEP 1 准备机器和环境

 

准备4台机器,这里以152-155四台机器为例(CENTOS 6.4)

 

173.1.3.152 (keepalived负载均衡 主机 MASTER)
173.1.3.153 (keepalived负载均衡 备机 BACKUP)
173.1.3.154 (FTP服务器1)
173.1.3.155 (FTP服务器2)

 

 

 

 

 

STEP 2 负载均衡主机安装

1、环境准备

1)执行如下命令

 

[root@CentOS-6 ~]# yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static

 

 

(

说明:

如果不能yum 请先查看各软件是否已安装,查看方式为

 

rpm -qa|grep XXX(XXX = wget|make|kernel-devel|gcc|gcc-c++|libnl*|libpopt*|popt-static)

 

 

没有安装的请一一下载安装,安装方法在此不再赘述

)

2)查看内核版本,创建LN软链接,具体过程执行以下命令

 

[root@CentOS-6 ~]# lsmod |grep ip_vs
[root@CentOS-6 ~]# uname -r
(系统显示)2.6.32-358.el6.x86_64
[root@CentOS-6 ~]# ln -s /usr/src/kernels/2.6.32-358.e16.x86_64/ /usr/src/linux

 

 

 

2、安装ipvsadm-1.26.tar.gz

1)先将该文件通过SFTP上传至/usr/src

2)安装ipvsadm-1.26

 

[root@CentOS-6 ~]# cd /usr/src
[root@CentOS-6 src]# tar -zxvf ipvsadm-1.26.tar.gz
[root@CentOS-6 src]# cd ipvsadm-1.26
[root@CentOS-6 ipvsadm-1.26]# make
[root@CentOS-6 ipvsadm-1.26]# make install

 

 

3)验证安装

 

[root@CentOS-6 ~]# ipvsadm
显示如下:
***********************************************************************************
		IP Virtual Server version 1.2.1 (size=4096)
		Prot LocalAddress:Port Scheduler Flags
		  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
***********************************************************************************
[root@CentOS-6 ~]# lsmod |grep ip_vs
显示如下
***********************************************************************************
		ip_vs_rr                1420  0 
		ip_vs_wlc               1241  1 
		ip_vs                 115643  5 ip_vs_rr,ip_vs_wlc
		libcrc32c               1246  1 ip_vs
		ipv6                  321422  20 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
***********************************************************************************

 

 

 

3、安装keepalived-1.2.13.tar.gz

1)先将该文件通过SFTP上传至/usr/src

2)安装及验证keepalived-1.2.13

 

		[root@CentOS-6 ~]# cd /usr/src
		[root@CentOS-6 src]# tar -zxvf keepalived-1.2.13.tar.gz
		[root@CentOS-6 src]# cd keepalived-1.2.13
		[root@CentOS-6 keepalived-1.2.13]# ./configure 
		注:./configure 不指定 --prefix=时,则默认安装至/usr/local
		注意,出现如下显示,则表示配置成功,标★的三行必须为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
		-------------------------------------------------
		**************************************************************
		[root@CentOS-6 keepalived-1.2.13]# make
		[root@CentOS-6 keepalived-1.2.13]# make install

 

 

3)配置keepalived

		[root@CentOS-6 keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
		[root@CentOS-6 keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
		[root@CentOS-6 keepalived-1.2.13]# mkdir /etc/keepalived
		[root@CentOS-6 keepalived-1.2.13]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
		[root@CentOS-6 keepalived-1.2.13]# cp /usr/local/sbin/keepalived /usr/sbin

 

注:./configure 如果指定了 --prefix=XXX时,以上命令改为cp XXXX /***/***

 

4、配置keepalived.conf

1)将keepalived.conf通过SFTP上传至/etc/keepalived

 将check_ftpget.pl上传至/usr/local/bin

2)变更check_ftpget.pl文件权限(凡是遇到文件权限访问等问题,都需要变更文件权限,如本文没有提到的文件有权限访问问题,请参考这里)

		[root@CentOS-6 ~]# chmod 755 /usr/local/bin/check_ftpget.pl

 

3)keepalived.conf文件在这个安装手册上已经配置好了,不需要变动,但实际生产环境中可能由于IP地址不一样,需要变更一些配置。

以下我就这些配置跟大家做个说明

	! Configuration File for keepalived 
	global_defs { #全局配置
		notification_email {
			xxxxxx@sina.com   #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
		}
		notification_email_from keepalived@localhost  #设置邮件的发送地址
		smtp_server 127.0.0.1                         #设置SMTP Server地址
		smtp_connect_timeout 30                       #设置SMTP Server的超时时间
		router_id LVS_DEVEL          #表示运行Keepalived服务器的一个标识。发邮件时显示大邮件主题中的信息
	}  
	
	vrrp_sync_group VGM { #VRRP同步组设置:设置同步组可支持MASTER和BACKUP机器分别存在于内外网
			 group {
				VI_CACHE         #VRRP实例定义
			} 
	}  
	vrrp_instance VI_CACHE {	#VRRP实例配置
		 state MASTER     		#指定Keepalived的角色,MASTER表示些主机是主服务器。BACKUP表示此主机是备用服务器 
		 interface eth2			#指定HA监测网络的接口(查看网络接口用命令ip addr)
		 virtual_router_id 51	#虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下MASTER与BACKUP必须是一致的
		 priority 100			#定义优先级,数字越大,优先级越高,一般主机高于备机
		 advert_int 1			#检查间隔,默认1秒
		 authentication {		#设置认证
		  auth_type PASS		#认证方式,支持PASS和AH
		  auth_pass 1111		#认证的密码
		 } 
		virtual_ipaddress {		#设置漂移地址(虚拟IP地址),可以设置多个漂移地址,每行一个
			 173.1.3.156    
		} 
	} 
	 
	virtual_server 173.1.3.156 21 {	#设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开
		 delay_loop 6				#设置运行情况检查时间,单位为秒
		 lb_algo wlc				#设置负载调度算法,这里设置rr,即轮询算法
		 lb_kind DR					#设置LVS实现负载均衡机制,有NAT、TUN、DR三个模式可选(简单说NAT支持任意OS但只支持20个负载,TUN只支持LINUX,DR支持LINUX/WINDOWS等,但只支持同一网段)
		 persistence_timeout 50		#会话保持单位时间,单位是秒
		 protocol TCP				#指定转发协议类型,有TCP和UDP两种 
	 
			real_server 173.1.3.154 21 {#配置服务节点1,需要指定real server的真实IP地址和端口
				weight 1				#配置服务节点的权值,权值数字越大,权值越高
				MISC_CHECK {			#MISC健康检查方式,执行一个程序
					misc_path "/usr/local/bin/check_ftpget.pl -H 173.1.3.154 -u admin -p 123457"	#待执行的脚本
					misc_timeout 10		#脚本执行的超时时间
				}
			} 
			real_server 173.1.3.155 21 {#配置服务节点2,说明参考1,略
				weight 1
				MISC_CHECK { 
						misc_path "/usr/local/bin/check_ftpget.pl -H 173.1.3.155 -u admin -p 123457"
						 misc_timeout 10
				 }     
			} 
	}

 

 

5、启动keepalived

1)直接启动:

		[root@CentOS-6 ~]# service keepalived start

  2)添加开机自动启动

在/etc/rc.d/rc.local添加一行,内容为“service keepalived start”

 

6、关闭防火墙或添加防火墙规则(二选一)

1)关闭防火墙

重启后生效

		[root@CentOS-6 ~]# chkconfig iptables off

  即时生效,重启后失效service 方式

		[root@CentOS-6 ~]# service iptables stop

 

2)添加规则

		[root@CentOS-6 ~]# vi /etc/sysconfig/iptables 
			-A INPUT -m state -–state NEW -m tcp -p tcp –-dport 20 -j ACCEPT
			-A INPUT -m state -–state NEW -m tcp -p tcp –-dport 21 -j ACCEPT
			-A INPUT -m state -–state NEW -m tcp -p tcp –-dport 1024: -j ACCEPT

  {注:20&21开放端口是主动方式,其中21是FTP连接TCP端口,20是数据传输接口

1024:&21开放端口是被动方式,其中21是FTP连接TCP端口,1024:

(表示1024-正无穷,为啥呢,因为FTP服务会随机开1024以上的端口作数据传输,所以此次:不可少)是数据传输接口}

 

 

 

STEP 3 负载均衡备机安装

1、环境准备

参考主机

 

2、安装ipvsadm-1.26.tar.gz

参考主机

 

3、安装keepalived-1.2.13.tar.gz

参考主机

 

4、配置keepalived.conf

1)将keepalived_bak.conf通过SFTP上传至/etc/keepalived,并改名为keepalived.conf

 将check_ftpget.pl上传至/usr/local/bin

其他步骤参考主机,备机注意keepalived.conf配置有两个地方和主机不同

state BACKUP

priority 99

 

5、启动keepalived

参考主机

 

6、关闭防火墙或添加防火墙规则(二选一)

参考主机

 

 

 

 

STEP 4 FTP服务器配置

1、环境准备

假设你已经安装了VSFTPD,此文中VSFTPD不是重点,安装方法在此不再赘述

FTP服务器需要注意安装过程中,需要对执行以下命令开启FTP服务允许访问状态

	[root@CentOS-6 ~]# setsebool allow_ftpd_full_access=1 ftp_home_dir=1

 2、FTP配置

1)将lvs_realserver.sh上传至FTP服务器/etc/rc.d/init.d

2)变更权限

		[root@CentOS-6 ~]# chmod 755 /etc/rc.d/init.d/functions
		[root@CentOS-6 ~]# chmod 755 /etc/rc.d/init.d/lvs_realserver.sh

  2)启动配置脚本

马上启动:

			[root@CentOS-6 ~]# /etc/rc.d/init.d/lvs_realserver.sh start

  开机自启动(后台方式):

在/etc/rc.d/rc.local中添加一行:

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

 

 

 

STEP 5 测试

1、可以通过FTP客户端,直接连接173.1.3.156虚拟FTP服务

	IP:173.1.3.156
	PORT:21
	USER:admin
	PASS:123457

 

2、查看虚拟IP服务状态

在活动负载均衡机器(默认主机)上执行如下命令:

	[root@CentOS-6 ~]# ipvsadm
		IP Virtual Server version 1.2.1 (size=4096)
		Prot LocalAddress:Port Scheduler Flags
			-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
		TCP  173.1.3.156:ftp wlc persistent 50
			-> 173.1.3.154:ftp              Route   1      1          0         
			-> 173.1.3.155:ftp              Route   1      3          0   

 

3、停止负载均衡主机服务

	[root@CentOS-6 ~]# service keepalived stop   	#停止
	[root@CentOS-6 ~]# service keepalived restart   #重启
	[root@CentOS-6 ~]# service keepalived start   	#开启
	[root@CentOS-6 ~]# service keepalived status   	#查看状态

  停止负载均衡主机,系统会自动唤醒备机,无需手工切换,自动化无人植守配置。切换时间目前配置的是1秒,但切换可能需要1-20秒不等的时间

主机恢复后,备机将自动进入休眠状态,如此反复。

 

4、停止负载均衡备机服务

命令参考上一条,对备机作任何变更,在主机存活期间无任何影响,但如果主机服务宕机,则会有影响,将导致虚拟FTP不可用。

 

5、停止FTP真机服务

停止任意一台真机服务,不会影响虚拟FTP服务,虚拟FTP服务会自动连上可以提供服务的FTP服务器,如果所有的FTP真机服务都宕机了,则虚拟FTP也将无法访问。

当真机FTP服务恢复正常后,虚拟FTP将自动添加真机服务至虚拟队列中,无人值守。

 

6、清除和手工添加一些虚拟IP规则

	ipvsadm -C	#清除
	ipvsadm -A -t 173.1.3.156:21 -s wlc #添加虚拟IP TCP协议 
	ipvsadm -a -t 173.1.3.156:21 -r 173.1.3.154 -g -w 1  #添加虚拟IP TCP协议真机 
	ipvsadm -a -t 173.1.3.156:21 -r 173.1.3.155 -g -w 1  #添加虚拟IP TCP协议真机

  其他规则参考网络上ipvsadm命令用法

 

 

 

附录

安装手册:

安装手册.txt

 

安装时需要的文件:

check_ftpget.pl #检查FTP服务是否正常的程序
ipvsadm-1.26.tar.gz #ipvsadm安装包
keepalived-1.2.13.tar.gz #keepalived安装包
keepalived.conf #keepalived主机配置参考文件
keepalived_bak.conf #keepalived备机配置参考文件
lvs_realserver.sh #FTP真机服务器连接虚拟FTP地址的程序
vsftpd.conf #FTP服务的配置

 

供大家学习及参考的文档:

Keepalived权威指南.pdf
lvs+keepalived+vsftp实现主备负载均衡ftp集群.txt.doc

 

分享到:
评论
3 楼 0筱蔡0 2016-07-13  
你好   我想问下:
   看您的文档  我把服务搭了起来 ,但是  在内网测试的时候  用vip  来连接ftp  是可以做到集群的,,, 但是我ftp映射到外网的时候 , lvs  的策略就好像没有效果了 ,只会在一台ftp上  不会做到负载均衡  ,有什么办法可以解决吗?
2 楼 laputa73 2016-03-23  
ftp集群的问题是,各个服务器之间是否要实现文件同步?
服务虽然是HA了,但是realserver上的内容挂了就没了。。。
1 楼 xuhang1458 2015-10-20  
测试FTP健康的脚本单独运行怎么运行不了,语法错误?在第15行的my 附近。我找了好久,卡了我很长时间。望大神解救

相关推荐

Global site tag (gtag.js) - Google Analytics