LVS负载均衡集群.docx

上传人:b****2 文档编号:1246542 上传时间:2023-04-30 格式:DOCX 页数:67 大小:60.27KB
下载 相关 举报
LVS负载均衡集群.docx_第1页
第1页 / 共67页
LVS负载均衡集群.docx_第2页
第2页 / 共67页
LVS负载均衡集群.docx_第3页
第3页 / 共67页
LVS负载均衡集群.docx_第4页
第4页 / 共67页
LVS负载均衡集群.docx_第5页
第5页 / 共67页
LVS负载均衡集群.docx_第6页
第6页 / 共67页
LVS负载均衡集群.docx_第7页
第7页 / 共67页
LVS负载均衡集群.docx_第8页
第8页 / 共67页
LVS负载均衡集群.docx_第9页
第9页 / 共67页
LVS负载均衡集群.docx_第10页
第10页 / 共67页
LVS负载均衡集群.docx_第11页
第11页 / 共67页
LVS负载均衡集群.docx_第12页
第12页 / 共67页
LVS负载均衡集群.docx_第13页
第13页 / 共67页
LVS负载均衡集群.docx_第14页
第14页 / 共67页
LVS负载均衡集群.docx_第15页
第15页 / 共67页
LVS负载均衡集群.docx_第16页
第16页 / 共67页
LVS负载均衡集群.docx_第17页
第17页 / 共67页
LVS负载均衡集群.docx_第18页
第18页 / 共67页
LVS负载均衡集群.docx_第19页
第19页 / 共67页
LVS负载均衡集群.docx_第20页
第20页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

LVS负载均衡集群.docx

《LVS负载均衡集群.docx》由会员分享,可在线阅读,更多相关《LVS负载均衡集群.docx(67页珍藏版)》请在冰点文库上搜索。

LVS负载均衡集群.docx

LVS负载均衡集群

负载均衡及服务器集群(lvs)

作者:

田逸

在互连网应用技术里,负载均衡一直是热门话题,本书讨论的负载均衡技术,包括但不限于负

载均衡本身。

使用负载均衡技术主要的目的包括如下几点:

◆系统高可用性。

组成系统的某些设备或部件失效,并不会影响正常的服务。

◆系统可扩展性。

用户的增加,引起访问数乃至流量的增加,这种情形下,需要对系统进

行扩容,以应对这种快速增长。

对于提供高可用服务的互联网网站,其对可扩展的基本

要求就是在保持系统服务不终止的情况下,透明的扩充容量,即用户不知道扩容的存在,

或者说是扩容不对现有的服务产生任何负面作用。

这些扩展主要包括:

带宽扩展、服务

器扩展、存储容量扩展、数据库扩展等,当然也包括主机增加内存等方面的扩展。

◆负载均衡能力。

一个应用或服务由数个物理服务器提供,并且每个物理服务器运行的应用

或服务是相同的,我们可以让用户的访问通过某种控制策略,把负载分摊到不同的物理服

务器,从而保持每个物理服务器有比较合理的负载。

当整个系统的负载趋于饱和时,通过

增加物理服务器和扩充物理带宽来解决这个麻烦。

增加物理服务器以后,系统的负载情

况将重新在所有集群的物理服务器之间按照指定的算法重新达到新的均衡。

一个完整的负载均衡项目,一般由虚拟服务器、故障隔离及失败切换3个功能框架所组成。

虚拟服务器是负载均衡体系的基本架构,它分两层结构:

转发器(Director)和真实服务器。

为什么称虚拟服务器?

因为从用户的角度看来,似乎只是一个服务器在提供服务。

虚拟服务

器最主要的功能是提供包转发和负载均衡,这个功能可以通过撰写ipvsadm脚本具体实现。

虚拟服务器项目由章文嵩博士所贡献,目前已被添加到各种linux发行版的内核。

故障隔离指虚拟服务器中的某个真实服务器(或某几个真实服务器)失效或发生故障,系统

