现在的位置: 首页 > 综合 > 正文

在Ubuntu9.10上安装配置LVS

2013年08月14日 ⁄ 综合 ⁄ 共 2752字 ⁄ 字号 评论关闭

lvs是在linux操作系统基础上建立虚拟服务器,实现服务节点之间的负载均衡。它是基于linux内核实现的。2.6.X内核默认集成了lvs模块。


lvs常用负载均衡的实现是基于ip协议的,所以一般称为ipvsipvs有三种实现方式,最常用、性能最好的是Direct routing(简称DR)。


Ubuntu9.10已经用了2.6的内核,所以不需要再编译内核了,为了检测一下,可以在命令行执行:modprobe -l | grep ipvs

会出现:

 

kernel/net/netfilter/ipvs/ip_vs.ko

kernel/net/netfilter/ipvs/ip_vs_rr.ko

kernel/net/netfilter/ipvs/ip_vs_wrr.ko

kernel/net/netfilter/ipvs/ip_vs_lc.ko

kernel/net/netfilter/ipvs/ip_vs_wlc.ko

kernel/net/netfilter/ipvs/ip_vs_lblc.ko

kernel/net/netfilter/ipvs/ip_vs_lblcr.ko

kernel/net/netfilter/ipvs/ip_vs_dh.ko

kernel/net/netfilter/ipvs/ip_vs_sh.ko

kernel/net/netfilter/ipvs/ip_vs_sed.ko

kernel/net/netfilter/ipvs/ip_vs_nq.ko

kernel/net/netfilter/ipvs/ip_vs_ftp.ko

 

 

说明内核已经集成了ipvs模块

 

我的机器三台机器分别是10.45.8.5,10.45.8.108,10.45.8.111。虚拟IP为10.45.8.200其中10.45.8.108作为负载均衡器使用,首先需要安装ipvsadm。

执行:apt-get install ipvsadm

安装完成后执行:ipvsadm

会看到提示:

 

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

 

 

说明已经安装成功。

接下来就是配置lvs,其实很简单,就是在负载均衡器建一个虚拟ip,然后用ipvsadm建立转发规则

 

配置虚拟IP:

ifconfig eth0:0 10.45.8.200 netmask 255.255.255.0 broadcast 10.45.8.200

echo "1">/proc/sys/net/ipv4/ip_forward (此指令暂没发现有啥用处)

 

使用ipvsadm安装LVS服务:

ipvsadm -A -t 10.45.8.200:http -s rr

增加真实服务器:

ipvsadm -a -t 10.45.8.200:http -r 10.45.8.111 -g -w 1

ipvsadm -a -t 10.45.8.200:http -r 10.45.8.5 -g -w 1

 

 

真实服务器的配置:

 

ifconfig lo:0 10.45.8.200 netmask 255.255.255.255 broadcast 10.45.8.200

route add -host 10.45.8.200 dev lo:0 (此指令暂没发现有啥用处)

echo "1">/proc/sys/net/ipv4/ip_forward (此指令暂没发现有啥用处)

 

 

我自己还尝试成功的指令:

LBServer:

ifconfig eth0:0 10.45.8.200 netmask 255.255.252.0 broadcast 10.45.8.200

真实服务器:

ifconfig eth0:0 10.45.8.200 netmask 255.255.252.0 broadcast 10.45.8.200

我只需要建立一个eth0:0就可以了。。。。。。与实际不同的在于子网掩码的第三段(255 vs 252)

 

 

在负载均衡服务器用ipvsadm --list查看:

 

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  test1-1149.local:www rr

  -> test3-63.local:www           Route   1      0          0         

  -> test2-64.local:www           Route   1      0          0  

 

 

接着是做ARP Hidden,不同的linux系统指令有所区别,Ubuntu系统的指令为:

 

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

 

 

只需要在真实服务器安装个apache或者tomcat,把默认页面修改一下方便区别是哪台服务器即可。用浏览器先访问真实服务器的IP,如果浏览器正常显示对应的默认页面说明web服务正常。

 

这时就可以访问虚拟IP(10.45.8.200)咯,然后不停地刷新,会发现lvs已经成功的将请求转发了。当然,我发现IE在半分钟内刷新的话基本是仍然连接到之前的服务器,建议是开几个IE窗口,然后挨个刷新就可以看到变化呢。

 

最后可以在负载均衡服务器上用ipvsadm --list查看:

 

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  test1-1149.local:www rr

  -> test3-86.local:www           Route   1      0          5         

  -> test2-87.local:www           Route   1      1          4  

 

 

确实大功告成。不过如果机器重启的话,这些配置就没了,需要重新设置哦,另外还有个ipvsadm -C的指令是用于清除ipvsadm配置的,可能会有用处。

 

 

抱歉!评论已关闭.