设为首页 收藏本站
查看: 2744|回复: 0

[经验分享] lvs+keepalived+vsftp配置FTP服务器负载均衡

[复制链接]

尚未签到

发表于 2016-6-10 09:22:51 | 显示全部楼层 |阅读模式
  
  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)执行如下命令
  

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

[iyunv@CentOS-6 ~]# lsmod |grep ip_vs
[iyunv@CentOS-6 ~]# uname -r
(系统显示)2.6.32-358.el6.x86_64
[iyunv@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
  

[iyunv@CentOS-6 ~]# cd /usr/src
[iyunv@CentOS-6 src]# tar -zxvf ipvsadm-1.26.tar.gz
[iyunv@CentOS-6 src]# cd ipvsadm-1.26
[iyunv@CentOS-6 ipvsadm-1.26]# make
[iyunv@CentOS-6 ipvsadm-1.26]# make install
  
  
  3)验证安装
  

[iyunv@CentOS-6 ~]# ipvsadm
显示如下:
***********************************************************************************
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
***********************************************************************************
[iyunv@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
  

[iyunv@CentOS-6 ~]# cd /usr/src
[iyunv@CentOS-6 src]# tar -zxvf keepalived-1.2.13.tar.gz
[iyunv@CentOS-6 src]# cd keepalived-1.2.13
[iyunv@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
-------------------------------------------------
**************************************************************
[iyunv@CentOS-6 keepalived-1.2.13]# make
[iyunv@CentOS-6 keepalived-1.2.13]# make install
  
  
  3)配置keepalived

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

[iyunv@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)直接启动:

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

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

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

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

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

  
  2)添加规则

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

[iyunv@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)变更权限

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

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

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

[iyunv@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、停止负载均衡主机服务

[iyunv@CentOS-6 ~]# service keepalived stop   #停止
[iyunv@CentOS-6 ~]# service keepalived restart   #重启
[iyunv@CentOS-6 ~]# service keepalived start   #开启
[iyunv@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
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228493-1-1.html 上篇帖子: 基于Ftp/Sftp协议的文件服务器数据传输 下篇帖子: 使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表