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 { [email protected] #设置报警邮件地址,可以设置多个,每行一个。需要开启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