LVS和Heartbeat的安装配置说明Word格式文档下载.docx

上传人:b****1 文档编号:3672311 上传时间:2023-05-02 格式:DOCX 页数:16 大小:24.98KB
下载 相关 举报
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第1页
第1页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第2页
第2页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第3页
第3页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第4页
第4页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第5页
第5页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第6页
第6页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第7页
第7页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第8页
第8页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第9页
第9页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第10页
第10页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第11页
第11页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第12页
第12页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第13页
第13页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第14页
第14页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第15页
第15页 / 共16页
LVS和Heartbeat的安装配置说明Word格式文档下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LVS和Heartbeat的安装配置说明Word格式文档下载.docx

《LVS和Heartbeat的安装配置说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LVS和Heartbeat的安装配置说明Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。

LVS和Heartbeat的安装配置说明Word格式文档下载.docx

所以,在REALSERVER的内核中,必须编译支持IPTUNNEL这个选项。

IPTUNNEL也在Networkingoptions里面,如下图所示。

1.2.3.直接路由模式

直接路由模式比较特别,很难说和什么方面相似,前2种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)。

其原理为,DR和REALSERVER都使用同一个IP对外服务。

但只有DR对ARP请求进行响应,所有REALSERVER对本身这个IP的ARP请求保持静默。

也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的REALSERVER,把目的MAC地址改为REALSERVER的MAC并发给这台REALSERVER。

这时REALSERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。

由于DR要对二层包头进行改换,所以DR和REALSERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。

1.3.LVS的安装和配置

LVS的安装在其官方网站上有详细的说明文档。

网址是:

不过一般说来以下网址

1.3.1.让DR内核支持IPVS

2.6及以上内核中已经支持了IPVS功能。

至于2.4的内核则看版本,2.4.23及以上的内核已经有了ipvs,所以不必且不能打包,如果打了就会编译出错。

对于2.4.23以下内核则必须打IPVS补丁。

2.4.23/24的内核有问题,所以不建议使用这两种内核。

IPVS只对DR需要,而RS则不需要。

Ipvs补丁和ipvsadm的下载地址:

http:

//www.linuxvirtualserver.org/software/ipvs.html.

1.3.1.1.打补丁来支持ipvs

对于2.4.23以下内核需要这个步骤,否则请按1.3.1.2步骤。

到http:

//www.linuxvirtualserver.org/software/ipvs.html下载对应的补丁。

假设你使用的内核是2.4.18,那么下载Version1.0.10,包为ipvs-1.0.10.tar.gz。

解包后阅读README文件,按中其中的方法打包。

不过我对这里的说明有点不明白。

下面我说说我的方法:

cd<

ipvs的解压目录>

makepatchkernel

makeinstallsource

或者

cd/usr/src/linux

cp<

/linux_kernel_ksyms_c.diff./

/linux_net_netsyms_c.diff./

patch–p1<

linux_kernel_ksyms_c.diff

linux_net_netsyms_c.diff

然后cd/usr/src/linux

makedep;

makebzImage;

接着重新copy新的内核文件,然后lilo,然后reboot

1.3.1.2.重新配置内核选项来支持IPVS

对于2.4.23及以上的内核已经有了ipvs,所以你可以直接在内核中配置来支持IPVS。

makemenuconfig

对于不同版本的内核来说,各个配置项的路径是不一致的。

对于2.6.8.1菜单路径是:

DeviceDrivers->

Networkingsupport->

Networkingoptions->

IP:

VirtualServerConfiguration。

而在2.4.30的内核中Networkingoptions就在第一层路径下面。

请到目的菜单Networkingoptions下面,如下图所示:

如果你需要IPVS支持IP隧道模式,那么请选择下面这两个选项:

然后再选择:

VirtualServerConfiguration这个选项。

这时出现下图:

请选中所有的选项。

要关注的是IPVSconnectiontablesize,这个东西意思是每个连接的hashtable的大小,大家知道通常hash表越大,一次命中的机会越大。

