本帖最后由 zhouzhou 于 2013-7-19 11:16 编辑
[日期:2010-07-06]
目标:负载均衡器LVS(ip为:192.168.3.10,虚拟IP为:192.168.3.100),实机两台分别为rs2(ip为:192.168.3.20),rs3(ip为192.168.3.30),这三台机器都安装一块网块,实机上安装apache。在一客户端cs(ip为:192.168.3.1)上访问http://192.168.3.100,会轮流访问两台实机,则实验成功。 1,配置LVS机器: 在Ubuntu Server 10.04 默认安装是没有安装ipvsadm软件包的,在网上看了很多教程,都要编辑内核,但现在2.6.32内核已经不需要再编辑了。 #sudo apt-get install ipvsadm
会提示 please run dpkg –reconfigure ipvsadm
#sudo dpkg–reconfigure ipvsadm (dpkg与-reconfigure是连到一起中间没空格)
#sudo ifconfig eth0:0 192.168.3.100 netmask 255.255.255.255 broadcast 192.168.3.100
#sudo route add –host 192.168.3.100 dev eth0:0
#sudo ipvsadm –A –t 192.168.3.100:80 –s rr
#sudo ipvsadm –a –t 192.168.3.100:80 –r 192.168.3.20 –g
#sudo ipvsadm –a –t 192.168.3.100:80 -r 192.168.3.30 –g
#sudo ipvsadm –save
*:这里rr表示ipvsadm的8种算法中的轮询,做实验选这个算法,效果比较明显。-g,就是lvs的三种模式中的LVS-DR模式。-i 就是遂道LVS-TUN.为什么eth0:0的broadcast就是它的IP,因为他的netmask为/32.(the VIP is a /32 addr, so the brd addr is the VIP, not x.x.x.255.)
修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth0.send_redirects=1
#sudo sysctl -p 2,配置实机rs2,rs3为如下
#sudo ifconfig lo:0 192.168.3.100 netmask 255.255.255.255 broadcast 192.168.3.100
#sudo route add –host 192.168.3.100 dev lo:0
修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
把rs2,rs3的/var/www下的index.html的内容修改为“this is rs2”,”this is rs3”,当访问时区别访问的是那台机器,查看实验是否成功。
在实验过程中:刚开始没有修改实机rs2,rs3下的/etc/sysctl.conf,在访问http://192.168.3.100时,有时能轮流的访问rs2,rs3,有时不能,修改后,发现效果很好,达到实验目标。为什么要修改可以参考以下http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html的内容,专门讲解了关于LVS的 ARP ,也有专门讲解了在LVS-DR模式中ARP问题及如何去解决ARP问题,也有arp_ingnore,arp_announce具体的意思。要想深入学习LVS,必须要看这个LVS-HOWTO 后面几页LVS也可以参考。 *:
用firefox浏览器,在地址栏中输入:about:config,找到network.http.keep-alive 把值修改为false,利于查看实验结果。
|