LVS负载均衡集群Word下载.docx
- 文档编号:1465449
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:67
- 大小:60.27KB
LVS负载均衡集群Word下载.docx
《LVS负载均衡集群Word下载.docx》由会员分享,可在线阅读,更多相关《LVS负载均衡集群Word下载.docx(67页珍藏版)》请在冰点文库上搜索。
故障隔离指虚拟服务器中的某个真实服务器(或某几个真实服务器)失效或发生故障,系统
将自动把失效的服务器从转发队列中清理出去,从而保证用户访问的正确性;
另一方面,当
实效的服务器被修复以后,系统再自动地把它加入转发队列。
失败切换,这是针对负载均衡器Director采取的措施,在有两个负载均衡器Director的应用
场景,当主负载均衡器(MASTER)失效或出现故障,备份负载均衡器(BACKUP)将自
动接管主负载均衡器的工作;
一旦主负载均衡器故障修复,两者将恢复到最初的角色。
要从技术上实现虚拟服务器、故障隔离及失败切换3个功能,需要两个工具:
ipvsadm和
keepalived。
当然也有heartbeat这样的工具可以实现同样的功能,但相对于keepalived,
heartbeat的实现要复杂得多(如撰写ipvsadm脚本,部署ldirectord,编写资源文件等)。
在
采用keepalived的方案里,只要ipvsadm被正确的安装,简单的配置唯一的文件keepalived
就行了。
6.1lvs核心ipvs
Ipvs(IPVirtualServer)是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换
就毫无意义了。
在大部分linux发行版中,ipvs被默认安装,而以本书前面介绍的方法定制
安装系统,则ipvs没有被默认安装。
除大部分linux发行版支持ipvs外,FreeBSD也可以支持LVS,只不过实现起来要麻烦一些。
6.1.1安装ipvs
Ipvs具体实现是由ipvsadm这个程序来完成,因此判断一个系统是否具备ipvs功能,只需要
察看ipvsadm程序是否被安装。
察看ipvsadm程序最简单的办法就是在任意路径执行命令
ipvsadm。
执行ipvsadm后的输出
未安装ipvsadm-bash:
ipvsadm:
commandnotfoun
安装ipvsadmIPVirtualServerversion1.2.1(size=4096)
ProtLocalAddress:
PortSchedulerFlags
->
RemoteAddress:
PortForwardWeightActiveConnInActConn
表6-1ipvsadm输出对比(样例来源centos5.2)
●Centos5.2安装ipvsadm(假定当前目录为/root)
1、从官方网站下载ipvsadm,目前最新的版本为ipvsadm-1.25.tar.gz,其发布时间是2008
年11月5日。
Wgethttp:
//www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
取得该版本[1]。
2、创建一个连接文件,其命令为:
ln–sv/usr/src/kernels/2.6.18-92.el5PAE-i686/usr/src/linux.
注意一定要与当前的运行的内核相一致,因为/usr/src/kernels目录下可多个目录。
如果
不创建这个连接文件,在编译时会出错,从而不能继续进行安装。
3、解包。
tarzxvfipvsadm-1.24
4、编译并安装。
cdipvsadm-1.24;
make;
makeinstall可执行文件被安装到/sbin/ipvsadm.
●检验ipvsadm是否被正确安装
1、执行ipvsadm。
2、检查当前加载的内核模块,看是否存在ip_vs模块。
[root@hd-4ipvsadm-1.24]#lsmod|grepip_vs
ip_vs775690
注1、只有执行ipvsadm以后,才会在内核加载ip_vs模块。
注2、不能以查进程的方式判断ipvs是否运行。
注[1]:
如果下载最新的ipvsadm-1.25.tar.gz这个版本,在创建连接文件/usr/src/linux后,执行编译时,可能
需要修改/boot/grub/grub.conf启动内核名称。
一旦当前运行内核与连接文件所代表的内核名不一致时,将出
现找不到*.h这样的错误,从而导致安装不能正常进行。
6.1.2lvs客户端
Lvs的客户端指负载均衡其/转发器(director)后面提供服务的真实机器。
负载均衡类型
(lb_kind)一般分直接路由模式DR、网络地址转换模式NAT以及隧道模式TUN三种。
Lvs客户端的配置是根据其所采用的负载均衡种类(lb_kind)来做相应操作的。
在我们的应用
环境里,为了获得最高的性能,采用的负载均衡种类(lb_kind)是直接路由模式DR。
不管采取哪一种模式,lvs客户端都不需安装额外的软件。
Lvs可支持的客户端包括:
各种GNU/linux、大部分unix已经windows。
目前我已经成功运
行的lvs客户端环境有centos、redhat、freebsd、windows等。
需要注意的是,由于客户端操
作系统的不同,lvs客户端的配置也就各不相同了。
本书中,将以centos及freebsd两种操作
系统作为lvs的客户端,给出其直接路由模式DR的配置方法。
●lvs客户端(真实服务器)操作系统是centos时的配置文件
[root@huludao-2~]#more/usr/local/bin/lvs_real
#!
/bin/bash
#description:
startrealserver
VIP=61.135.20.16
/etc/rc.d/init.d/functions
case"
$1"
in
start)
echo"
startLVSofREALServer"
/sbin/ifconfiglo:
0$VIPbroadcast$VIPnetmask255.255.255.255up
1"
>
/proc/sys/net/ipv4/conf/lo/arp_ignore
2"
/proc/sys/net/ipv4/conf/lo/arp_announce
/proc/sys/net/ipv4/conf/all/arp_ignore
/proc/sys/net/ipv4/conf/all/arp_announce
;
stop)
0down
closeLVSDirectorserver"
0"
*)
Usage:
$0{start|stop}"
exit1
esac
这里对配置文件里重要的一些项进行说明:
1、vip(virtualip)。
直接路由模式的vip必须跟服务器对外提供服务的ip地址在同一个网段,
并且lvs负载均衡器和其他所有提供相同功能的服务器都使用这个vip.
2、vip被绑定在环回接口lo0:
0上,其广播地址是其本身,子网掩码是255.255.255.255。
这
与标准的网络地址设置有很大的不同。
采用这种可变长掩码方式把网段划分成只含一个
主机地址的目的是避免ip地址冲突。
3、echo“1”,echo“2”这段的作用是抑制arp广播。
如果不做arp抑制,将会有众多的机器
向其他宣称:
“嗨!
我是奥巴马,我在这里呢!
”,这样就乱套了。
●lvs客户端(真实服务器)操作系统是freebsd时的配置文件
fav1#more/usr/local/bin/lvs_real_bsd
/usr/local/bin/bash
/sbin/ifconfiglo0$VIPnetmask255.255.255.255alias-arpup
/sbin/ifconfiglo0aliasdown
/sbin/ifconfiglo0127.0.0.1arpup
在这里,我们同样对这个配置脚本的某些项进行说明:
1、vip地址设置和arp抑制用/sbin/ifconfiglo0$VIPnetmask255.255.255.255alias-arpup
这么一行就实现了。
我们把这两种操作系统的lvs客户端做个比较,发现freebsd的配置书写上要简洁一些,是
不是可以认为freebsd的网络功能比linux强大呢?
6.1.3lvs客户端验证
lvs客户端不必依赖负载均衡器就可以独立运行,只不过这种运行对负载均衡没有任何作用,
当然也没有任何副作用,所以我们把lvs客户端配置完成后(配置文件就是一个shell脚本),
可以单独运行它,来检验配置是否正确。
●centos脚本
配置脚本写好保存,给予脚本执行权限。
脚本启停以start和stop这两个参数来控制。
首先,
我们来启动配置脚本,执行命令/usr/local/bin/lvs_realstart,接着我们来检查网络的状态:
[root@huludao-2~]#ipadd
1:
lo:
<
LOOPBACK,UP,LOWER_UP>
mtu16436qdiscnoqueue
link/loopback00:
00:
00brd00:
00
inet127.0.0.1/8scopehostlo
inet61.135.20.16/32brd61.135.20.16scopegloballo:
inet6:
:
1/128scopehost
valid_lftforeverpreferred_lftforever
2:
eth0:
BROADCAST,MULTICAST,UP,LOWER_UP>
mtu1500qdiscpfifo_fast
qlen100
link/ether00:
15:
17:
60:
21:
a0brdff:
ff:
ff
inet61.135.20.101/24brd125.38.38.255scopeglobaleth0
inet6fe80:
215:
17ff:
fe60:
21a0/64scopelink
3:
eth1:
BROADCAST,MULTICAST>
mtu1500qdiscnoopqlen1000
a1brdff:
4:
sit0:
NOARP>
mtu1480qdiscnoop
link/sit0.0.0.0brd0.0.0.0
从输出可以看出,lo0:
0确实绑定了我们指定的vip地址。
那么当我们执行
/usr/local/bin/lvs_real时,vip应当从lo0:
0接口卸载。
我们来看看输出是什么:
[root@huludao-2~]#lvs_realstop
closeLVSDirectorserver
inet125.38.38.101/28brd125.38.38.111scopeglobaleth0
噢,上帝!
正是我们所期待的结果:
vip从lo上消失了。
●freebsd脚本/usr/local/bin/lvs_real_bsd
启停所使用的方法和参数与centos那个配置脚本是一样的,但察看方法有所不同(freebsd
无ipadd工具)。
这里使用的方法是ifconfig,启动时输出如下:
fav1#ifconfig
em0:
flags=8843<
UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>
metric0mtu1500
options=19b<
RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,
TSO4>
ether00:
6e:
c8:
46
inet61.135.20.69netmask0xffffffc0broadcast61.128.20.127
media:
Ethernetautoselect(100baseTX<
full-duplex>
)
status:
active
lo0:
flags=80c9<
UP,LOOPBACK,RUNNING,NOARP,MULTICAST>
metric0mtu16384
1%lo0prefixlen64scopeid0x3
1prefixlen128
inet127.0.0.1netmask0xff000000
inet61.135.20.16netmask0xffffffff
当执行/usr/local/bin/lvs_real_bsdstop时,vip被卸载。
有时可能卸载不成功,可能需要多执
行几次停止命令。
●arp抑制验证
如果不配置负载均衡器的转发功能,那么在这个步骤所设置的vip将不会提供任何ip功能,
除了能用ifconfig输出显示而外。
在没有配置或开启lvs负载均衡器的情况下,我们用其他机器pingvip,应该是不通的。
当然
在网络前面启用了防火墙阻止ping不算。
为了不影响测试,最好把你的防火墙打开。
Arp抑制生效后,再也没有机器知道vip的存在,这是一个问题,谁来响应vip请求?
这个
问题交给负载均衡器吧,它知道这背后的一切。
6.2故障隔离、失败切换框架keepalived
Keepalived是运行在lvs之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失
败切换FailOver.lvs结合keepalived,就实现了3层、4层、5/7层交换的功能,下面摘录来
自官方网站www.keepalived.org的一段描述:
Themaingoalofthekeepalivedprojectistoaddastrong&
robustkeepalivefacilitytotheLinux
VirtualServerproject.ThisprojectiswritteninCwithmultilayerTCP/IPstackchecks.
Keepalivedimplementsaframeworkbasedonthreefamilychecks:
Layer3,Layer4&
Layer5/7.
ThisframeworkgivesthedaemontheabilityofcheckingaLVSserverpoolstates.Whenoneof
theserveroftheLVSserverpoolisdown,keepalivedinformsthelinuxkernelviaasetsockopt
calltoremovethisserverentriefromtheLVStopology.Inadditionkeepalivedimplementsan
independentVRRPv2stacktohandledirectorfailover.Soinshortkeepalivedisauserspace
daemonforLVSclusternodeshealthchecksandLVSdirectorsfailover.
从这段描述中,我们可以得到几个有用的信息:
1、keepalived是lvs的扩展项目,因此它们之间具备良好的兼容性。
这点应该是keepalived
部署比其他类似工具能更简洁的原因吧!
2、通过对服务器池对象的健康检查,实现对失效机器/服务的故障隔离。
3、负载均衡器之间的失败切换failover,是通过VRRPv2(
VirtualRouterRedundancyProtocol)
stack实现的。
6.2.1keepalived体系结构
Keepalived大致分两层结构:
用户空间userspace和内核空间kernelspace.图6-2是来自官
方站点(http:
//www.keepalived.org/software_design.html)关于其结构的展示。
图6-2keepalived内部结构图
在这个结构图里,处于下端的是内核空间,它包括ipvs和NETLINK两个部分。
Ipvs的作用
在前面的章节已经做过描述,不再重复叙述;
netlink提供高级路由及其他相关的网络功能,
如果我们在负载均衡器上启用netfilter/iptable,将会直接影响它的性能。
出于图形上方的组件
为用户空间,由它来实现具体的功能,下面选取几个重要的来做说明:
1、WatchDog负责监控checkers和VRRP进程的状况。
2、Checkers负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。
换
句话说—可以没有VRRPStack,但健康检查healthchecking是一定要有的。
3、_______VRRPStack负责负载均衡器之间的失败切换FailOver.如果只用一个负载均衡器,则
VRRP不是必须的。
4、IPVSwrapper用来发送设定的规则到内核ipvs代码。
5、NetlinkReflector用来设定vrrp的vip地址等。
Keepalived各种功能的实现是通过设置其配置文件keepalived.conf来完成的,关于配置文件
各项的用途,将在后面的章节进行描述。
6.2.2安装keepalived
安装keepalived非常的简单和容易,这跟安装其他GNU源码软件步骤是以模一样的。
下面
给出其安装过程。
1、下载最新稳定版wgethttp:
//www.keepalived.org/software/keepalived-1.1.17.tar.gz
2、解包tarzxvfkeepalived-1.1.17.tar.gz
3、切换目录cdkeepalived-1.1.17
4、配置./configure–prefix=/usr/local/keepalive因为keepalived运行在ipvs之上,因此这两
个软件一定要安装在一个系统里面。
如果configure操作能正常进行,运行完毕后将有如
下的汇总输出:
Keepalivedconfiguration
------------------------
Keepalivedversion:
1.1.17
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LVS 负载 均衡 集群