这里取值范围是2-20,2的2次方到2的20次方。

有的资料建议用20,个人认为默认值就足够了。

由于每个连接需要128BYTE,每个HASH位需要8BYTE,所以(128+8)*2^20=128M+8M=136M,对于我们的系统没问题。

最后的是IPVSapplicationhelper,这种是专门针对多次连接的情况的(可以理解为session),大家都知道一次FTP通讯需要2次连接,所以必须保证这两次都在一台服务器上,否则将连接失败。

这是个明显针对协议,或者说针对应用层的分类。

有点七层交换的味道,希望这个功能尽快把HTTP的SESSION给加上,到时就不用使用后台同步SESSION或者对原地址做HASH定向处理了。

这里负载调度算法的意思请具体参考:

//www.linuxvirtualserver.org/zh/lvs4.html

接着重新copy新的内核文件,然后lilo,然后reboot。

启动时可以看到ipvs提示信息。

1.3.2.RS的NOARP问题解决

直接路由模式肯定要处理NOARP的问题,官方文档《LVS-mini-HOWTO》3.7节指出在如下情况下必须处理:

IF((youareusingLVS-DRorLVS-Tunonthedirector)

AND

(youarerunningaLinux2.2.x,2.4.x,2.6.xkernelonarealserver)

theVIPontherealserverisonanethernetdeviceeglo:

0,tunl0:

i.e.packetstotheVIParenotbeingacceptedbytransparentproxy

therealserverscananswerarprequestsfrom

theclient/router(therealserversareonthesame

pieceofwire|network|segmentasthedirector)

))

THEN{YOUMUSTHANDLETHEARPPROBLEM}

FI

对于这断话的,我不太理解。

下面引用其它的文档说明。

在使用LVS中的DR与IPTunnel的时候,会需要有一块网络卡要设定两个IP的情形,但是Linux在2.2.14之后,就将eth0:

1的-NOARP这个FLAG关闭。

也就是说在kernel2.2.14以后,eth0:

1就视为eth0的别名,任何对eth0:

1的设定也同样作用在eth0,换句话说,我对eth0:

1下-NOARP,同样也会对eth0有作用,这样会使得整张网络卡收不到封包。

在直接路由、IP隧道模式下,因为我所有的机器都放在同一个网段,当该网段的Router接收到客户端(Client)对虚拟IP(VirtualIP)的TCPconnection要求时,会先在网段中利用Arprequest询问谁有VIP的地址,而包含Director与RealServers上所有的interface(不管Primary还是Subinterface),只要他有那个ip,都会发送arpreply回去,造成网段内所有拥有VirtualIP的interface都会reply给Router,最后结果就是看谁的速度快,Router就将该封包送给谁,如此会造成LVS的Server并无法发挥其效果,因此需要利用hidden这个pattch,将Subinterface上的VirtualIP给隐藏起来,如此他就不会对ArpRequest进行Reply,如此就可以解决ARP的问题,而这个NOARP的问题,kernel发展小组认为不重要,所以以后都不会修改,要用请自行编译。

所以从http:

//www.ssi.bg/~ja/#hidden下载对应的补丁,对于2.6.8.1的内核我选择hidden-2.6.4-1.diff。

cphidden-2.6.4-1.diff/usr/src/linux

hidden-2.6.4-1.diff

makebzImage;

copy新的内核文件到相应的启动目录。

再lilo。

最后reboot。

当然解决noarp的问题,不止这一种。

譬如leofan在内核中通过以下四个命令解决,前提条件是有这些设备:

echo"

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

不过我在2.6.8.1的内核中试了一下好像不行。

Lvs把包固定发给了rs1这台机器,估计rs1arpreply响应最快。

1.3.3.安装ipvsadm

这是一个IPVS的管理工具,提供了一个和IPVS打交道的接口,包括配置IPVS和连接信息统计。

到地址:

//www.linuxvirtualserver.org/software/ipvs.html去下载相应的版本。