将自动把失效的服务器从转发队列中清理出去,从而保证用户访问的正确性;另一方面,当

实效的服务器被修复以后,系统再自动地把它加入转发队列。

失败切换,这是针对负载均衡器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

echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce

echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo"2">/proc/sys/net/ipv4/conf/all/arp_announce

;;

stop)

/sbin/ifconfiglo:

0down

echo"closeLVSDirectorserver"

echo"0">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo"0">/proc/sys/net/ipv4/conf/lo/arp_announce

echo"0">/proc/sys/net/ipv4/conf/all/arp_ignore

echo"0">/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo"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

#description:

startrealserver

VIP=61.135.20.16

case"$1"in

start)

echo"startLVSofREALServer"

/sbin/ifconfiglo0$VIPnetmask255.255.255.255alias-arpup

;;

stop)

/sbin/ifconfiglo0aliasdown

echo"closeLVSDirectorserver"

/sbin/ifconfiglo0127.0.0.1arpup

;;

*)

echo"Usage:

$0{start|stop}"

exit1

esac

在这里,我们同样对这个配置脚本的某些项进行说明:

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:

mtu16436qdiscnoqueue

link/loopback00:

00:

00:

00:

00:

00brd00:

00:

00:

00:

00:

00

inet127.0.0.1/8scopehostlo

inet61.135.20.16/32brd61.135.20.16scopegloballo:

0

inet6:

:

1/128scopehost

valid_lftforeverpreferred_lftforever

2:

eth0:

mtu1500qdiscpfifo_fast

qlen100

link/ether00:

15:

17:

60:

21:

a0brdff:

ff:

ff:

ff:

ff:

ff

inet61.135.20.101/24brd125.38.38.255scopeglobaleth0

inet6fe80:

:

215:

17ff:

fe60:

21a0/64scopelink

valid_lftforeverpreferred_lftforever

3:

eth1:

mtu1500qdiscnoopqlen1000

link/ether00:

15:

17:

60:

21:

a1brdff:

ff:

ff:

ff:

ff:

ff

4:

sit0:

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

[root@huludao-2~]#ipadd

1:

lo:

mtu16436qdiscnoqueue

link/loopback00:

00:

00:

00:

00:

00brd00:

00:

00:

00:

00:

00

inet127.0.0.1/8scopehostlo

inet6:

:

1/128scopehost

valid_lftforeverpreferred_lftforever

2:

eth0:

mtu1500qdiscpfifo_fast

qlen100

link/ether00:

15:

17:

60:

21:

a0brdff:

ff:

ff:

ff:

ff:

ff

inet125.38.38.101/28brd125.38.38.111scopeglobaleth0

inet6fe80:

:

215:

17ff:

fe60:

21a0/64scopelink

valid_lftforeverpreferred_lftforever

3:

eth1:

mtu1500qdiscnoopqlen1000

link/ether00:

15:

17:

60:

21:

a1brdff:

ff:

ff:

ff:

ff:

ff

4:

sit0:

mtu1480qdiscnoop

link/sit0.0.0.0brd0.0.0.0

噢,上帝!

正是我们所期待的结果:

vip从lo上消失了。

●freebsd脚本/usr/local/bin/lvs_real_bsd

启停所使用的方法和参数与centos那个配置脚本是一样的,但察看方法有所不同(freebsd

无ipadd工具)。

这里使用的方法是ifconfig,启动时输出如下:

fav1#ifconfig

em0:

flags=8843metric0mtu1500

options=19b

TSO4>

ether00:

15:

17:

6e:

c8:

46

inet61.135.20.69netmask0xffffffc0broadcast61.128.20.127

media:

Ethernetautoselect(100baseTX

status:

active

lo0:

flags=80c9metric0mtu16384

inet6fe80:

:

1%lo0prefixlen64scopeid0x3

inet6:

:

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2