关闭

基于ubuntu的lvs负载均衡

标签: 负载均衡ubuntu服务器linux内核server浏览器
8687人阅读 评论(0) 收藏 举报

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配置的,可能会有用处。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:614161次
    • 积分:8252
    • 等级:
    • 排名:第2403名
    • 原创:216篇
    • 转载:63篇
    • 译文:0篇
    • 评论:75条
    最新评论