对于2.6.8.1内核,下了ipvsadm-1.24-5.src.rpm。

rpmipvsadm的存放路径/ipvsadm-1.24-5.src.rpm

cd/usr/src/rpm/SOURCE/

tar–zxvfipvsadm-1.24.tar.gz

cdipvsadm-1.24

make;

makeinstall

然后:

ipvsadm,如果出现以下提示说明已经安装成功。

IPVirtualServerversion1.2.0(size=4096)

ProtLocalAddress:

PortSchedulerFlags

->

RemoteAddress:

PortForwardWeightActiveConnInActConn

ipvsadm的具体用法可参考manipvsadm.

1.3.4.Ipvsadm的配置

根据节和5结节的说明,Ipvsadm的配置可以用官方的配置脚本配置,配置脚本可在以手工敲入命令配置。

官方的脚本使用perl写的,配置脚本的命令为包中文件名为cofigure的文件,包中的lvs_dr.conf.one_NIC_one_network等文件是一些配置信息,作为configure的参数传入.下面这个命令对应两台realserver的配置,需要自己修改lvs_dr.conf.one_NIC_two_network中的信息.

./configurelvs_dr.conf.one_NIC_two_network

不过本人试了一下自动配置没有成功,就手工配置了.读者有兴趣可自行研究如何使用官方配置脚本配置。

1.3.4.1.DR的配置

对于前台负载均衡服务器DirecrtServer(DR)的配置,我自己做一个配置脚本config_vs.sh。

里面的参数请自己替换。

#/bin/sh

#file:

config_vs.sh这里默认使用网卡eth0,如果想用其它网卡请自行替换即可。

VIP=172.30.31.200#DR的虚拟服务IP

DIP=172.30.31.68#DR的eth0真实地址

RS1=172.30.31.66#realserver1的真实地址

RS2=172.30.31.67#realserver2的真实地址

GW=172.30.31.1#DR使用的网关或路由的地址

SERVICE=22#你的服务端口

cat/proc/sys/net/ipv4/ip_forward#脚本调试信息

0"

>

/proc/sys/net/ipv4/ip_forward

/proc/sys/net/ipv4/conf/all/send_redirects#脚本调试信息

cat/proc/sys/net/ipv4/conf/all/send_redirects#脚本调试信息

/proc/sys/net/ipv4/conf/default/send_redirects

cat/proc/sys/net/ipv4/conf/default/send_redirects#脚本调试信息

/proc/sys/net/ipv4/conf/eth0/send_redirects

cat/proc/sys/net/ipv4/conf/eth0/send_redirects#脚本调试信息

/sbin/ifconfigeth0${DIP}#配置所使用的网卡IP

#配置虚拟服务IP

/sbin/ifconfigeth0:

0${VIP}broadcast${VIP}netmask255.255.255.255

/sbin/routeadd-host${VIP}deveth0:

0#添加虚拟IP的路由

/sbin/routeadddefaultgw${GW}#添加本地路由

0#脚本调试信息,显示虚拟IP配置

#/bin/ping-b${VIP}#脚本调试信息,看看虚拟IP是否可以ping通

/sbin/route-n#脚本调试信息,显示路由信息

/sbin/ipvsadm–C#清除虚拟服务器表,也就是清除IPVS的原配置

#添加服务及轮调调度算法,-t:

tcp服务,-A:

添加服务;

-srr:

指定调度算法为轮调

/sbin/ipvsadm-A-t${VIP}:

${SERVICE}-srr

#添加realserver,-a:

添加一台RS,-t:

tcp服务,-r:

RS的地址,-g:

直接路由模式。

#这里语句个数随realserver的个数而定

/sbin/ipvsadm-a-t${VIP}:

${SERVICE}-r${RS1}-g

${SERVICE}-r${RS2}-g

ping-c1${RS1}#脚本调试信息

ping-c1${RS2}#脚本调试信息

