aroshmbcga 发表于 2016-6-10 09:22:51

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)执行如下命令
  

# 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软链接,具体过程执行以下命令
  

# lsmod |grep ip_vs
# uname -r
(系统显示)2.6.32-358.el6.x86_64
# 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
  

# cd /usr/src
# tar -zxvf ipvsadm-1.26.tar.gz
# cd ipvsadm-1.26
# make
# make install
  
  
  3)验证安装
  

# ipvsadm
显示如下:
***********************************************************************************
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
***********************************************************************************
# lsmod |grep ip_vs
显示如下
***********************************************************************************
ip_vs_rr                14200
ip_vs_wlc               12411
ip_vs               1156435 ip_vs_rr,ip_vs_wlc
libcrc32c               12461 ip_vs
ipv6                  32142220 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
  

# cd /usr/src
# tar -zxvf keepalived-1.2.13.tar.gz
# cd 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
-------------------------------------------------
**************************************************************
# make
# make install
  
  
  3)配置keepalived

# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# 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文件权限(凡是遇到文件权限访问等问题,都需要变更文件权限,如本文没有提到的文件有权限访问问题,请参考这里)

# 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)直接启动:

# service keepalived start

  2)添加开机自动启动
  在/etc/rc.d/rc.local添加一行,内容为“service keepalived start”
  
  6、关闭防火墙或添加防火墙规则(二选一)
  1)关闭防火墙
  重启后生效

# chkconfig iptables off

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

# service iptables stop

  
  2)添加规则

# 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服务允许访问状态

# setsebool allow_ftpd_full_access=1 ftp_home_dir=1

  2、FTP配置
  1)将lvs_realserver.sh上传至FTP服务器/etc/rc.d/init.d
  2)变更权限

# chmod 755 /etc/rc.d/init.d/functions
# chmod 755 /etc/rc.d/init.d/lvs_realserver.sh

  2)启动配置脚本
  马上启动:

# /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服务状态
  在活动负载均衡机器(默认主机)上执行如下命令:

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP173.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、停止负载均衡主机服务

# service keepalived stop   #停止
# service keepalived restart   #重启
# service keepalived start   #开启
# 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
  
页: [1]
查看完整版本: lvs+keepalived+vsftp配置FTP服务器负载均衡