/sbin/ipvsadm#脚本调试信息

#endofconfig_vs.sh

补:

由于DR是个单点,为了保证高可用幸,我们使用了开源包Heartbeat来保证。

所以有两台DR,一台为主,一台为辅。

各自都可用这个脚本来配置,不过DIP要该成各自的真实地址,其它选项必须完全相同。

1.3.4.2.RS的配置

对于realserver(RS)的配置,我自己做一个配置脚本config_rs.sh。

config_rs.sh这里默认使用网卡eth0,如果想用其它网卡请自行替换即可。

#DR的eth0真实地址,作用是在配置时测试DR的IP是否有效。

但是DR切换后,DIP变了,所以这项取消了。

#DIP=172.30.31.68

LOCALIP=172.30.31.66#realserver1的真实地址

GW=172.30.31.1#realserver使用的网关或路由的地址

/sbin/ifconfigeth0${LOCALIP}#配置eth0的本地IP

/sbin/routeadddefaultgw${GW}#添加默认路由

/bin/netstat-rn#脚本调试信息

ping-c1${GW}#脚本调试信息,是否可以ping通网关

cat/proc/sys/net/ipv4/ip_forward#脚本调试信息,ip_forward是否配置正确

ping-c1${DIP}#脚本调试信息,是否可以ping通DR的真实地址

ping–c1${VIP}#是否可以ping通虚拟DR的IP

#按照realserver的虚拟IP

/sbin/ifconfiglo:

0${VIP}broadcast${VIP}netmask0xffffffffup

#配置出口

#在lo:

0上添加去虚拟IP的路由

/sbin/routeadd-host${VIP}devlo:

/proc/sys/net/ipv4/conf/all/hidden

cat/proc/sys/net/ipv4/conf/all/hidden#脚本调试信息

/proc/sys/net/ipv4/conf/lo/hidden

cat/proc/sys/net/ipv4/conf/lo/hidden#脚本调试信息

#endofconfig_rs.sh

不同realserver配置时只要改变LOCALIP选项就可以了。

我只添加了172.30.31.66(realserver1)和172.30.31.67(realserver2)两台机器。

DR的主节点名称为heatbeat1,副节点名称为heartbeat2

1.4.试运行结果

安装上面的说明走完所有的步骤后,我用ssh测试了一下。

奇数次去了172.30.31.66这台机器,偶数次去了172.30.31.67这台机器

2.heartbeat

2.1.heartbeat的介绍

这里的heartbeat就是linux-ha项目,被许多高可用系统采用。

我们这里lvs必须是个高可用系统,所以我们采用heartbeat。

本文也以lvs作为高可用服务来说明heartbeat的使用。

Heartbeat的高版本可以负责3个及以上的节点。

本文2个节点来说明,在你的两台机器(一台作为主节点,另一台为从节点)上运行heartbeat,并配置好相关的选项,最重要的是lvs资源一定要配置进去。

那么开始时主节点提供lvs服务,一旦主节点崩溃,那么从节点立即接管lvs服务。

如果是自己开启了其它的服务资源,那么接管的时候,该服务资源相应的tcp连接必须重连,而且主从节点的应用层逻辑状态有应用层自己保证一致。

Lvs不存在应用层的逻辑状态。

具体介绍请参考:

//www.linux-ha.org/

2.2.libnet的安装

安装heatbeat前必须先安装libnet包,请到址下载。

libnet提供了一些高层的api,让应用程序开发者可以修改网络包。

我下的包为libnet.tar.gz,版本为1.1.2.1

cd存放路径

tar–zxvflibnet.tar.gz

cdlibnet

./configure;

make;

2.3.heartbeat的安装

//linux-ha.org/download/index.html下载相应的版本,对于2.6.8.1我下载了最新的稳定版本heartbeat-2.0.2.tar.gz。

tar–zxvfheartbeat-2.0.2.tar.gz

cdheartbeat-2.0.2

./Configuremeconfigure

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

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

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

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